hotshot_contract_adapter/bindings/
light_client_v2_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
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    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
640    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239///Module containing a contract's types and functions.
2240/**
2241
2242```solidity
2243library LightClient {
2244    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2245    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2246    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2247}
2248```*/
2249#[allow(
2250    non_camel_case_types,
2251    non_snake_case,
2252    clippy::pub_underscore_fields,
2253    clippy::style,
2254    clippy::empty_structs_with_brackets
2255)]
2256pub mod LightClient {
2257    use super::*;
2258    use alloy::sol_types as alloy_sol_types;
2259    #[derive(serde::Serialize, serde::Deserialize)]
2260    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2261    /**```solidity
2262struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2263```*/
2264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2265    #[derive(Clone)]
2266    pub struct LightClientState {
2267        #[allow(missing_docs)]
2268        pub viewNum: u64,
2269        #[allow(missing_docs)]
2270        pub blockHeight: u64,
2271        #[allow(missing_docs)]
2272        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2273    }
2274    #[allow(
2275        non_camel_case_types,
2276        non_snake_case,
2277        clippy::pub_underscore_fields,
2278        clippy::style
2279    )]
2280    const _: () = {
2281        use alloy::sol_types as alloy_sol_types;
2282        #[doc(hidden)]
2283        type UnderlyingSolTuple<'a> = (
2284            alloy::sol_types::sol_data::Uint<64>,
2285            alloy::sol_types::sol_data::Uint<64>,
2286            BN254::ScalarField,
2287        );
2288        #[doc(hidden)]
2289        type UnderlyingRustTuple<'a> = (
2290            u64,
2291            u64,
2292            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2293        );
2294        #[cfg(test)]
2295        #[allow(dead_code, unreachable_patterns)]
2296        fn _type_assertion(
2297            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2298        ) {
2299            match _t {
2300                alloy_sol_types::private::AssertTypeEq::<
2301                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2302                >(_) => {}
2303            }
2304        }
2305        #[automatically_derived]
2306        #[doc(hidden)]
2307        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2308            fn from(value: LightClientState) -> Self {
2309                (value.viewNum, value.blockHeight, value.blockCommRoot)
2310            }
2311        }
2312        #[automatically_derived]
2313        #[doc(hidden)]
2314        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2315            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2316                Self {
2317                    viewNum: tuple.0,
2318                    blockHeight: tuple.1,
2319                    blockCommRoot: tuple.2,
2320                }
2321            }
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::SolValue for LightClientState {
2325            type SolType = Self;
2326        }
2327        #[automatically_derived]
2328        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2329            #[inline]
2330            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2331                (
2332                    <alloy::sol_types::sol_data::Uint<
2333                        64,
2334                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2338                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2339                        &self.blockCommRoot,
2340                    ),
2341                )
2342            }
2343            #[inline]
2344            fn stv_abi_encoded_size(&self) -> usize {
2345                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2346                    return size;
2347                }
2348                let tuple = <UnderlyingRustTuple<
2349                    '_,
2350                > as ::core::convert::From<Self>>::from(self.clone());
2351                <UnderlyingSolTuple<
2352                    '_,
2353                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2354            }
2355            #[inline]
2356            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2357                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2358            }
2359            #[inline]
2360            fn stv_abi_encode_packed_to(
2361                &self,
2362                out: &mut alloy_sol_types::private::Vec<u8>,
2363            ) {
2364                let tuple = <UnderlyingRustTuple<
2365                    '_,
2366                > as ::core::convert::From<Self>>::from(self.clone());
2367                <UnderlyingSolTuple<
2368                    '_,
2369                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2370            }
2371            #[inline]
2372            fn stv_abi_packed_encoded_size(&self) -> usize {
2373                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2374                    return size;
2375                }
2376                let tuple = <UnderlyingRustTuple<
2377                    '_,
2378                > as ::core::convert::From<Self>>::from(self.clone());
2379                <UnderlyingSolTuple<
2380                    '_,
2381                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2382            }
2383        }
2384        #[automatically_derived]
2385        impl alloy_sol_types::SolType for LightClientState {
2386            type RustType = Self;
2387            type Token<'a> = <UnderlyingSolTuple<
2388                'a,
2389            > as alloy_sol_types::SolType>::Token<'a>;
2390            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2391            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2392                '_,
2393            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2394            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2397            #[inline]
2398            fn valid_token(token: &Self::Token<'_>) -> bool {
2399                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2400            }
2401            #[inline]
2402            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2403                let tuple = <UnderlyingSolTuple<
2404                    '_,
2405                > as alloy_sol_types::SolType>::detokenize(token);
2406                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2407            }
2408        }
2409        #[automatically_derived]
2410        impl alloy_sol_types::SolStruct for LightClientState {
2411            const NAME: &'static str = "LightClientState";
2412            #[inline]
2413            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2414                alloy_sol_types::private::Cow::Borrowed(
2415                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2416                )
2417            }
2418            #[inline]
2419            fn eip712_components() -> alloy_sol_types::private::Vec<
2420                alloy_sol_types::private::Cow<'static, str>,
2421            > {
2422                alloy_sol_types::private::Vec::new()
2423            }
2424            #[inline]
2425            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2426                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2427            }
2428            #[inline]
2429            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2430                [
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2434                        .0,
2435                    <alloy::sol_types::sol_data::Uint<
2436                        64,
2437                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2438                        .0,
2439                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2440                            &self.blockCommRoot,
2441                        )
2442                        .0,
2443                ]
2444                    .concat()
2445            }
2446        }
2447        #[automatically_derived]
2448        impl alloy_sol_types::EventTopic for LightClientState {
2449            #[inline]
2450            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2451                0usize
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.viewNum,
2456                    )
2457                    + <alloy::sol_types::sol_data::Uint<
2458                        64,
2459                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2460                        &rust.blockHeight,
2461                    )
2462                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockCommRoot,
2464                    )
2465            }
2466            #[inline]
2467            fn encode_topic_preimage(
2468                rust: &Self::RustType,
2469                out: &mut alloy_sol_types::private::Vec<u8>,
2470            ) {
2471                out.reserve(
2472                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2473                );
2474                <alloy::sol_types::sol_data::Uint<
2475                    64,
2476                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2477                    &rust.viewNum,
2478                    out,
2479                );
2480                <alloy::sol_types::sol_data::Uint<
2481                    64,
2482                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockHeight,
2484                    out,
2485                );
2486                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2487                    &rust.blockCommRoot,
2488                    out,
2489                );
2490            }
2491            #[inline]
2492            fn encode_topic(
2493                rust: &Self::RustType,
2494            ) -> alloy_sol_types::abi::token::WordToken {
2495                let mut out = alloy_sol_types::private::Vec::new();
2496                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2497                    rust,
2498                    &mut out,
2499                );
2500                alloy_sol_types::abi::token::WordToken(
2501                    alloy_sol_types::private::keccak256(out),
2502                )
2503            }
2504        }
2505    };
2506    #[derive(serde::Serialize, serde::Deserialize)]
2507    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2508    /**```solidity
2509struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2510```*/
2511    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2512    #[derive(Clone)]
2513    pub struct StakeTableState {
2514        #[allow(missing_docs)]
2515        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2516        #[allow(missing_docs)]
2517        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518        #[allow(missing_docs)]
2519        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2520        #[allow(missing_docs)]
2521        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2522    }
2523    #[allow(
2524        non_camel_case_types,
2525        non_snake_case,
2526        clippy::pub_underscore_fields,
2527        clippy::style
2528    )]
2529    const _: () = {
2530        use alloy::sol_types as alloy_sol_types;
2531        #[doc(hidden)]
2532        type UnderlyingSolTuple<'a> = (
2533            alloy::sol_types::sol_data::Uint<256>,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536            BN254::ScalarField,
2537        );
2538        #[doc(hidden)]
2539        type UnderlyingRustTuple<'a> = (
2540            alloy::sol_types::private::primitives::aliases::U256,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2544        );
2545        #[cfg(test)]
2546        #[allow(dead_code, unreachable_patterns)]
2547        fn _type_assertion(
2548            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2549        ) {
2550            match _t {
2551                alloy_sol_types::private::AssertTypeEq::<
2552                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2553                >(_) => {}
2554            }
2555        }
2556        #[automatically_derived]
2557        #[doc(hidden)]
2558        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2559            fn from(value: StakeTableState) -> Self {
2560                (
2561                    value.threshold,
2562                    value.blsKeyComm,
2563                    value.schnorrKeyComm,
2564                    value.amountComm,
2565                )
2566            }
2567        }
2568        #[automatically_derived]
2569        #[doc(hidden)]
2570        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2572                Self {
2573                    threshold: tuple.0,
2574                    blsKeyComm: tuple.1,
2575                    schnorrKeyComm: tuple.2,
2576                    amountComm: tuple.3,
2577                }
2578            }
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::SolValue for StakeTableState {
2582            type SolType = Self;
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2586            #[inline]
2587            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2588                (
2589                    <alloy::sol_types::sol_data::Uint<
2590                        256,
2591                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.blsKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.schnorrKeyComm,
2597                    ),
2598                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2599                        &self.amountComm,
2600                    ),
2601                )
2602            }
2603            #[inline]
2604            fn stv_abi_encoded_size(&self) -> usize {
2605                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2606                    return size;
2607                }
2608                let tuple = <UnderlyingRustTuple<
2609                    '_,
2610                > as ::core::convert::From<Self>>::from(self.clone());
2611                <UnderlyingSolTuple<
2612                    '_,
2613                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2614            }
2615            #[inline]
2616            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2617                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2618            }
2619            #[inline]
2620            fn stv_abi_encode_packed_to(
2621                &self,
2622                out: &mut alloy_sol_types::private::Vec<u8>,
2623            ) {
2624                let tuple = <UnderlyingRustTuple<
2625                    '_,
2626                > as ::core::convert::From<Self>>::from(self.clone());
2627                <UnderlyingSolTuple<
2628                    '_,
2629                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2630            }
2631            #[inline]
2632            fn stv_abi_packed_encoded_size(&self) -> usize {
2633                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2634                    return size;
2635                }
2636                let tuple = <UnderlyingRustTuple<
2637                    '_,
2638                > as ::core::convert::From<Self>>::from(self.clone());
2639                <UnderlyingSolTuple<
2640                    '_,
2641                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2642            }
2643        }
2644        #[automatically_derived]
2645        impl alloy_sol_types::SolType for StakeTableState {
2646            type RustType = Self;
2647            type Token<'a> = <UnderlyingSolTuple<
2648                'a,
2649            > as alloy_sol_types::SolType>::Token<'a>;
2650            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2651            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2654            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2655                '_,
2656            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2657            #[inline]
2658            fn valid_token(token: &Self::Token<'_>) -> bool {
2659                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2660            }
2661            #[inline]
2662            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2663                let tuple = <UnderlyingSolTuple<
2664                    '_,
2665                > as alloy_sol_types::SolType>::detokenize(token);
2666                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2667            }
2668        }
2669        #[automatically_derived]
2670        impl alloy_sol_types::SolStruct for StakeTableState {
2671            const NAME: &'static str = "StakeTableState";
2672            #[inline]
2673            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2674                alloy_sol_types::private::Cow::Borrowed(
2675                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2676                )
2677            }
2678            #[inline]
2679            fn eip712_components() -> alloy_sol_types::private::Vec<
2680                alloy_sol_types::private::Cow<'static, str>,
2681            > {
2682                alloy_sol_types::private::Vec::new()
2683            }
2684            #[inline]
2685            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2686                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2687            }
2688            #[inline]
2689            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2690                [
2691                    <alloy::sol_types::sol_data::Uint<
2692                        256,
2693                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.blsKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.schnorrKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.amountComm,
2705                        )
2706                        .0,
2707                ]
2708                    .concat()
2709            }
2710        }
2711        #[automatically_derived]
2712        impl alloy_sol_types::EventTopic for StakeTableState {
2713            #[inline]
2714            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2715                0usize
2716                    + <alloy::sol_types::sol_data::Uint<
2717                        256,
2718                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.threshold,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.blsKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.schnorrKeyComm,
2726                    )
2727                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2728                        &rust.amountComm,
2729                    )
2730            }
2731            #[inline]
2732            fn encode_topic_preimage(
2733                rust: &Self::RustType,
2734                out: &mut alloy_sol_types::private::Vec<u8>,
2735            ) {
2736                out.reserve(
2737                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2738                );
2739                <alloy::sol_types::sol_data::Uint<
2740                    256,
2741                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.threshold,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.blsKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.schnorrKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.amountComm,
2755                    out,
2756                );
2757            }
2758            #[inline]
2759            fn encode_topic(
2760                rust: &Self::RustType,
2761            ) -> alloy_sol_types::abi::token::WordToken {
2762                let mut out = alloy_sol_types::private::Vec::new();
2763                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2764                    rust,
2765                    &mut out,
2766                );
2767                alloy_sol_types::abi::token::WordToken(
2768                    alloy_sol_types::private::keccak256(out),
2769                )
2770            }
2771        }
2772    };
2773    #[derive(serde::Serialize, serde::Deserialize)]
2774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2775    /**```solidity
2776struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2777```*/
2778    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2779    #[derive(Clone)]
2780    pub struct StateHistoryCommitment {
2781        #[allow(missing_docs)]
2782        pub l1BlockHeight: u64,
2783        #[allow(missing_docs)]
2784        pub l1BlockTimestamp: u64,
2785        #[allow(missing_docs)]
2786        pub hotShotBlockHeight: u64,
2787        #[allow(missing_docs)]
2788        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2789    }
2790    #[allow(
2791        non_camel_case_types,
2792        non_snake_case,
2793        clippy::pub_underscore_fields,
2794        clippy::style
2795    )]
2796    const _: () = {
2797        use alloy::sol_types as alloy_sol_types;
2798        #[doc(hidden)]
2799        type UnderlyingSolTuple<'a> = (
2800            alloy::sol_types::sol_data::Uint<64>,
2801            alloy::sol_types::sol_data::Uint<64>,
2802            alloy::sol_types::sol_data::Uint<64>,
2803            BN254::ScalarField,
2804        );
2805        #[doc(hidden)]
2806        type UnderlyingRustTuple<'a> = (
2807            u64,
2808            u64,
2809            u64,
2810            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2811        );
2812        #[cfg(test)]
2813        #[allow(dead_code, unreachable_patterns)]
2814        fn _type_assertion(
2815            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2816        ) {
2817            match _t {
2818                alloy_sol_types::private::AssertTypeEq::<
2819                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2820                >(_) => {}
2821            }
2822        }
2823        #[automatically_derived]
2824        #[doc(hidden)]
2825        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2826            fn from(value: StateHistoryCommitment) -> Self {
2827                (
2828                    value.l1BlockHeight,
2829                    value.l1BlockTimestamp,
2830                    value.hotShotBlockHeight,
2831                    value.hotShotBlockCommRoot,
2832                )
2833            }
2834        }
2835        #[automatically_derived]
2836        #[doc(hidden)]
2837        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2838            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2839                Self {
2840                    l1BlockHeight: tuple.0,
2841                    l1BlockTimestamp: tuple.1,
2842                    hotShotBlockHeight: tuple.2,
2843                    hotShotBlockCommRoot: tuple.3,
2844                }
2845            }
2846        }
2847        #[automatically_derived]
2848        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2849            type SolType = Self;
2850        }
2851        #[automatically_derived]
2852        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2853            #[inline]
2854            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2855                (
2856                    <alloy::sol_types::sol_data::Uint<
2857                        64,
2858                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2859                    <alloy::sol_types::sol_data::Uint<
2860                        64,
2861                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2862                    <alloy::sol_types::sol_data::Uint<
2863                        64,
2864                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2865                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2866                        &self.hotShotBlockCommRoot,
2867                    ),
2868                )
2869            }
2870            #[inline]
2871            fn stv_abi_encoded_size(&self) -> usize {
2872                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2873                    return size;
2874                }
2875                let tuple = <UnderlyingRustTuple<
2876                    '_,
2877                > as ::core::convert::From<Self>>::from(self.clone());
2878                <UnderlyingSolTuple<
2879                    '_,
2880                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2881            }
2882            #[inline]
2883            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2884                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2885            }
2886            #[inline]
2887            fn stv_abi_encode_packed_to(
2888                &self,
2889                out: &mut alloy_sol_types::private::Vec<u8>,
2890            ) {
2891                let tuple = <UnderlyingRustTuple<
2892                    '_,
2893                > as ::core::convert::From<Self>>::from(self.clone());
2894                <UnderlyingSolTuple<
2895                    '_,
2896                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2897            }
2898            #[inline]
2899            fn stv_abi_packed_encoded_size(&self) -> usize {
2900                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2901                    return size;
2902                }
2903                let tuple = <UnderlyingRustTuple<
2904                    '_,
2905                > as ::core::convert::From<Self>>::from(self.clone());
2906                <UnderlyingSolTuple<
2907                    '_,
2908                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2909            }
2910        }
2911        #[automatically_derived]
2912        impl alloy_sol_types::SolType for StateHistoryCommitment {
2913            type RustType = Self;
2914            type Token<'a> = <UnderlyingSolTuple<
2915                'a,
2916            > as alloy_sol_types::SolType>::Token<'a>;
2917            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2918            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2919                '_,
2920            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2921            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2922                '_,
2923            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2924            #[inline]
2925            fn valid_token(token: &Self::Token<'_>) -> bool {
2926                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2927            }
2928            #[inline]
2929            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2930                let tuple = <UnderlyingSolTuple<
2931                    '_,
2932                > as alloy_sol_types::SolType>::detokenize(token);
2933                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2934            }
2935        }
2936        #[automatically_derived]
2937        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2938            const NAME: &'static str = "StateHistoryCommitment";
2939            #[inline]
2940            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2941                alloy_sol_types::private::Cow::Borrowed(
2942                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2943                )
2944            }
2945            #[inline]
2946            fn eip712_components() -> alloy_sol_types::private::Vec<
2947                alloy_sol_types::private::Cow<'static, str>,
2948            > {
2949                alloy_sol_types::private::Vec::new()
2950            }
2951            #[inline]
2952            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2953                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2954            }
2955            #[inline]
2956            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2957                [
2958                    <alloy::sol_types::sol_data::Uint<
2959                        64,
2960                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2961                        .0,
2962                    <alloy::sol_types::sol_data::Uint<
2963                        64,
2964                    > as alloy_sol_types::SolType>::eip712_data_word(
2965                            &self.l1BlockTimestamp,
2966                        )
2967                        .0,
2968                    <alloy::sol_types::sol_data::Uint<
2969                        64,
2970                    > as alloy_sol_types::SolType>::eip712_data_word(
2971                            &self.hotShotBlockHeight,
2972                        )
2973                        .0,
2974                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2975                            &self.hotShotBlockCommRoot,
2976                        )
2977                        .0,
2978                ]
2979                    .concat()
2980            }
2981        }
2982        #[automatically_derived]
2983        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2984            #[inline]
2985            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2986                0usize
2987                    + <alloy::sol_types::sol_data::Uint<
2988                        64,
2989                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2990                        &rust.l1BlockHeight,
2991                    )
2992                    + <alloy::sol_types::sol_data::Uint<
2993                        64,
2994                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2995                        &rust.l1BlockTimestamp,
2996                    )
2997                    + <alloy::sol_types::sol_data::Uint<
2998                        64,
2999                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3000                        &rust.hotShotBlockHeight,
3001                    )
3002                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3003                        &rust.hotShotBlockCommRoot,
3004                    )
3005            }
3006            #[inline]
3007            fn encode_topic_preimage(
3008                rust: &Self::RustType,
3009                out: &mut alloy_sol_types::private::Vec<u8>,
3010            ) {
3011                out.reserve(
3012                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3013                );
3014                <alloy::sol_types::sol_data::Uint<
3015                    64,
3016                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3017                    &rust.l1BlockHeight,
3018                    out,
3019                );
3020                <alloy::sol_types::sol_data::Uint<
3021                    64,
3022                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3023                    &rust.l1BlockTimestamp,
3024                    out,
3025                );
3026                <alloy::sol_types::sol_data::Uint<
3027                    64,
3028                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3029                    &rust.hotShotBlockHeight,
3030                    out,
3031                );
3032                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3033                    &rust.hotShotBlockCommRoot,
3034                    out,
3035                );
3036            }
3037            #[inline]
3038            fn encode_topic(
3039                rust: &Self::RustType,
3040            ) -> alloy_sol_types::abi::token::WordToken {
3041                let mut out = alloy_sol_types::private::Vec::new();
3042                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3043                    rust,
3044                    &mut out,
3045                );
3046                alloy_sol_types::abi::token::WordToken(
3047                    alloy_sol_types::private::keccak256(out),
3048                )
3049            }
3050        }
3051    };
3052    use alloy::contract as alloy_contract;
3053    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3054
3055See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3056    #[inline]
3057    pub const fn new<
3058        P: alloy_contract::private::Provider<N>,
3059        N: alloy_contract::private::Network,
3060    >(
3061        address: alloy_sol_types::private::Address,
3062        provider: P,
3063    ) -> LightClientInstance<P, N> {
3064        LightClientInstance::<P, N>::new(address, provider)
3065    }
3066    /**A [`LightClient`](self) instance.
3067
3068Contains type-safe methods for interacting with an on-chain instance of the
3069[`LightClient`](self) contract located at a given `address`, using a given
3070provider `P`.
3071
3072If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3073documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3074be used to deploy a new instance of the contract.
3075
3076See the [module-level documentation](self) for all the available methods.*/
3077    #[derive(Clone)]
3078    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3079        address: alloy_sol_types::private::Address,
3080        provider: P,
3081        _network: ::core::marker::PhantomData<N>,
3082    }
3083    #[automatically_derived]
3084    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3085        #[inline]
3086        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3087            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3088        }
3089    }
3090    /// Instantiation and getters/setters.
3091    #[automatically_derived]
3092    impl<
3093        P: alloy_contract::private::Provider<N>,
3094        N: alloy_contract::private::Network,
3095    > LightClientInstance<P, N> {
3096        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3097
3098See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3099        #[inline]
3100        pub const fn new(
3101            address: alloy_sol_types::private::Address,
3102            provider: P,
3103        ) -> Self {
3104            Self {
3105                address,
3106                provider,
3107                _network: ::core::marker::PhantomData,
3108            }
3109        }
3110        /// Returns a reference to the address.
3111        #[inline]
3112        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3113            &self.address
3114        }
3115        /// Sets the address.
3116        #[inline]
3117        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3118            self.address = address;
3119        }
3120        /// Sets the address and returns `self`.
3121        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3122            self.set_address(address);
3123            self
3124        }
3125        /// Returns a reference to the provider.
3126        #[inline]
3127        pub const fn provider(&self) -> &P {
3128            &self.provider
3129        }
3130    }
3131    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3132        /// Clones the provider and returns a new instance with the cloned provider.
3133        #[inline]
3134        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3135            LightClientInstance {
3136                address: self.address,
3137                provider: ::core::clone::Clone::clone(&self.provider),
3138                _network: ::core::marker::PhantomData,
3139            }
3140        }
3141    }
3142    /// Function calls.
3143    #[automatically_derived]
3144    impl<
3145        P: alloy_contract::private::Provider<N>,
3146        N: alloy_contract::private::Network,
3147    > LightClientInstance<P, N> {
3148        /// Creates a new call builder using this contract instance's provider and address.
3149        ///
3150        /// Note that the call can be any function call, not just those defined in this
3151        /// contract. Prefer using the other methods for building type-safe contract calls.
3152        pub fn call_builder<C: alloy_sol_types::SolCall>(
3153            &self,
3154            call: &C,
3155        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3156            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3157        }
3158    }
3159    /// Event filters.
3160    #[automatically_derived]
3161    impl<
3162        P: alloy_contract::private::Provider<N>,
3163        N: alloy_contract::private::Network,
3164    > LightClientInstance<P, N> {
3165        /// Creates a new event filter using this contract instance's provider and address.
3166        ///
3167        /// Note that the type can be any event, not just those defined in this contract.
3168        /// Prefer using the other methods for building type-safe event filters.
3169        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3170            &self,
3171        ) -> alloy_contract::Event<&P, E, N> {
3172            alloy_contract::Event::new_sol(&self.provider, &self.address)
3173        }
3174    }
3175}
3176/**
3177
3178Generated by the following Solidity interface...
3179```solidity
3180library BN254 {
3181    type BaseField is uint256;
3182    type ScalarField is uint256;
3183    struct G1Point {
3184        BaseField x;
3185        BaseField y;
3186    }
3187}
3188
3189library IPlonkVerifier {
3190    struct PlonkProof {
3191        BN254.G1Point wire0;
3192        BN254.G1Point wire1;
3193        BN254.G1Point wire2;
3194        BN254.G1Point wire3;
3195        BN254.G1Point wire4;
3196        BN254.G1Point prodPerm;
3197        BN254.G1Point split0;
3198        BN254.G1Point split1;
3199        BN254.G1Point split2;
3200        BN254.G1Point split3;
3201        BN254.G1Point split4;
3202        BN254.G1Point zeta;
3203        BN254.G1Point zetaOmega;
3204        BN254.ScalarField wireEval0;
3205        BN254.ScalarField wireEval1;
3206        BN254.ScalarField wireEval2;
3207        BN254.ScalarField wireEval3;
3208        BN254.ScalarField wireEval4;
3209        BN254.ScalarField sigmaEval0;
3210        BN254.ScalarField sigmaEval1;
3211        BN254.ScalarField sigmaEval2;
3212        BN254.ScalarField sigmaEval3;
3213        BN254.ScalarField prodPermZetaOmegaEval;
3214    }
3215    struct VerifyingKey {
3216        uint256 domainSize;
3217        uint256 numInputs;
3218        BN254.G1Point sigma0;
3219        BN254.G1Point sigma1;
3220        BN254.G1Point sigma2;
3221        BN254.G1Point sigma3;
3222        BN254.G1Point sigma4;
3223        BN254.G1Point q1;
3224        BN254.G1Point q2;
3225        BN254.G1Point q3;
3226        BN254.G1Point q4;
3227        BN254.G1Point qM12;
3228        BN254.G1Point qM34;
3229        BN254.G1Point qO;
3230        BN254.G1Point qC;
3231        BN254.G1Point qH1;
3232        BN254.G1Point qH2;
3233        BN254.G1Point qH3;
3234        BN254.G1Point qH4;
3235        BN254.G1Point qEcc;
3236        bytes32 g2LSB;
3237        bytes32 g2MSB;
3238    }
3239}
3240
3241library LightClient {
3242    struct LightClientState {
3243        uint64 viewNum;
3244        uint64 blockHeight;
3245        BN254.ScalarField blockCommRoot;
3246    }
3247    struct StakeTableState {
3248        uint256 threshold;
3249        BN254.ScalarField blsKeyComm;
3250        BN254.ScalarField schnorrKeyComm;
3251        BN254.ScalarField amountComm;
3252    }
3253    struct StateHistoryCommitment {
3254        uint64 l1BlockHeight;
3255        uint64 l1BlockTimestamp;
3256        uint64 hotShotBlockHeight;
3257        BN254.ScalarField hotShotBlockCommRoot;
3258    }
3259}
3260
3261interface LightClientV2Mock {
3262    error AddressEmptyCode(address target);
3263    error DeprecatedApi();
3264    error ERC1967InvalidImplementation(address implementation);
3265    error ERC1967NonPayable();
3266    error FailedInnerCall();
3267    error InsufficientSnapshotHistory();
3268    error InvalidAddress();
3269    error InvalidArgs();
3270    error InvalidHotShotBlockForCommitmentCheck();
3271    error InvalidInitialization();
3272    error InvalidMaxStateHistory();
3273    error InvalidProof();
3274    error InvalidScalar();
3275    error MissingEpochRootUpdate();
3276    error NoChangeRequired();
3277    error NotInitializing();
3278    error OutdatedState();
3279    error OwnableInvalidOwner(address owner);
3280    error OwnableUnauthorizedAccount(address account);
3281    error OwnershipCannotBeRenounced();
3282    error ProverNotPermissioned();
3283    error UUPSUnauthorizedCallContext();
3284    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3285    error WrongStakeTableUsed();
3286
3287    event Initialized(uint64 version);
3288    event NewEpoch(uint64 epoch);
3289    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3290    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3291    event PermissionedProverNotRequired();
3292    event PermissionedProverRequired(address permissionedProver);
3293    event Upgrade(address implementation);
3294    event Upgraded(address indexed implementation);
3295
3296    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3297    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3298    function blocksPerEpoch() external view returns (uint64);
3299    function currentBlockNumber() external view returns (uint256);
3300    function currentEpoch() external view returns (uint64);
3301    function disablePermissionedProverMode() external;
3302    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3303    function epochStartBlock() external view returns (uint64);
3304    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3305    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3306    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3307    function getFirstEpoch() external view returns (uint64);
3308    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3309    function getStateHistoryCount() external view returns (uint256);
3310    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3311    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3312    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3313    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3314    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3315    function isPermissionedProverEnabled() external view returns (bool);
3316    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3317    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3318    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3319    function owner() external view returns (address);
3320    function permissionedProver() external view returns (address);
3321    function proxiableUUID() external view returns (bytes32);
3322    function renounceOwnership() external;
3323    function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
3324    function setFinalizedState(LightClient.LightClientState memory state) external;
3325    function setHotShotDownSince(uint256 l1Height) external;
3326    function setHotShotUp() external;
3327    function setPermissionedProver(address prover) external;
3328    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3329    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3330    function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
3331    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3332    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3333    function stateHistoryFirstIndex() external view returns (uint64);
3334    function stateHistoryRetentionPeriod() external view returns (uint32);
3335    function transferOwnership(address newOwner) external;
3336    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3337    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3338    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3339}
3340```
3341
3342...which was generated by the following JSON ABI:
3343```json
3344[
3345  {
3346    "type": "function",
3347    "name": "UPGRADE_INTERFACE_VERSION",
3348    "inputs": [],
3349    "outputs": [
3350      {
3351        "name": "",
3352        "type": "string",
3353        "internalType": "string"
3354      }
3355    ],
3356    "stateMutability": "view"
3357  },
3358  {
3359    "type": "function",
3360    "name": "_getVk",
3361    "inputs": [],
3362    "outputs": [
3363      {
3364        "name": "vk",
3365        "type": "tuple",
3366        "internalType": "struct IPlonkVerifier.VerifyingKey",
3367        "components": [
3368          {
3369            "name": "domainSize",
3370            "type": "uint256",
3371            "internalType": "uint256"
3372          },
3373          {
3374            "name": "numInputs",
3375            "type": "uint256",
3376            "internalType": "uint256"
3377          },
3378          {
3379            "name": "sigma0",
3380            "type": "tuple",
3381            "internalType": "struct BN254.G1Point",
3382            "components": [
3383              {
3384                "name": "x",
3385                "type": "uint256",
3386                "internalType": "BN254.BaseField"
3387              },
3388              {
3389                "name": "y",
3390                "type": "uint256",
3391                "internalType": "BN254.BaseField"
3392              }
3393            ]
3394          },
3395          {
3396            "name": "sigma1",
3397            "type": "tuple",
3398            "internalType": "struct BN254.G1Point",
3399            "components": [
3400              {
3401                "name": "x",
3402                "type": "uint256",
3403                "internalType": "BN254.BaseField"
3404              },
3405              {
3406                "name": "y",
3407                "type": "uint256",
3408                "internalType": "BN254.BaseField"
3409              }
3410            ]
3411          },
3412          {
3413            "name": "sigma2",
3414            "type": "tuple",
3415            "internalType": "struct BN254.G1Point",
3416            "components": [
3417              {
3418                "name": "x",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              },
3422              {
3423                "name": "y",
3424                "type": "uint256",
3425                "internalType": "BN254.BaseField"
3426              }
3427            ]
3428          },
3429          {
3430            "name": "sigma3",
3431            "type": "tuple",
3432            "internalType": "struct BN254.G1Point",
3433            "components": [
3434              {
3435                "name": "x",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              },
3439              {
3440                "name": "y",
3441                "type": "uint256",
3442                "internalType": "BN254.BaseField"
3443              }
3444            ]
3445          },
3446          {
3447            "name": "sigma4",
3448            "type": "tuple",
3449            "internalType": "struct BN254.G1Point",
3450            "components": [
3451              {
3452                "name": "x",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              },
3456              {
3457                "name": "y",
3458                "type": "uint256",
3459                "internalType": "BN254.BaseField"
3460              }
3461            ]
3462          },
3463          {
3464            "name": "q1",
3465            "type": "tuple",
3466            "internalType": "struct BN254.G1Point",
3467            "components": [
3468              {
3469                "name": "x",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              },
3473              {
3474                "name": "y",
3475                "type": "uint256",
3476                "internalType": "BN254.BaseField"
3477              }
3478            ]
3479          },
3480          {
3481            "name": "q2",
3482            "type": "tuple",
3483            "internalType": "struct BN254.G1Point",
3484            "components": [
3485              {
3486                "name": "x",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              },
3490              {
3491                "name": "y",
3492                "type": "uint256",
3493                "internalType": "BN254.BaseField"
3494              }
3495            ]
3496          },
3497          {
3498            "name": "q3",
3499            "type": "tuple",
3500            "internalType": "struct BN254.G1Point",
3501            "components": [
3502              {
3503                "name": "x",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              },
3507              {
3508                "name": "y",
3509                "type": "uint256",
3510                "internalType": "BN254.BaseField"
3511              }
3512            ]
3513          },
3514          {
3515            "name": "q4",
3516            "type": "tuple",
3517            "internalType": "struct BN254.G1Point",
3518            "components": [
3519              {
3520                "name": "x",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              },
3524              {
3525                "name": "y",
3526                "type": "uint256",
3527                "internalType": "BN254.BaseField"
3528              }
3529            ]
3530          },
3531          {
3532            "name": "qM12",
3533            "type": "tuple",
3534            "internalType": "struct BN254.G1Point",
3535            "components": [
3536              {
3537                "name": "x",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              },
3541              {
3542                "name": "y",
3543                "type": "uint256",
3544                "internalType": "BN254.BaseField"
3545              }
3546            ]
3547          },
3548          {
3549            "name": "qM34",
3550            "type": "tuple",
3551            "internalType": "struct BN254.G1Point",
3552            "components": [
3553              {
3554                "name": "x",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              },
3558              {
3559                "name": "y",
3560                "type": "uint256",
3561                "internalType": "BN254.BaseField"
3562              }
3563            ]
3564          },
3565          {
3566            "name": "qO",
3567            "type": "tuple",
3568            "internalType": "struct BN254.G1Point",
3569            "components": [
3570              {
3571                "name": "x",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              },
3575              {
3576                "name": "y",
3577                "type": "uint256",
3578                "internalType": "BN254.BaseField"
3579              }
3580            ]
3581          },
3582          {
3583            "name": "qC",
3584            "type": "tuple",
3585            "internalType": "struct BN254.G1Point",
3586            "components": [
3587              {
3588                "name": "x",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              },
3592              {
3593                "name": "y",
3594                "type": "uint256",
3595                "internalType": "BN254.BaseField"
3596              }
3597            ]
3598          },
3599          {
3600            "name": "qH1",
3601            "type": "tuple",
3602            "internalType": "struct BN254.G1Point",
3603            "components": [
3604              {
3605                "name": "x",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              },
3609              {
3610                "name": "y",
3611                "type": "uint256",
3612                "internalType": "BN254.BaseField"
3613              }
3614            ]
3615          },
3616          {
3617            "name": "qH2",
3618            "type": "tuple",
3619            "internalType": "struct BN254.G1Point",
3620            "components": [
3621              {
3622                "name": "x",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              },
3626              {
3627                "name": "y",
3628                "type": "uint256",
3629                "internalType": "BN254.BaseField"
3630              }
3631            ]
3632          },
3633          {
3634            "name": "qH3",
3635            "type": "tuple",
3636            "internalType": "struct BN254.G1Point",
3637            "components": [
3638              {
3639                "name": "x",
3640                "type": "uint256",
3641                "internalType": "BN254.BaseField"
3642              },
3643              {
3644                "name": "y",
3645                "type": "uint256",
3646                "internalType": "BN254.BaseField"
3647              }
3648            ]
3649          },
3650          {
3651            "name": "qH4",
3652            "type": "tuple",
3653            "internalType": "struct BN254.G1Point",
3654            "components": [
3655              {
3656                "name": "x",
3657                "type": "uint256",
3658                "internalType": "BN254.BaseField"
3659              },
3660              {
3661                "name": "y",
3662                "type": "uint256",
3663                "internalType": "BN254.BaseField"
3664              }
3665            ]
3666          },
3667          {
3668            "name": "qEcc",
3669            "type": "tuple",
3670            "internalType": "struct BN254.G1Point",
3671            "components": [
3672              {
3673                "name": "x",
3674                "type": "uint256",
3675                "internalType": "BN254.BaseField"
3676              },
3677              {
3678                "name": "y",
3679                "type": "uint256",
3680                "internalType": "BN254.BaseField"
3681              }
3682            ]
3683          },
3684          {
3685            "name": "g2LSB",
3686            "type": "bytes32",
3687            "internalType": "bytes32"
3688          },
3689          {
3690            "name": "g2MSB",
3691            "type": "bytes32",
3692            "internalType": "bytes32"
3693          }
3694        ]
3695      }
3696    ],
3697    "stateMutability": "pure"
3698  },
3699  {
3700    "type": "function",
3701    "name": "blocksPerEpoch",
3702    "inputs": [],
3703    "outputs": [
3704      {
3705        "name": "",
3706        "type": "uint64",
3707        "internalType": "uint64"
3708      }
3709    ],
3710    "stateMutability": "view"
3711  },
3712  {
3713    "type": "function",
3714    "name": "currentBlockNumber",
3715    "inputs": [],
3716    "outputs": [
3717      {
3718        "name": "",
3719        "type": "uint256",
3720        "internalType": "uint256"
3721      }
3722    ],
3723    "stateMutability": "view"
3724  },
3725  {
3726    "type": "function",
3727    "name": "currentEpoch",
3728    "inputs": [],
3729    "outputs": [
3730      {
3731        "name": "",
3732        "type": "uint64",
3733        "internalType": "uint64"
3734      }
3735    ],
3736    "stateMutability": "view"
3737  },
3738  {
3739    "type": "function",
3740    "name": "disablePermissionedProverMode",
3741    "inputs": [],
3742    "outputs": [],
3743    "stateMutability": "nonpayable"
3744  },
3745  {
3746    "type": "function",
3747    "name": "epochFromBlockNumber",
3748    "inputs": [
3749      {
3750        "name": "_blockNum",
3751        "type": "uint64",
3752        "internalType": "uint64"
3753      },
3754      {
3755        "name": "_blocksPerEpoch",
3756        "type": "uint64",
3757        "internalType": "uint64"
3758      }
3759    ],
3760    "outputs": [
3761      {
3762        "name": "",
3763        "type": "uint64",
3764        "internalType": "uint64"
3765      }
3766    ],
3767    "stateMutability": "pure"
3768  },
3769  {
3770    "type": "function",
3771    "name": "epochStartBlock",
3772    "inputs": [],
3773    "outputs": [
3774      {
3775        "name": "",
3776        "type": "uint64",
3777        "internalType": "uint64"
3778      }
3779    ],
3780    "stateMutability": "view"
3781  },
3782  {
3783    "type": "function",
3784    "name": "finalizedState",
3785    "inputs": [],
3786    "outputs": [
3787      {
3788        "name": "viewNum",
3789        "type": "uint64",
3790        "internalType": "uint64"
3791      },
3792      {
3793        "name": "blockHeight",
3794        "type": "uint64",
3795        "internalType": "uint64"
3796      },
3797      {
3798        "name": "blockCommRoot",
3799        "type": "uint256",
3800        "internalType": "BN254.ScalarField"
3801      }
3802    ],
3803    "stateMutability": "view"
3804  },
3805  {
3806    "type": "function",
3807    "name": "genesisStakeTableState",
3808    "inputs": [],
3809    "outputs": [
3810      {
3811        "name": "threshold",
3812        "type": "uint256",
3813        "internalType": "uint256"
3814      },
3815      {
3816        "name": "blsKeyComm",
3817        "type": "uint256",
3818        "internalType": "BN254.ScalarField"
3819      },
3820      {
3821        "name": "schnorrKeyComm",
3822        "type": "uint256",
3823        "internalType": "BN254.ScalarField"
3824      },
3825      {
3826        "name": "amountComm",
3827        "type": "uint256",
3828        "internalType": "BN254.ScalarField"
3829      }
3830    ],
3831    "stateMutability": "view"
3832  },
3833  {
3834    "type": "function",
3835    "name": "genesisState",
3836    "inputs": [],
3837    "outputs": [
3838      {
3839        "name": "viewNum",
3840        "type": "uint64",
3841        "internalType": "uint64"
3842      },
3843      {
3844        "name": "blockHeight",
3845        "type": "uint64",
3846        "internalType": "uint64"
3847      },
3848      {
3849        "name": "blockCommRoot",
3850        "type": "uint256",
3851        "internalType": "BN254.ScalarField"
3852      }
3853    ],
3854    "stateMutability": "view"
3855  },
3856  {
3857    "type": "function",
3858    "name": "getFirstEpoch",
3859    "inputs": [],
3860    "outputs": [
3861      {
3862        "name": "",
3863        "type": "uint64",
3864        "internalType": "uint64"
3865      }
3866    ],
3867    "stateMutability": "view"
3868  },
3869  {
3870    "type": "function",
3871    "name": "getHotShotCommitment",
3872    "inputs": [
3873      {
3874        "name": "hotShotBlockHeight",
3875        "type": "uint256",
3876        "internalType": "uint256"
3877      }
3878    ],
3879    "outputs": [
3880      {
3881        "name": "hotShotBlockCommRoot",
3882        "type": "uint256",
3883        "internalType": "BN254.ScalarField"
3884      },
3885      {
3886        "name": "hotshotBlockHeight",
3887        "type": "uint64",
3888        "internalType": "uint64"
3889      }
3890    ],
3891    "stateMutability": "view"
3892  },
3893  {
3894    "type": "function",
3895    "name": "getStateHistoryCount",
3896    "inputs": [],
3897    "outputs": [
3898      {
3899        "name": "",
3900        "type": "uint256",
3901        "internalType": "uint256"
3902      }
3903    ],
3904    "stateMutability": "view"
3905  },
3906  {
3907    "type": "function",
3908    "name": "getVersion",
3909    "inputs": [],
3910    "outputs": [
3911      {
3912        "name": "majorVersion",
3913        "type": "uint8",
3914        "internalType": "uint8"
3915      },
3916      {
3917        "name": "minorVersion",
3918        "type": "uint8",
3919        "internalType": "uint8"
3920      },
3921      {
3922        "name": "patchVersion",
3923        "type": "uint8",
3924        "internalType": "uint8"
3925      }
3926    ],
3927    "stateMutability": "pure"
3928  },
3929  {
3930    "type": "function",
3931    "name": "initialize",
3932    "inputs": [
3933      {
3934        "name": "_genesis",
3935        "type": "tuple",
3936        "internalType": "struct LightClient.LightClientState",
3937        "components": [
3938          {
3939            "name": "viewNum",
3940            "type": "uint64",
3941            "internalType": "uint64"
3942          },
3943          {
3944            "name": "blockHeight",
3945            "type": "uint64",
3946            "internalType": "uint64"
3947          },
3948          {
3949            "name": "blockCommRoot",
3950            "type": "uint256",
3951            "internalType": "BN254.ScalarField"
3952          }
3953        ]
3954      },
3955      {
3956        "name": "_genesisStakeTableState",
3957        "type": "tuple",
3958        "internalType": "struct LightClient.StakeTableState",
3959        "components": [
3960          {
3961            "name": "threshold",
3962            "type": "uint256",
3963            "internalType": "uint256"
3964          },
3965          {
3966            "name": "blsKeyComm",
3967            "type": "uint256",
3968            "internalType": "BN254.ScalarField"
3969          },
3970          {
3971            "name": "schnorrKeyComm",
3972            "type": "uint256",
3973            "internalType": "BN254.ScalarField"
3974          },
3975          {
3976            "name": "amountComm",
3977            "type": "uint256",
3978            "internalType": "BN254.ScalarField"
3979          }
3980        ]
3981      },
3982      {
3983        "name": "_stateHistoryRetentionPeriod",
3984        "type": "uint32",
3985        "internalType": "uint32"
3986      },
3987      {
3988        "name": "owner",
3989        "type": "address",
3990        "internalType": "address"
3991      }
3992    ],
3993    "outputs": [],
3994    "stateMutability": "nonpayable"
3995  },
3996  {
3997    "type": "function",
3998    "name": "initializeV2",
3999    "inputs": [
4000      {
4001        "name": "_blocksPerEpoch",
4002        "type": "uint64",
4003        "internalType": "uint64"
4004      },
4005      {
4006        "name": "_epochStartBlock",
4007        "type": "uint64",
4008        "internalType": "uint64"
4009      }
4010    ],
4011    "outputs": [],
4012    "stateMutability": "nonpayable"
4013  },
4014  {
4015    "type": "function",
4016    "name": "isEpochRoot",
4017    "inputs": [
4018      {
4019        "name": "blockHeight",
4020        "type": "uint64",
4021        "internalType": "uint64"
4022      }
4023    ],
4024    "outputs": [
4025      {
4026        "name": "",
4027        "type": "bool",
4028        "internalType": "bool"
4029      }
4030    ],
4031    "stateMutability": "view"
4032  },
4033  {
4034    "type": "function",
4035    "name": "isGtEpochRoot",
4036    "inputs": [
4037      {
4038        "name": "blockHeight",
4039        "type": "uint64",
4040        "internalType": "uint64"
4041      }
4042    ],
4043    "outputs": [
4044      {
4045        "name": "",
4046        "type": "bool",
4047        "internalType": "bool"
4048      }
4049    ],
4050    "stateMutability": "view"
4051  },
4052  {
4053    "type": "function",
4054    "name": "isPermissionedProverEnabled",
4055    "inputs": [],
4056    "outputs": [
4057      {
4058        "name": "",
4059        "type": "bool",
4060        "internalType": "bool"
4061      }
4062    ],
4063    "stateMutability": "view"
4064  },
4065  {
4066    "type": "function",
4067    "name": "lagOverEscapeHatchThreshold",
4068    "inputs": [
4069      {
4070        "name": "blockNumber",
4071        "type": "uint256",
4072        "internalType": "uint256"
4073      },
4074      {
4075        "name": "threshold",
4076        "type": "uint256",
4077        "internalType": "uint256"
4078      }
4079    ],
4080    "outputs": [
4081      {
4082        "name": "",
4083        "type": "bool",
4084        "internalType": "bool"
4085      }
4086    ],
4087    "stateMutability": "view"
4088  },
4089  {
4090    "type": "function",
4091    "name": "newFinalizedState",
4092    "inputs": [
4093      {
4094        "name": "",
4095        "type": "tuple",
4096        "internalType": "struct LightClient.LightClientState",
4097        "components": [
4098          {
4099            "name": "viewNum",
4100            "type": "uint64",
4101            "internalType": "uint64"
4102          },
4103          {
4104            "name": "blockHeight",
4105            "type": "uint64",
4106            "internalType": "uint64"
4107          },
4108          {
4109            "name": "blockCommRoot",
4110            "type": "uint256",
4111            "internalType": "BN254.ScalarField"
4112          }
4113        ]
4114      },
4115      {
4116        "name": "",
4117        "type": "tuple",
4118        "internalType": "struct IPlonkVerifier.PlonkProof",
4119        "components": [
4120          {
4121            "name": "wire0",
4122            "type": "tuple",
4123            "internalType": "struct BN254.G1Point",
4124            "components": [
4125              {
4126                "name": "x",
4127                "type": "uint256",
4128                "internalType": "BN254.BaseField"
4129              },
4130              {
4131                "name": "y",
4132                "type": "uint256",
4133                "internalType": "BN254.BaseField"
4134              }
4135            ]
4136          },
4137          {
4138            "name": "wire1",
4139            "type": "tuple",
4140            "internalType": "struct BN254.G1Point",
4141            "components": [
4142              {
4143                "name": "x",
4144                "type": "uint256",
4145                "internalType": "BN254.BaseField"
4146              },
4147              {
4148                "name": "y",
4149                "type": "uint256",
4150                "internalType": "BN254.BaseField"
4151              }
4152            ]
4153          },
4154          {
4155            "name": "wire2",
4156            "type": "tuple",
4157            "internalType": "struct BN254.G1Point",
4158            "components": [
4159              {
4160                "name": "x",
4161                "type": "uint256",
4162                "internalType": "BN254.BaseField"
4163              },
4164              {
4165                "name": "y",
4166                "type": "uint256",
4167                "internalType": "BN254.BaseField"
4168              }
4169            ]
4170          },
4171          {
4172            "name": "wire3",
4173            "type": "tuple",
4174            "internalType": "struct BN254.G1Point",
4175            "components": [
4176              {
4177                "name": "x",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              },
4181              {
4182                "name": "y",
4183                "type": "uint256",
4184                "internalType": "BN254.BaseField"
4185              }
4186            ]
4187          },
4188          {
4189            "name": "wire4",
4190            "type": "tuple",
4191            "internalType": "struct BN254.G1Point",
4192            "components": [
4193              {
4194                "name": "x",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              },
4198              {
4199                "name": "y",
4200                "type": "uint256",
4201                "internalType": "BN254.BaseField"
4202              }
4203            ]
4204          },
4205          {
4206            "name": "prodPerm",
4207            "type": "tuple",
4208            "internalType": "struct BN254.G1Point",
4209            "components": [
4210              {
4211                "name": "x",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              },
4215              {
4216                "name": "y",
4217                "type": "uint256",
4218                "internalType": "BN254.BaseField"
4219              }
4220            ]
4221          },
4222          {
4223            "name": "split0",
4224            "type": "tuple",
4225            "internalType": "struct BN254.G1Point",
4226            "components": [
4227              {
4228                "name": "x",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              },
4232              {
4233                "name": "y",
4234                "type": "uint256",
4235                "internalType": "BN254.BaseField"
4236              }
4237            ]
4238          },
4239          {
4240            "name": "split1",
4241            "type": "tuple",
4242            "internalType": "struct BN254.G1Point",
4243            "components": [
4244              {
4245                "name": "x",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              },
4249              {
4250                "name": "y",
4251                "type": "uint256",
4252                "internalType": "BN254.BaseField"
4253              }
4254            ]
4255          },
4256          {
4257            "name": "split2",
4258            "type": "tuple",
4259            "internalType": "struct BN254.G1Point",
4260            "components": [
4261              {
4262                "name": "x",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              },
4266              {
4267                "name": "y",
4268                "type": "uint256",
4269                "internalType": "BN254.BaseField"
4270              }
4271            ]
4272          },
4273          {
4274            "name": "split3",
4275            "type": "tuple",
4276            "internalType": "struct BN254.G1Point",
4277            "components": [
4278              {
4279                "name": "x",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              },
4283              {
4284                "name": "y",
4285                "type": "uint256",
4286                "internalType": "BN254.BaseField"
4287              }
4288            ]
4289          },
4290          {
4291            "name": "split4",
4292            "type": "tuple",
4293            "internalType": "struct BN254.G1Point",
4294            "components": [
4295              {
4296                "name": "x",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              },
4300              {
4301                "name": "y",
4302                "type": "uint256",
4303                "internalType": "BN254.BaseField"
4304              }
4305            ]
4306          },
4307          {
4308            "name": "zeta",
4309            "type": "tuple",
4310            "internalType": "struct BN254.G1Point",
4311            "components": [
4312              {
4313                "name": "x",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              },
4317              {
4318                "name": "y",
4319                "type": "uint256",
4320                "internalType": "BN254.BaseField"
4321              }
4322            ]
4323          },
4324          {
4325            "name": "zetaOmega",
4326            "type": "tuple",
4327            "internalType": "struct BN254.G1Point",
4328            "components": [
4329              {
4330                "name": "x",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              },
4334              {
4335                "name": "y",
4336                "type": "uint256",
4337                "internalType": "BN254.BaseField"
4338              }
4339            ]
4340          },
4341          {
4342            "name": "wireEval0",
4343            "type": "uint256",
4344            "internalType": "BN254.ScalarField"
4345          },
4346          {
4347            "name": "wireEval1",
4348            "type": "uint256",
4349            "internalType": "BN254.ScalarField"
4350          },
4351          {
4352            "name": "wireEval2",
4353            "type": "uint256",
4354            "internalType": "BN254.ScalarField"
4355          },
4356          {
4357            "name": "wireEval3",
4358            "type": "uint256",
4359            "internalType": "BN254.ScalarField"
4360          },
4361          {
4362            "name": "wireEval4",
4363            "type": "uint256",
4364            "internalType": "BN254.ScalarField"
4365          },
4366          {
4367            "name": "sigmaEval0",
4368            "type": "uint256",
4369            "internalType": "BN254.ScalarField"
4370          },
4371          {
4372            "name": "sigmaEval1",
4373            "type": "uint256",
4374            "internalType": "BN254.ScalarField"
4375          },
4376          {
4377            "name": "sigmaEval2",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          },
4381          {
4382            "name": "sigmaEval3",
4383            "type": "uint256",
4384            "internalType": "BN254.ScalarField"
4385          },
4386          {
4387            "name": "prodPermZetaOmegaEval",
4388            "type": "uint256",
4389            "internalType": "BN254.ScalarField"
4390          }
4391        ]
4392      }
4393    ],
4394    "outputs": [],
4395    "stateMutability": "pure"
4396  },
4397  {
4398    "type": "function",
4399    "name": "newFinalizedState",
4400    "inputs": [
4401      {
4402        "name": "newState",
4403        "type": "tuple",
4404        "internalType": "struct LightClient.LightClientState",
4405        "components": [
4406          {
4407            "name": "viewNum",
4408            "type": "uint64",
4409            "internalType": "uint64"
4410          },
4411          {
4412            "name": "blockHeight",
4413            "type": "uint64",
4414            "internalType": "uint64"
4415          },
4416          {
4417            "name": "blockCommRoot",
4418            "type": "uint256",
4419            "internalType": "BN254.ScalarField"
4420          }
4421        ]
4422      },
4423      {
4424        "name": "nextStakeTable",
4425        "type": "tuple",
4426        "internalType": "struct LightClient.StakeTableState",
4427        "components": [
4428          {
4429            "name": "threshold",
4430            "type": "uint256",
4431            "internalType": "uint256"
4432          },
4433          {
4434            "name": "blsKeyComm",
4435            "type": "uint256",
4436            "internalType": "BN254.ScalarField"
4437          },
4438          {
4439            "name": "schnorrKeyComm",
4440            "type": "uint256",
4441            "internalType": "BN254.ScalarField"
4442          },
4443          {
4444            "name": "amountComm",
4445            "type": "uint256",
4446            "internalType": "BN254.ScalarField"
4447          }
4448        ]
4449      },
4450      {
4451        "name": "proof",
4452        "type": "tuple",
4453        "internalType": "struct IPlonkVerifier.PlonkProof",
4454        "components": [
4455          {
4456            "name": "wire0",
4457            "type": "tuple",
4458            "internalType": "struct BN254.G1Point",
4459            "components": [
4460              {
4461                "name": "x",
4462                "type": "uint256",
4463                "internalType": "BN254.BaseField"
4464              },
4465              {
4466                "name": "y",
4467                "type": "uint256",
4468                "internalType": "BN254.BaseField"
4469              }
4470            ]
4471          },
4472          {
4473            "name": "wire1",
4474            "type": "tuple",
4475            "internalType": "struct BN254.G1Point",
4476            "components": [
4477              {
4478                "name": "x",
4479                "type": "uint256",
4480                "internalType": "BN254.BaseField"
4481              },
4482              {
4483                "name": "y",
4484                "type": "uint256",
4485                "internalType": "BN254.BaseField"
4486              }
4487            ]
4488          },
4489          {
4490            "name": "wire2",
4491            "type": "tuple",
4492            "internalType": "struct BN254.G1Point",
4493            "components": [
4494              {
4495                "name": "x",
4496                "type": "uint256",
4497                "internalType": "BN254.BaseField"
4498              },
4499              {
4500                "name": "y",
4501                "type": "uint256",
4502                "internalType": "BN254.BaseField"
4503              }
4504            ]
4505          },
4506          {
4507            "name": "wire3",
4508            "type": "tuple",
4509            "internalType": "struct BN254.G1Point",
4510            "components": [
4511              {
4512                "name": "x",
4513                "type": "uint256",
4514                "internalType": "BN254.BaseField"
4515              },
4516              {
4517                "name": "y",
4518                "type": "uint256",
4519                "internalType": "BN254.BaseField"
4520              }
4521            ]
4522          },
4523          {
4524            "name": "wire4",
4525            "type": "tuple",
4526            "internalType": "struct BN254.G1Point",
4527            "components": [
4528              {
4529                "name": "x",
4530                "type": "uint256",
4531                "internalType": "BN254.BaseField"
4532              },
4533              {
4534                "name": "y",
4535                "type": "uint256",
4536                "internalType": "BN254.BaseField"
4537              }
4538            ]
4539          },
4540          {
4541            "name": "prodPerm",
4542            "type": "tuple",
4543            "internalType": "struct BN254.G1Point",
4544            "components": [
4545              {
4546                "name": "x",
4547                "type": "uint256",
4548                "internalType": "BN254.BaseField"
4549              },
4550              {
4551                "name": "y",
4552                "type": "uint256",
4553                "internalType": "BN254.BaseField"
4554              }
4555            ]
4556          },
4557          {
4558            "name": "split0",
4559            "type": "tuple",
4560            "internalType": "struct BN254.G1Point",
4561            "components": [
4562              {
4563                "name": "x",
4564                "type": "uint256",
4565                "internalType": "BN254.BaseField"
4566              },
4567              {
4568                "name": "y",
4569                "type": "uint256",
4570                "internalType": "BN254.BaseField"
4571              }
4572            ]
4573          },
4574          {
4575            "name": "split1",
4576            "type": "tuple",
4577            "internalType": "struct BN254.G1Point",
4578            "components": [
4579              {
4580                "name": "x",
4581                "type": "uint256",
4582                "internalType": "BN254.BaseField"
4583              },
4584              {
4585                "name": "y",
4586                "type": "uint256",
4587                "internalType": "BN254.BaseField"
4588              }
4589            ]
4590          },
4591          {
4592            "name": "split2",
4593            "type": "tuple",
4594            "internalType": "struct BN254.G1Point",
4595            "components": [
4596              {
4597                "name": "x",
4598                "type": "uint256",
4599                "internalType": "BN254.BaseField"
4600              },
4601              {
4602                "name": "y",
4603                "type": "uint256",
4604                "internalType": "BN254.BaseField"
4605              }
4606            ]
4607          },
4608          {
4609            "name": "split3",
4610            "type": "tuple",
4611            "internalType": "struct BN254.G1Point",
4612            "components": [
4613              {
4614                "name": "x",
4615                "type": "uint256",
4616                "internalType": "BN254.BaseField"
4617              },
4618              {
4619                "name": "y",
4620                "type": "uint256",
4621                "internalType": "BN254.BaseField"
4622              }
4623            ]
4624          },
4625          {
4626            "name": "split4",
4627            "type": "tuple",
4628            "internalType": "struct BN254.G1Point",
4629            "components": [
4630              {
4631                "name": "x",
4632                "type": "uint256",
4633                "internalType": "BN254.BaseField"
4634              },
4635              {
4636                "name": "y",
4637                "type": "uint256",
4638                "internalType": "BN254.BaseField"
4639              }
4640            ]
4641          },
4642          {
4643            "name": "zeta",
4644            "type": "tuple",
4645            "internalType": "struct BN254.G1Point",
4646            "components": [
4647              {
4648                "name": "x",
4649                "type": "uint256",
4650                "internalType": "BN254.BaseField"
4651              },
4652              {
4653                "name": "y",
4654                "type": "uint256",
4655                "internalType": "BN254.BaseField"
4656              }
4657            ]
4658          },
4659          {
4660            "name": "zetaOmega",
4661            "type": "tuple",
4662            "internalType": "struct BN254.G1Point",
4663            "components": [
4664              {
4665                "name": "x",
4666                "type": "uint256",
4667                "internalType": "BN254.BaseField"
4668              },
4669              {
4670                "name": "y",
4671                "type": "uint256",
4672                "internalType": "BN254.BaseField"
4673              }
4674            ]
4675          },
4676          {
4677            "name": "wireEval0",
4678            "type": "uint256",
4679            "internalType": "BN254.ScalarField"
4680          },
4681          {
4682            "name": "wireEval1",
4683            "type": "uint256",
4684            "internalType": "BN254.ScalarField"
4685          },
4686          {
4687            "name": "wireEval2",
4688            "type": "uint256",
4689            "internalType": "BN254.ScalarField"
4690          },
4691          {
4692            "name": "wireEval3",
4693            "type": "uint256",
4694            "internalType": "BN254.ScalarField"
4695          },
4696          {
4697            "name": "wireEval4",
4698            "type": "uint256",
4699            "internalType": "BN254.ScalarField"
4700          },
4701          {
4702            "name": "sigmaEval0",
4703            "type": "uint256",
4704            "internalType": "BN254.ScalarField"
4705          },
4706          {
4707            "name": "sigmaEval1",
4708            "type": "uint256",
4709            "internalType": "BN254.ScalarField"
4710          },
4711          {
4712            "name": "sigmaEval2",
4713            "type": "uint256",
4714            "internalType": "BN254.ScalarField"
4715          },
4716          {
4717            "name": "sigmaEval3",
4718            "type": "uint256",
4719            "internalType": "BN254.ScalarField"
4720          },
4721          {
4722            "name": "prodPermZetaOmegaEval",
4723            "type": "uint256",
4724            "internalType": "BN254.ScalarField"
4725          }
4726        ]
4727      }
4728    ],
4729    "outputs": [],
4730    "stateMutability": "nonpayable"
4731  },
4732  {
4733    "type": "function",
4734    "name": "owner",
4735    "inputs": [],
4736    "outputs": [
4737      {
4738        "name": "",
4739        "type": "address",
4740        "internalType": "address"
4741      }
4742    ],
4743    "stateMutability": "view"
4744  },
4745  {
4746    "type": "function",
4747    "name": "permissionedProver",
4748    "inputs": [],
4749    "outputs": [
4750      {
4751        "name": "",
4752        "type": "address",
4753        "internalType": "address"
4754      }
4755    ],
4756    "stateMutability": "view"
4757  },
4758  {
4759    "type": "function",
4760    "name": "proxiableUUID",
4761    "inputs": [],
4762    "outputs": [
4763      {
4764        "name": "",
4765        "type": "bytes32",
4766        "internalType": "bytes32"
4767      }
4768    ],
4769    "stateMutability": "view"
4770  },
4771  {
4772    "type": "function",
4773    "name": "renounceOwnership",
4774    "inputs": [],
4775    "outputs": [],
4776    "stateMutability": "nonpayable"
4777  },
4778  {
4779    "type": "function",
4780    "name": "setBlocksPerEpoch",
4781    "inputs": [
4782      {
4783        "name": "newBlocksPerEpoch",
4784        "type": "uint64",
4785        "internalType": "uint64"
4786      }
4787    ],
4788    "outputs": [],
4789    "stateMutability": "nonpayable"
4790  },
4791  {
4792    "type": "function",
4793    "name": "setFinalizedState",
4794    "inputs": [
4795      {
4796        "name": "state",
4797        "type": "tuple",
4798        "internalType": "struct LightClient.LightClientState",
4799        "components": [
4800          {
4801            "name": "viewNum",
4802            "type": "uint64",
4803            "internalType": "uint64"
4804          },
4805          {
4806            "name": "blockHeight",
4807            "type": "uint64",
4808            "internalType": "uint64"
4809          },
4810          {
4811            "name": "blockCommRoot",
4812            "type": "uint256",
4813            "internalType": "BN254.ScalarField"
4814          }
4815        ]
4816      }
4817    ],
4818    "outputs": [],
4819    "stateMutability": "nonpayable"
4820  },
4821  {
4822    "type": "function",
4823    "name": "setHotShotDownSince",
4824    "inputs": [
4825      {
4826        "name": "l1Height",
4827        "type": "uint256",
4828        "internalType": "uint256"
4829      }
4830    ],
4831    "outputs": [],
4832    "stateMutability": "nonpayable"
4833  },
4834  {
4835    "type": "function",
4836    "name": "setHotShotUp",
4837    "inputs": [],
4838    "outputs": [],
4839    "stateMutability": "nonpayable"
4840  },
4841  {
4842    "type": "function",
4843    "name": "setPermissionedProver",
4844    "inputs": [
4845      {
4846        "name": "prover",
4847        "type": "address",
4848        "internalType": "address"
4849      }
4850    ],
4851    "outputs": [],
4852    "stateMutability": "nonpayable"
4853  },
4854  {
4855    "type": "function",
4856    "name": "setStateHistory",
4857    "inputs": [
4858      {
4859        "name": "_stateHistoryCommitments",
4860        "type": "tuple[]",
4861        "internalType": "struct LightClient.StateHistoryCommitment[]",
4862        "components": [
4863          {
4864            "name": "l1BlockHeight",
4865            "type": "uint64",
4866            "internalType": "uint64"
4867          },
4868          {
4869            "name": "l1BlockTimestamp",
4870            "type": "uint64",
4871            "internalType": "uint64"
4872          },
4873          {
4874            "name": "hotShotBlockHeight",
4875            "type": "uint64",
4876            "internalType": "uint64"
4877          },
4878          {
4879            "name": "hotShotBlockCommRoot",
4880            "type": "uint256",
4881            "internalType": "BN254.ScalarField"
4882          }
4883        ]
4884      }
4885    ],
4886    "outputs": [],
4887    "stateMutability": "nonpayable"
4888  },
4889  {
4890    "type": "function",
4891    "name": "setStateHistoryRetentionPeriod",
4892    "inputs": [
4893      {
4894        "name": "historySeconds",
4895        "type": "uint32",
4896        "internalType": "uint32"
4897      }
4898    ],
4899    "outputs": [],
4900    "stateMutability": "nonpayable"
4901  },
4902  {
4903    "type": "function",
4904    "name": "setVotingStakeTableState",
4905    "inputs": [
4906      {
4907        "name": "stake",
4908        "type": "tuple",
4909        "internalType": "struct LightClient.StakeTableState",
4910        "components": [
4911          {
4912            "name": "threshold",
4913            "type": "uint256",
4914            "internalType": "uint256"
4915          },
4916          {
4917            "name": "blsKeyComm",
4918            "type": "uint256",
4919            "internalType": "BN254.ScalarField"
4920          },
4921          {
4922            "name": "schnorrKeyComm",
4923            "type": "uint256",
4924            "internalType": "BN254.ScalarField"
4925          },
4926          {
4927            "name": "amountComm",
4928            "type": "uint256",
4929            "internalType": "BN254.ScalarField"
4930          }
4931        ]
4932      }
4933    ],
4934    "outputs": [],
4935    "stateMutability": "nonpayable"
4936  },
4937  {
4938    "type": "function",
4939    "name": "setstateHistoryRetentionPeriod",
4940    "inputs": [
4941      {
4942        "name": "historySeconds",
4943        "type": "uint32",
4944        "internalType": "uint32"
4945      }
4946    ],
4947    "outputs": [],
4948    "stateMutability": "nonpayable"
4949  },
4950  {
4951    "type": "function",
4952    "name": "stateHistoryCommitments",
4953    "inputs": [
4954      {
4955        "name": "",
4956        "type": "uint256",
4957        "internalType": "uint256"
4958      }
4959    ],
4960    "outputs": [
4961      {
4962        "name": "l1BlockHeight",
4963        "type": "uint64",
4964        "internalType": "uint64"
4965      },
4966      {
4967        "name": "l1BlockTimestamp",
4968        "type": "uint64",
4969        "internalType": "uint64"
4970      },
4971      {
4972        "name": "hotShotBlockHeight",
4973        "type": "uint64",
4974        "internalType": "uint64"
4975      },
4976      {
4977        "name": "hotShotBlockCommRoot",
4978        "type": "uint256",
4979        "internalType": "BN254.ScalarField"
4980      }
4981    ],
4982    "stateMutability": "view"
4983  },
4984  {
4985    "type": "function",
4986    "name": "stateHistoryFirstIndex",
4987    "inputs": [],
4988    "outputs": [
4989      {
4990        "name": "",
4991        "type": "uint64",
4992        "internalType": "uint64"
4993      }
4994    ],
4995    "stateMutability": "view"
4996  },
4997  {
4998    "type": "function",
4999    "name": "stateHistoryRetentionPeriod",
5000    "inputs": [],
5001    "outputs": [
5002      {
5003        "name": "",
5004        "type": "uint32",
5005        "internalType": "uint32"
5006      }
5007    ],
5008    "stateMutability": "view"
5009  },
5010  {
5011    "type": "function",
5012    "name": "transferOwnership",
5013    "inputs": [
5014      {
5015        "name": "newOwner",
5016        "type": "address",
5017        "internalType": "address"
5018      }
5019    ],
5020    "outputs": [],
5021    "stateMutability": "nonpayable"
5022  },
5023  {
5024    "type": "function",
5025    "name": "updateEpochStartBlock",
5026    "inputs": [
5027      {
5028        "name": "newEpochStartBlock",
5029        "type": "uint64",
5030        "internalType": "uint64"
5031      }
5032    ],
5033    "outputs": [],
5034    "stateMutability": "nonpayable"
5035  },
5036  {
5037    "type": "function",
5038    "name": "upgradeToAndCall",
5039    "inputs": [
5040      {
5041        "name": "newImplementation",
5042        "type": "address",
5043        "internalType": "address"
5044      },
5045      {
5046        "name": "data",
5047        "type": "bytes",
5048        "internalType": "bytes"
5049      }
5050    ],
5051    "outputs": [],
5052    "stateMutability": "payable"
5053  },
5054  {
5055    "type": "function",
5056    "name": "votingStakeTableState",
5057    "inputs": [],
5058    "outputs": [
5059      {
5060        "name": "threshold",
5061        "type": "uint256",
5062        "internalType": "uint256"
5063      },
5064      {
5065        "name": "blsKeyComm",
5066        "type": "uint256",
5067        "internalType": "BN254.ScalarField"
5068      },
5069      {
5070        "name": "schnorrKeyComm",
5071        "type": "uint256",
5072        "internalType": "BN254.ScalarField"
5073      },
5074      {
5075        "name": "amountComm",
5076        "type": "uint256",
5077        "internalType": "BN254.ScalarField"
5078      }
5079    ],
5080    "stateMutability": "view"
5081  },
5082  {
5083    "type": "event",
5084    "name": "Initialized",
5085    "inputs": [
5086      {
5087        "name": "version",
5088        "type": "uint64",
5089        "indexed": false,
5090        "internalType": "uint64"
5091      }
5092    ],
5093    "anonymous": false
5094  },
5095  {
5096    "type": "event",
5097    "name": "NewEpoch",
5098    "inputs": [
5099      {
5100        "name": "epoch",
5101        "type": "uint64",
5102        "indexed": false,
5103        "internalType": "uint64"
5104      }
5105    ],
5106    "anonymous": false
5107  },
5108  {
5109    "type": "event",
5110    "name": "NewState",
5111    "inputs": [
5112      {
5113        "name": "viewNum",
5114        "type": "uint64",
5115        "indexed": true,
5116        "internalType": "uint64"
5117      },
5118      {
5119        "name": "blockHeight",
5120        "type": "uint64",
5121        "indexed": true,
5122        "internalType": "uint64"
5123      },
5124      {
5125        "name": "blockCommRoot",
5126        "type": "uint256",
5127        "indexed": false,
5128        "internalType": "BN254.ScalarField"
5129      }
5130    ],
5131    "anonymous": false
5132  },
5133  {
5134    "type": "event",
5135    "name": "OwnershipTransferred",
5136    "inputs": [
5137      {
5138        "name": "previousOwner",
5139        "type": "address",
5140        "indexed": true,
5141        "internalType": "address"
5142      },
5143      {
5144        "name": "newOwner",
5145        "type": "address",
5146        "indexed": true,
5147        "internalType": "address"
5148      }
5149    ],
5150    "anonymous": false
5151  },
5152  {
5153    "type": "event",
5154    "name": "PermissionedProverNotRequired",
5155    "inputs": [],
5156    "anonymous": false
5157  },
5158  {
5159    "type": "event",
5160    "name": "PermissionedProverRequired",
5161    "inputs": [
5162      {
5163        "name": "permissionedProver",
5164        "type": "address",
5165        "indexed": false,
5166        "internalType": "address"
5167      }
5168    ],
5169    "anonymous": false
5170  },
5171  {
5172    "type": "event",
5173    "name": "Upgrade",
5174    "inputs": [
5175      {
5176        "name": "implementation",
5177        "type": "address",
5178        "indexed": false,
5179        "internalType": "address"
5180      }
5181    ],
5182    "anonymous": false
5183  },
5184  {
5185    "type": "event",
5186    "name": "Upgraded",
5187    "inputs": [
5188      {
5189        "name": "implementation",
5190        "type": "address",
5191        "indexed": true,
5192        "internalType": "address"
5193      }
5194    ],
5195    "anonymous": false
5196  },
5197  {
5198    "type": "error",
5199    "name": "AddressEmptyCode",
5200    "inputs": [
5201      {
5202        "name": "target",
5203        "type": "address",
5204        "internalType": "address"
5205      }
5206    ]
5207  },
5208  {
5209    "type": "error",
5210    "name": "DeprecatedApi",
5211    "inputs": []
5212  },
5213  {
5214    "type": "error",
5215    "name": "ERC1967InvalidImplementation",
5216    "inputs": [
5217      {
5218        "name": "implementation",
5219        "type": "address",
5220        "internalType": "address"
5221      }
5222    ]
5223  },
5224  {
5225    "type": "error",
5226    "name": "ERC1967NonPayable",
5227    "inputs": []
5228  },
5229  {
5230    "type": "error",
5231    "name": "FailedInnerCall",
5232    "inputs": []
5233  },
5234  {
5235    "type": "error",
5236    "name": "InsufficientSnapshotHistory",
5237    "inputs": []
5238  },
5239  {
5240    "type": "error",
5241    "name": "InvalidAddress",
5242    "inputs": []
5243  },
5244  {
5245    "type": "error",
5246    "name": "InvalidArgs",
5247    "inputs": []
5248  },
5249  {
5250    "type": "error",
5251    "name": "InvalidHotShotBlockForCommitmentCheck",
5252    "inputs": []
5253  },
5254  {
5255    "type": "error",
5256    "name": "InvalidInitialization",
5257    "inputs": []
5258  },
5259  {
5260    "type": "error",
5261    "name": "InvalidMaxStateHistory",
5262    "inputs": []
5263  },
5264  {
5265    "type": "error",
5266    "name": "InvalidProof",
5267    "inputs": []
5268  },
5269  {
5270    "type": "error",
5271    "name": "InvalidScalar",
5272    "inputs": []
5273  },
5274  {
5275    "type": "error",
5276    "name": "MissingEpochRootUpdate",
5277    "inputs": []
5278  },
5279  {
5280    "type": "error",
5281    "name": "NoChangeRequired",
5282    "inputs": []
5283  },
5284  {
5285    "type": "error",
5286    "name": "NotInitializing",
5287    "inputs": []
5288  },
5289  {
5290    "type": "error",
5291    "name": "OutdatedState",
5292    "inputs": []
5293  },
5294  {
5295    "type": "error",
5296    "name": "OwnableInvalidOwner",
5297    "inputs": [
5298      {
5299        "name": "owner",
5300        "type": "address",
5301        "internalType": "address"
5302      }
5303    ]
5304  },
5305  {
5306    "type": "error",
5307    "name": "OwnableUnauthorizedAccount",
5308    "inputs": [
5309      {
5310        "name": "account",
5311        "type": "address",
5312        "internalType": "address"
5313      }
5314    ]
5315  },
5316  {
5317    "type": "error",
5318    "name": "OwnershipCannotBeRenounced",
5319    "inputs": []
5320  },
5321  {
5322    "type": "error",
5323    "name": "ProverNotPermissioned",
5324    "inputs": []
5325  },
5326  {
5327    "type": "error",
5328    "name": "UUPSUnauthorizedCallContext",
5329    "inputs": []
5330  },
5331  {
5332    "type": "error",
5333    "name": "UUPSUnsupportedProxiableUUID",
5334    "inputs": [
5335      {
5336        "name": "slot",
5337        "type": "bytes32",
5338        "internalType": "bytes32"
5339      }
5340    ]
5341  },
5342  {
5343    "type": "error",
5344    "name": "WrongStakeTableUsed",
5345    "inputs": []
5346  }
5347]
5348```*/
5349#[allow(
5350    non_camel_case_types,
5351    non_snake_case,
5352    clippy::pub_underscore_fields,
5353    clippy::style,
5354    clippy::empty_structs_with_brackets
5355)]
5356pub mod LightClientV2Mock {
5357    use super::*;
5358    use alloy::sol_types as alloy_sol_types;
5359    /// The creation / init bytecode of the contract.
5360    ///
5361    /// ```text
5362    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b60805161385d6100f95f395f8181611c7c01528181611ca50152611e22015261385d5ff3fe608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a09565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a22565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a39565b34801561036f575f5ffd5b5061027761037e366004612c50565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f34565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c50565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a22565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c50565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c50565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f7b565b6111a6565b61027761055e366004612f94565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b5061027761059136600461307a565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613094565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a22565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d8565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f7b565b61177a565b3480156106ea575f5ffd5b506102776106f9366004613100565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613155565b34801561079b575f5ffd5b506102776107aa3660046130d8565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd36600461318a565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a4565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a09565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c4565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132d0565b6110fc9190613303565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613303565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613330565b600a546001600160401b0391821691611195911684613303565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f5160206138315f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef8383613330565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132d0565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132d0565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334f565b8154811061160457611604613362565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613362565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613362565b905f5260205f20906002020160010154600982815481106116cf576116cf613362565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613303565b6001600160401b03165f036117655761175e8284613376565b90506111a0565b61176f8284613376565b61175e9060016132d0565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334f565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613362565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f5160206138315f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a3565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f5160206138315f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129ab565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359c565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137bc565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613362565b5f91825260209091206002909102015461208290600160401b90046001600160401b031684613330565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613362565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137db565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613362565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334f565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613362565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613362565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613805565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334f565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f5160206138315f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612633919061381a565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129ca565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129ef5780546001600160c01b03191681555f60018201556002016129cb565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a19575f5ffd5b611b25826129f3565b5f60208284031215612a32575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a6b604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c60575f5ffd5b611b2582612c3a565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ca057612ca0612c69565b60405290565b604051608081016001600160401b0381118282101715612ca057612ca0612c69565b604051601f8201601f191681016001600160401b0381118282101715612cf057612cf0612c69565b604052919050565b5f60608284031215612d08575f5ffd5b604051606081016001600160401b0381118282101715612d2a57612d2a612c69565b604052905080612d3983612c3a565b8152612d4760208401612c3a565b6020820152604092830135920191909152919050565b5f60408284031215612d6d575f5ffd5b604080519081016001600160401b0381118282101715612d8f57612d8f612c69565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dba575f5ffd5b612dc2612c7d565b9050612dce8383612d5d565b8152612ddd8360408401612d5d565b6020820152612def8360808401612d5d565b6040820152612e018360c08401612d5d565b6060820152612e14836101008401612d5d565b6080820152612e27836101408401612d5d565b60a0820152612e3a836101808401612d5d565b60c0820152612e4d836101c08401612d5d565b60e0820152612e60836102008401612d5d565b610100820152612e74836102408401612d5d565b610120820152612e88836102808401612d5d565b610140820152612e9c836102c08401612d5d565b610160820152612eb0836103008401612d5d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f46575f5ffd5b612f508484612cf8565b9150612f5f8460608501612da9565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f8b575f5ffd5b611b2582612f68565b5f5f60408385031215612fa5575f5ffd5b612fae836129f3565b915060208301356001600160401b03811115612fc8575f5ffd5b8301601f81018513612fd8575f5ffd5b80356001600160401b03811115612ff157612ff1612c69565b613004601f8201601f1916602001612cc8565b818152866020838501011115613018575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613047575f5ffd5b61304f612ca6565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f6080828403121561308a575f5ffd5b611b258383613037565b5f5f5f61056084860312156130a7575f5ffd5b6130b18585612cf8565b92506130c08560608601613037565b91506130cf8560e08601612da9565b90509250925092565b5f5f604083850312156130e9575f5ffd5b6130f283612c3a565b9150612f5f60208401612c3a565b5f5f5f5f6101208587031215613114575f5ffd5b61311e8686612cf8565b935061312d8660608701613037565b925061313b60e08601612f68565b915061314a61010086016129f3565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561319a575f5ffd5b611b258383612cf8565b5f5f604083850312156131b5575f5ffd5b50508035926020909101359150565b5f602082840312156131d4575f5ffd5b81356001600160401b038111156131e9575f5ffd5b8201601f810184136131f9575f5ffd5b80356001600160401b0381111561321257613212612c69565b61322160208260051b01612cc8565b8082825260208201915060208360071b850101925086831115613242575f5ffd5b6020840193505b828410156132b25760808488031215613260575f5ffd5b613268612ca6565b61327185612c3a565b815261327f60208601612c3a565b602082015261329060408601612c3a565b6040820152606085810135908201528252608090930192602090910190613249565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132bc565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061331b5761331b6132ef565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132bc565b818103818111156111a0576111a06132bc565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338e5761338e6132ef565b806001600160401b0384160491505092915050565b5f602082840312156133b3575f5ffd5b5051919050565b805f5b600b8110156133dc5781518452602093840193909101906001016133bd565b50505050565b6133f782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135ce604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a66105008301856133ba565b6137b46106608301846133e2565b949350505050565b5f602082840312156137cc575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fc576137fc6132bc565b60010192915050565b5f81613813576138136132bc565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5363    /// ```
5364    #[rustfmt::skip]
5365    #[allow(clippy::all)]
5366    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5367        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\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\0qW`@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\xD0W\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[`\x80Qa8]a\0\xF9_9_\x81\x81a\x1C|\x01R\x81\x81a\x1C\xA5\x01Ra\x1E\"\x01Ra8]_\xF3\xFE`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a*\tV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\"V[a\t\xA7V[`@Qa\x02\xCD\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*9V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,PV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/4V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,PV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\"V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,PV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,PV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/{V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x94V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0zV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x94V[a\x12\x83V[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xB6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\"V[a\x15\xE0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x16a\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xD8V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/{V[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\0V[a\x18\x03V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1UV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD8V[a\x19%V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1A\x91V[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x8AV[a\x1A\xB2V[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xA4V[a\x1A\xF9V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a*\tV[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC4V[a\x1BkV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\tRW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\t\xB6W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\xF8a'(V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[a\x10'a\x1C\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x17\x0BV[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xD0V[a\x10\xFC\x91\x90a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a30V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1C\x16V[a\x11\xB7\x81a\x17zV[PV[a\x11\xC2a\x1CqV[a\x11\xCB\x82a\x1D\x15V[a\x11\xD5\x82\x82a\x1DVV[PPV[_a\x11\xE2a\x1E\x17V[P_Q` a81_9_Q\x90_R\x90V[a\x11\xFCa\x1C\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x12ja\x1C\x16V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\xA8WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xC6W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x12\xFFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\x1DW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13*\x83`@\x01Qa\x1E`V[a\x137\x82` \x01Qa\x1E`V[a\x13D\x82`@\x01Qa\x1E`V[a\x13Q\x82``\x01Qa\x1E`V[_a\x13Za\x15\xB6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13z\x91\x90`\x01`\x01`@\x1B\x03\x16a\x17\x0BV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xC5Wa\x13\xA7\x85` \x01Qa\x11\x11V[\x15a\x13\xC5W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\x14xW`\x02a\x13\xEF\x83\x83a30V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x16W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14!\x82`\x01a2\xD0V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14ZWP`\x06Ta\x14X\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14xW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x83\x85\x85\x85a\x1E\xA1V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x14\xE2WPa\x14\xE2\x85` \x01Qa\x10\xAFV[\x15a\x15LW\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x150\x82`\x01a2\xD0V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15WCB\x87a \x18V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x15\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xDB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x17\x0BV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xF4`\x01\x83a3OV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16CW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x17\x04W\x84`\t\x82\x81T\x81\x10a\x16sWa\x16sa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xFCW`\t\x81\x81T\x81\x10a\x16\xACWa\x16\xACa3bV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3bV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x16WV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17#WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17;WP`\x01a\x11\xA0V[a\x17E\x82\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3vV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3vV[a\x17^\x90`\x01a2\xD0V[a\x17\x82a\x1C\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\xA1WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xBFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xDDW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\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\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x18GWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18bWP0;\x15[\x90P\x81\x15\x80\x15a\x18pWP\x80\x15[\x15a\x18\x8EW`@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\x18\xB8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xC1\x86a\"\x01V[a\x18\xC9a\"\x12V[a\x18\xD4\x89\x89\x89a\"\x1AV[\x83\x15a\x19\x1AW\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\x19-a\x1C\x16V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x19vWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19\x94W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xDCW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1A%\x83\x85a\x17\x0BV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\nT_\x90a\x15\xDB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x17\x0BV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x18V[`\x0FT_\x90`\xFF\x16a\x1B\x14Wa\x1B\x0F\x83\x83a#FV[a\x1B%V[\x81`\x10T\x84a\x1B#\x91\x90a3OV[\x11[\x93\x92PPPV[a\x1B4a\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a$\x9EV[a\x1Bv`\t_a)\x8DV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B\x95Wa\x1B\x95a3bV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1BxV[3a\x1CH\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BYV[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\x1C\xF7WP\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\x1C\xEB_Q` a81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x1Da\x1C\x16V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\t\x9CV[\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\x1D\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\xAD\x91\x81\x01\x90a3\xA3V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_9_Q\x90_R\x81\x14a\x1E\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BYV[a\x1E\x12\x83\x83a%\x0EV[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\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1E\xAAa\t\xF0V[\x90Pa\x1E\xB4a)\xABV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1F$WPa\x1F$\x85` \x01Qa\x10\xAFV[\x15a\x1FVW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1FzV[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1F\xB5\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x9CV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\xD0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xF4\x91\x90a7\xBCV[a \x11W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \x8DWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a XWa Xa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a30V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a! W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \xBAWa \xBAa3bV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \xFA\x83a7\xDBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a\"\ta%cV[a\x11\xB7\x81a%\xACV[a\x12`a%cV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\">WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"KWP` \x82\x01Q\x15[\x80a\"XWP`@\x82\x01Q\x15[\x80a\"eWP``\x82\x01Q\x15[\x80a\"oWP\x81Q\x15[\x80a\"\x81WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\x95WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"\xB3W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a#WWP\x80\x15[\x80a#\xA1WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x85Wa#\x85a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a#\xBFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a#\xCD`\x01\x85a3OV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x05V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3OV[\x11\x97\x96PPPPPPPV[\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[a%\x17\x82a%\xB4V[`@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%[Wa\x1E\x12\x82\x82a&\x17V[a\x11\xD5a&\x89V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B4a%cV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xE9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_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&3\x91\x90a8\x1AV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&kW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&pV[``\x91P[P\x91P\x91Pa&\x80\x85\x83\x83a&\xA8V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xB8Wa\x1B\x0F\x82a&\xFFV[\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\x1BYV[P\x92\x91PPV[\x80Q\x15a'\x0FW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a([`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a({`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xCAV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xEFW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xCBV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a\x1B%\x82a)\xF3V[_` \x82\x84\x03\x12\x15a*2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*k`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,`W__\xFD[a\x1B%\x82a,:V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xF0Wa,\xF0a,iV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x08W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-*Wa-*a,iV[`@R\x90P\x80a-9\x83a,:V[\x81Ra-G` \x84\x01a,:V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-mW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8FWa-\x8Fa,iV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xBAW__\xFD[a-\xC2a,}V[\x90Pa-\xCE\x83\x83a-]V[\x81Ra-\xDD\x83`@\x84\x01a-]V[` \x82\x01Ra-\xEF\x83`\x80\x84\x01a-]V[`@\x82\x01Ra.\x01\x83`\xC0\x84\x01a-]V[``\x82\x01Ra.\x14\x83a\x01\0\x84\x01a-]V[`\x80\x82\x01Ra.'\x83a\x01@\x84\x01a-]V[`\xA0\x82\x01Ra.:\x83a\x01\x80\x84\x01a-]V[`\xC0\x82\x01Ra.M\x83a\x01\xC0\x84\x01a-]V[`\xE0\x82\x01Ra.`\x83a\x02\0\x84\x01a-]V[a\x01\0\x82\x01Ra.t\x83a\x02@\x84\x01a-]V[a\x01 \x82\x01Ra.\x88\x83a\x02\x80\x84\x01a-]V[a\x01@\x82\x01Ra.\x9C\x83a\x02\xC0\x84\x01a-]V[a\x01`\x82\x01Ra.\xB0\x83a\x03\0\x84\x01a-]V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a/FW__\xFD[a/P\x84\x84a,\xF8V[\x91Pa/_\x84``\x85\x01a-\xA9V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x8BW__\xFD[a\x1B%\x82a/hV[__`@\x83\x85\x03\x12\x15a/\xA5W__\xFD[a/\xAE\x83a)\xF3V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xF1Wa/\xF1a,iV[a0\x04`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0GW__\xFD[a0Oa,\xA6V[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\x8AW__\xFD[a\x1B%\x83\x83a07V[___a\x05`\x84\x86\x03\x12\x15a0\xA7W__\xFD[a0\xB1\x85\x85a,\xF8V[\x92Pa0\xC0\x85``\x86\x01a07V[\x91Pa0\xCF\x85`\xE0\x86\x01a-\xA9V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE9W__\xFD[a0\xF2\x83a,:V[\x91Pa/_` \x84\x01a,:V[____a\x01 \x85\x87\x03\x12\x15a1\x14W__\xFD[a1\x1E\x86\x86a,\xF8V[\x93Pa1-\x86``\x87\x01a07V[\x92Pa1;`\xE0\x86\x01a/hV[\x91Pa1Ja\x01\0\x86\x01a)\xF3V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a1\x9AW__\xFD[a\x1B%\x83\x83a,\xF8V[__`@\x83\x85\x03\x12\x15a1\xB5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD4W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x12Wa2\x12a,iV[a2!` \x82`\x05\x1B\x01a,\xC8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2BW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB2W`\x80\x84\x88\x03\x12\x15a2`W__\xFD[a2ha,\xA6V[a2q\x85a,:V[\x81Ra2\x7F` \x86\x01a,:V[` \x82\x01Ra2\x90`@\x86\x01a,:V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2IV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x1BWa3\x1Ba2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8EWa3\x8Ea2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDCW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBDV[PPPPV[a3\xF7\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa5\xCE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra7\xA6a\x05\0\x83\x01\x85a3\xBAV[a7\xB4a\x06`\x83\x01\x84a3\xE2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCCW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFCWa7\xFCa2\xBCV[`\x01\x01\x92\x91PPV[_\x81a8\x13Wa8\x13a2\xBCV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
5368    );
5369    /// The runtime bytecode of the contract, as deployed on the network.
5370    ///
5371    /// ```text
5372    ///0x608060405260043610610254575f3560e01c8063715018a61161013f578063b33bc491116100b3578063d24d933d11610078578063d24d933d14610835578063e030330114610864578063f068205414610883578063f2fde38b146108a2578063f5676160146108c1578063f9e50d19146108e0575f5ffd5b8063b33bc49114610790578063b3daf254146107af578063b5adea3c146107c3578063c23b9e9e146107e2578063c8e5e4981461081a575f5ffd5b80638da5cb5b116101045780638da5cb5b1461066557806390c14390146106a157806396c1ca61146106c05780639baa3cc9146106df5780639fdb54a7146106fe578063ad3cb1cc14610753575f5ffd5b8063715018a6146105c3578063757c37ad146105d757806376671808146105f6578063826e41fc1461060a5780638584d23f14610629575f5ffd5b8063300c89dd116101d6578063426d31941161019b578063426d319414610510578063433dba9f146105315780634f1ef2861461055057806352d1902d14610563578063623a13381461057757806369cc6a04146105af575f5ffd5b8063300c89dd1461043b578063313df7b11461045a578063378ec23b146104915780633c23b6db146104ad5780633ed55b7b146104ea575f5ffd5b8063167ac6181161021c578063167ac618146103645780632063d4f71461038357806325297427146103a25780632d52aad6146103d15780632f79889d146103fd575f5ffd5b8063013fa5fc1461025857806302b592f3146102795780630625e19b146102d65780630d8e6e2c1461031857806312173c2c14610343575b5f5ffd5b348015610263575f5ffd5b50610277610272366004612a09565b6108f4565b005b348015610284575f5ffd5b50610298610293366004612a22565b6109a7565b6040516102cd94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156102e1575f5ffd5b50600b54600c54600d54600e546102f89392919084565b6040805194855260208501939093529183015260608201526080016102cd565b348015610323575f5ffd5b5060408051600281525f60208201819052918101919091526060016102cd565b34801561034e575f5ffd5b506103576109f0565b6040516102cd9190612a39565b34801561036f575f5ffd5b5061027761037e366004612c50565b61101f565b34801561038e575f5ffd5b5061027761039d366004612f34565b611096565b3480156103ad575f5ffd5b506103c16103bc366004612c50565b6110af565b60405190151581526020016102cd565b3480156103dc575f5ffd5b506102776103eb366004612a22565b600f805460ff19166001179055601055565b348015610408575f5ffd5b5060085461042390600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016102cd565b348015610446575f5ffd5b506103c1610455366004612c50565b611111565b348015610465575f5ffd5b50600854610479906001600160a01b031681565b6040516001600160a01b0390911681526020016102cd565b34801561049c575f5ffd5b50435b6040519081526020016102cd565b3480156104b8575f5ffd5b506102776104c7366004612c50565b600a805467ffffffffffffffff19166001600160401b0392909216919091179055565b3480156104f5575f5ffd5b50600a5461042390600160401b90046001600160401b031681565b34801561051b575f5ffd5b505f546001546002546003546102f89392919084565b34801561053c575f5ffd5b5061027761054b366004612f7b565b6111a6565b61027761055e366004612f94565b6111ba565b34801561056e575f5ffd5b5061049f6111d9565b348015610582575f5ffd5b5061027761059136600461307a565b8051600b556020810151600c556040810151600d5560600151600e55565b3480156105ba575f5ffd5b506102776111f4565b3480156105ce575f5ffd5b50610277611262565b3480156105e2575f5ffd5b506102776105f1366004613094565b611283565b348015610601575f5ffd5b506104236115b6565b348015610615575f5ffd5b506008546001600160a01b031615156103c1565b348015610634575f5ffd5b50610648610643366004612a22565b6115e0565b604080519283526001600160401b039091166020830152016102cd565b348015610670575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610479565b3480156106ac575f5ffd5b506104236106bb3660046130d8565b61170b565b3480156106cb575f5ffd5b506102776106da366004612f7b565b61177a565b3480156106ea575f5ffd5b506102776106f9366004613100565b611803565b348015610709575f5ffd5b5060065460075461072d916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016102cd565b34801561075e575f5ffd5b50610783604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102cd9190613155565b34801561079b575f5ffd5b506102776107aa3660046130d8565b611925565b3480156107ba575f5ffd5b50610423611a91565b3480156107ce575f5ffd5b506102776107dd36600461318a565b611ab2565b3480156107ed575f5ffd5b5060085461080590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016102cd565b348015610825575f5ffd5b50610277600f805460ff19169055565b348015610840575f5ffd5b5060045460055461072d916001600160401b0380821692600160401b909204169083565b34801561086f575f5ffd5b506103c161087e3660046131a4565b611af9565b34801561088e575f5ffd5b50600a54610423906001600160401b031681565b3480156108ad575f5ffd5b506102776108bc366004612a09565b611b2c565b3480156108cc575f5ffd5b506102776108db3660046131c4565b611b6b565b3480156108eb575f5ffd5b5060095461049f565b6108fc611c16565b6001600160a01b0381166109235760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036109525760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b600981815481106109b6575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6109f8612728565b620100008152600b60208201527f2faf5a113efd87d75818e63ff9a6170007f22c89bbc4a8bd0f2b48268757b0146040820151527f185aee05f8d3babfce67931f15db39e61f25f794a4134d7bee6e18c5ad1ec0576020604083015101527f0dccf5dcf667a37ca93b8d721091d8f3a8049b3d1e89a56d66e42751bbaf7b5e6060820151527f2cf10949fc5bfcecb3bc54dd4121e55807430f17f30498a7ea6a026070b191626020606083015101527f08d70e4e0184fe53bd566f0d7edc4cd7b0e339490973d0faec7dac2089f538e56080820151527ef665fe1fd110d37d1dea446e8400f06f06b9b58ab3df90fbae7c47ee5860416020608083015101527f087e14d71924ac0f2880adf0f106925e5a6fdd57d020bb3c8aa70fa9fc00ccf360a0820151527f01db7e3178b342f91d54fc972cee72569f429a393988ee43c289e2ed96077152602060a083015101527f196dd42d767201f7f196c42aaef485656046310f5083559592bd1313e16948b760c0820151527f17889680810aaabd1ff3ac4a6c5492100579e059170cd2b77e2b3da6d37cc246602060c083015101527f24935e7a77ac313fd3d60ff3f1a0a79ec32c7dc519b39da0acb2c49f367771cc60e0820151527f168e29425ef138cb6943c75352f33c190e5f1488eb54a9e11deb744da7fb6b2e602060e083015101527f1b58d558b5526453bd1028ca938c940bb89e723f7c35787c02f9f179ae9a0cea610100820151527f21afc121d91d9d1c17dafb9236bc9b872c5b43df064c0b1286012fb43a762324602061010083015101527f1047fc55794d1e597de155077611e3c789a0a2be02183821bba56cf61cc1b8ed610120820151527f174252324727c0d2ee5e50eb57a5231f67474ceed6932ad4ffe9bcf866aa3428602061012083015101527f28db289a4cfb73ba92961572f3185298ae366ed1a44971607bcbf801f120f561610140820151527f045cfe7ae2cd175508172e7d9c2e899bb1d216dfc31fe89fc6c917caaee877a2602061014083015101527f195f2eec8547727fc46ed01b79e8f666ded64ae54f57073874a5a2470380a785610160820151527f1527322e85da1aefbd839e65d11dc695aac16b0db6c62591d9813242d41cbe31602061016083015101527f10c8d7d7355f7e0f8c002f482cc3b98c90baa94261c59a17b424eecfe4e963b2610180820151527f2272e30178647167bbead3a2d7371988f2e198e65815029ded4c64bfc0850f1f602061018083015101527f15d56ea7ab2fa61265f551c2ae25389c8fe7bcb3bf6608082c36a201f225f77d6101a0820151527f0b58546887202e7273d3d0c55d65dd6132cac98ebf04efb1b52445c513c4a4df60206101a083015101527f050d6f43774e8dffaa868f2a7dc82f566c69d175d818d4517cc70ac5fcb2f1b16101c0820151527f2fff87bf605e998373bb64553f3a625dabcd12888692d678a8f44d136440c86360206101c083015101527f12d085608c602cfb5b8c03ec7bd13ac0ff9e64a9ac1e9aa746594a033e464bf26101e0820151527f18ac5a3536042eeb0b0c7c2f43f5e2ca3b2173daa4c2812ffca64787e8e956b260206101e083015101527f0f0f9891fc2b790e74dc253c8854df6392e010f4de6760b8423a3dd69bbe5dce610200820151527f16bed1d244a2fe3ab9a652c7feec5650161d8a75227dece7294f3c8fc542fd6c602061020083015101527f0fa36d00672fa6a1c44cd3c259212c1ada48c66bf7bb085f24471b15b17e6e51610220820151527f182088e56b64955232460891d2b279765325813aef1dae855e5f496c418afc41602061022083015101527f2baf5ae2dd832e1449facc611b6b80fd66d58c871d5827c5c8e2747064e29964610240820151527f29f543b543137e881804c989cd3b99934010002238e8ab3eec882e09d306681f602061024083015101527f2db0ddc7123b42f520e257466a0d92da8b564fe01ec665096c14119643012984610260820151527f1b7ab27a66966284d7fb29bce9d550eafba16c49fbc6267827cdfc8d0b16f94f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b611027611c16565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b0385811682029283179485905561106d9491909104811692811691161761170b565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806110cf5750600a546001600160401b0316155b156110db57505f919050565b600a546001600160401b03166110f28360056132d0565b6110fc9190613303565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806111315750600a546001600160401b0316155b1561113d57505f919050565b600a54611153906001600160401b031683613303565b6001600160401b031615806111a05750600a5461117b906005906001600160401b0316613330565b600a546001600160401b0391821691611195911684613303565b6001600160401b0316115b92915050565b6111ae611c16565b6111b78161177a565b50565b6111c2611c71565b6111cb82611d15565b6111d58282611d56565b5050565b5f6111e2611e17565b505f5160206138315f395f51905f5290565b6111fc611c16565b6008546001600160a01b03161561124757600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b61126a611c16565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b0316151580156112a857506008546001600160a01b03163314155b156112c6576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b0391821691161115806112ff575060065460208401516001600160401b03600160401b9092048216911611155b1561131d5760405163051c46ef60e01b815260040160405180910390fd5b61132a8360400151611e60565b6113378260200151611e60565b6113448260400151611e60565b6113518260600151611e60565b5f61135a6115b6565b6020850151600a549192505f9161137a91906001600160401b031661170b565b600a549091506001600160401b03600160801b9091048116908216106113c5576113a78560200151611111565b156113c55760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b909104811690821611156114785760026113ef8383613330565b6001600160401b0316106114165760405163080ae8d960e01b815260040160405180910390fd5b6114218260016132d0565b6001600160401b0316816001600160401b031614801561145a575060065461145890600160401b90046001600160401b03166110af565b155b156114785760405163080ae8d960e01b815260040160405180910390fd5b611483858585611ea1565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b90048116908216108015906114e257506114e285602001516110af565b1561154c578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b6115308260016132d0565b6040516001600160401b03909116815260200160405180910390a15b611557434287612018565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae687604001516040516115a791815260200190565b60405180910390a35050505050565b600654600a545f916115db916001600160401b03600160401b9092048216911661170b565b905090565b600980545f918291906115f460018361334f565b8154811061160457611604613362565b5f918252602090912060029091020154600160801b90046001600160401b0316841061164357604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b8181101561170457846009828154811061167357611673613362565b5f918252602090912060029091020154600160801b90046001600160401b031611156116fc57600981815481106116ac576116ac613362565b905f5260205f20906002020160010154600982815481106116cf576116cf613362565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101611657565b5050915091565b5f816001600160401b03165f0361172357505f6111a0565b826001600160401b03165f0361173b575060016111a0565b6117458284613303565b6001600160401b03165f036117655761175e8284613376565b90506111a0565b61176f8284613376565b61175e9060016132d0565b611782611c16565b610e108163ffffffff1610806117a157506301e133808163ffffffff16115b806117bf575060085463ffffffff600160a01b909104811690821611155b156117dd576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156118475750825b90505f826001600160401b031660011480156118625750303b155b905081158015611870575080155b1561188e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156118b857845460ff60401b1916600160401b1785555b6118c186612201565b6118c9612212565b6118d489898961221a565b831561191a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b61192d611c16565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff1680611976575080546001600160401b03808416911610155b156119945760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116119dc576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b031990921690871617179055611a25838561170b565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b600a545f906115db906001600160401b03600160401b82048116911661170b565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408101516007556111b7434283612018565b600f545f9060ff16611b1457611b0f8383612346565b611b25565b8160105484611b23919061334f565b115b9392505050565b611b34611c16565b6001600160a01b038116611b6257604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b6111b78161249e565b611b7660095f61298d565b5f5b81518110156111d5576009828281518110611b9557611b95613362565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501611b78565b33611c487f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146112605760405163118cdaa760e01b8152336004820152602401611b59565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611cf757507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611ceb5f5160206138315f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156112605760405163703e46dd60e11b815260040160405180910390fd5b611d1d611c16565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d9060200161099c565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611db0575060408051601f3d908101601f19168201909252611dad918101906133a3565b60015b611dd857604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611b59565b5f5160206138315f395f51905f528114611e0857604051632a87526960e21b815260048101829052602401611b59565b611e12838361250e565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146112605760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806111d55760405163016c173360e21b815260040160405180910390fd5b5f611eaa6109f0565b9050611eb46129ab565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611f245750611f2485602001516110af565b15611f5657602084015160e0820152604084015161010082015260608401516101208201528351610140820152611f7a565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611fb59085908590889060040161359c565b602060405180830381865af4158015611fd0573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611ff491906137bc565b612011576040516309bde33960e01b815260040160405180910390fd5b5050505050565b6009541580159061208d575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061205857612058613362565b5f91825260209091206002909102015461208290600160401b90046001600160401b031684613330565b6001600160401b0316115b1561212057600854600980549091600160c01b90046001600160401b03169081106120ba576120ba613362565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186120fa836137db565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612209612563565b6111b7816125ac565b611260612563565b82516001600160401b031615158061223e575060208301516001600160401b031615155b8061224b57506020820151155b8061225857506040820151155b8061226557506060820151155b8061226f57508151155b806122815750610e108163ffffffff16105b8061229557506301e133808163ffffffff16115b156122b3576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180612357575080155b806123a15750600854600980549091600160c01b90046001600160401b031690811061238557612385613362565b5f9182526020909120600290910201546001600160401b031684105b156123bf5760405163b0b4387760e01b815260040160405180910390fd5b5f80806123cd60018561334f565b90505b8161246957600854600160c01b90046001600160401b0316811061246957866009828154811061240257612402613362565b5f9182526020909120600290910201546001600160401b03161161245757600191506009818154811061243757612437613362565b5f9182526020909120600290910201546001600160401b03169250612469565b8061246181613805565b9150506123d0565b816124875760405163b0b4387760e01b815260040160405180910390fd5b85612492848961334f565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b612517826125b4565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561255b57611e128282612617565b6111d5612689565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff1661126057604051631afcd79f60e31b815260040160405180910390fd5b611b34612563565b806001600160a01b03163b5f036125e957604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611b59565b5f5160206138315f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612633919061381a565b5f60405180830381855af49150503d805f811461266b576040519150601f19603f3d011682016040523d82523d5f602084013e612670565b606091505b50915091506126808583836126a8565b95945050505050565b34156112605760405163b398979f60e01b815260040160405180910390fd5b6060826126b857611b0f826126ff565b81511580156126cf57506001600160a01b0384163b155b156126f857604051639996b31560e01b81526001600160a01b0385166004820152602401611b59565b5092915050565b80511561270f5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161275b60405180604001604052805f81526020015f81525090565b815260200161277b60405180604001604052805f81526020015f81525090565b815260200161279b60405180604001604052805f81526020015f81525090565b81526020016127bb60405180604001604052805f81526020015f81525090565b81526020016127db60405180604001604052805f81526020015f81525090565b81526020016127fb60405180604001604052805f81526020015f81525090565b815260200161281b60405180604001604052805f81526020015f81525090565b815260200161283b60405180604001604052805f81526020015f81525090565b815260200161285b60405180604001604052805f81526020015f81525090565b815260200161287b60405180604001604052805f81526020015f81525090565b815260200161289b60405180604001604052805f81526020015f81525090565b81526020016128bb60405180604001604052805f81526020015f81525090565b81526020016128db60405180604001604052805f81526020015f81525090565b81526020016128fb60405180604001604052805f81526020015f81525090565b815260200161291b60405180604001604052805f81526020015f81525090565b815260200161293b60405180604001604052805f81526020015f81525090565b815260200161295b60405180604001604052805f81526020015f81525090565b815260200161297b60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f20908101906111b791906129ca565b604051806101600160405280600b906020820280368337509192915050565b5b808211156129ef5780546001600160c01b03191681555f60018201556002016129cb565b5090565b80356001600160a01b038116811461110c575f5ffd5b5f60208284031215612a19575f5ffd5b611b25826129f3565b5f60208284031215612a32575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612a6b604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461110c575f5ffd5b5f60208284031215612c60575f5ffd5b611b2582612c3a565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612ca057612ca0612c69565b60405290565b604051608081016001600160401b0381118282101715612ca057612ca0612c69565b604051601f8201601f191681016001600160401b0381118282101715612cf057612cf0612c69565b604052919050565b5f60608284031215612d08575f5ffd5b604051606081016001600160401b0381118282101715612d2a57612d2a612c69565b604052905080612d3983612c3a565b8152612d4760208401612c3a565b6020820152604092830135920191909152919050565b5f60408284031215612d6d575f5ffd5b604080519081016001600160401b0381118282101715612d8f57612d8f612c69565b604052823581526020928301359281019290925250919050565b5f6104808284031215612dba575f5ffd5b612dc2612c7d565b9050612dce8383612d5d565b8152612ddd8360408401612d5d565b6020820152612def8360808401612d5d565b6040820152612e018360c08401612d5d565b6060820152612e14836101008401612d5d565b6080820152612e27836101408401612d5d565b60a0820152612e3a836101808401612d5d565b60c0820152612e4d836101c08401612d5d565b60e0820152612e60836102008401612d5d565b610100820152612e74836102408401612d5d565b610120820152612e88836102808401612d5d565b610140820152612e9c836102c08401612d5d565b610160820152612eb0836103008401612d5d565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612f46575f5ffd5b612f508484612cf8565b9150612f5f8460608501612da9565b90509250929050565b803563ffffffff8116811461110c575f5ffd5b5f60208284031215612f8b575f5ffd5b611b2582612f68565b5f5f60408385031215612fa5575f5ffd5b612fae836129f3565b915060208301356001600160401b03811115612fc8575f5ffd5b8301601f81018513612fd8575f5ffd5b80356001600160401b03811115612ff157612ff1612c69565b613004601f8201601f1916602001612cc8565b818152866020838501011115613018575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215613047575f5ffd5b61304f612ca6565b8235815260208084013590820152604080840135908201526060928301359281019290925250919050565b5f6080828403121561308a575f5ffd5b611b258383613037565b5f5f5f61056084860312156130a7575f5ffd5b6130b18585612cf8565b92506130c08560608601613037565b91506130cf8560e08601612da9565b90509250925092565b5f5f604083850312156130e9575f5ffd5b6130f283612c3a565b9150612f5f60208401612c3a565b5f5f5f5f6101208587031215613114575f5ffd5b61311e8686612cf8565b935061312d8660608701613037565b925061313b60e08601612f68565b915061314a61010086016129f3565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561319a575f5ffd5b611b258383612cf8565b5f5f604083850312156131b5575f5ffd5b50508035926020909101359150565b5f602082840312156131d4575f5ffd5b81356001600160401b038111156131e9575f5ffd5b8201601f810184136131f9575f5ffd5b80356001600160401b0381111561321257613212612c69565b61322160208260051b01612cc8565b8082825260208201915060208360071b850101925086831115613242575f5ffd5b6020840193505b828410156132b25760808488031215613260575f5ffd5b613268612ca6565b61327185612c3a565b815261327f60208601612c3a565b602082015261329060408601612c3a565b6040820152606085810135908201528252608090930192602090910190613249565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b0381811683821601908111156111a0576111a06132bc565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b0383168061331b5761331b6132ef565b806001600160401b0384160691505092915050565b6001600160401b0382811682821603908111156111a0576111a06132bc565b818103818111156111a0576111a06132bc565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061338e5761338e6132ef565b806001600160401b0384160491505092915050565b5f602082840312156133b3575f5ffd5b5051919050565b805f5b600b8110156133dc5781518452602093840193909101906001016133bd565b50505050565b6133f782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516135ce604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526137a66105008301856133ba565b6137b46106608301846133e2565b949350505050565b5f602082840312156137cc575f5ffd5b81518015158114611b25575f5ffd5b5f6001600160401b0382166001600160401b0381036137fc576137fc6132bc565b60010192915050565b5f81613813576138136132bc565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
5373    /// ```
5374    #[rustfmt::skip]
5375    #[allow(clippy::all)]
5376    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
5377        b"`\x80`@R`\x046\x10a\x02TW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01?W\x80c\xB3;\xC4\x91\x11a\0\xB3W\x80c\xD2M\x93=\x11a\0xW\x80c\xD2M\x93=\x14a\x085W\x80c\xE003\x01\x14a\x08dW\x80c\xF0h T\x14a\x08\x83W\x80c\xF2\xFD\xE3\x8B\x14a\x08\xA2W\x80c\xF5ga`\x14a\x08\xC1W\x80c\xF9\xE5\r\x19\x14a\x08\xE0W__\xFD[\x80c\xB3;\xC4\x91\x14a\x07\x90W\x80c\xB3\xDA\xF2T\x14a\x07\xAFW\x80c\xB5\xAD\xEA<\x14a\x07\xC3W\x80c\xC2;\x9E\x9E\x14a\x07\xE2W\x80c\xC8\xE5\xE4\x98\x14a\x08\x1AW__\xFD[\x80c\x8D\xA5\xCB[\x11a\x01\x04W\x80c\x8D\xA5\xCB[\x14a\x06eW\x80c\x90\xC1C\x90\x14a\x06\xA1W\x80c\x96\xC1\xCAa\x14a\x06\xC0W\x80c\x9B\xAA<\xC9\x14a\x06\xDFW\x80c\x9F\xDBT\xA7\x14a\x06\xFEW\x80c\xAD<\xB1\xCC\x14a\x07SW__\xFD[\x80cqP\x18\xA6\x14a\x05\xC3W\x80cu|7\xAD\x14a\x05\xD7W\x80cvg\x18\x08\x14a\x05\xF6W\x80c\x82nA\xFC\x14a\x06\nW\x80c\x85\x84\xD2?\x14a\x06)W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\xD6W\x80cBm1\x94\x11a\x01\x9BW\x80cBm1\x94\x14a\x05\x10W\x80cC=\xBA\x9F\x14a\x051W\x80cO\x1E\xF2\x86\x14a\x05PW\x80cR\xD1\x90-\x14a\x05cW\x80cb:\x138\x14a\x05wW\x80ci\xCCj\x04\x14a\x05\xAFW__\xFD[\x80c0\x0C\x89\xDD\x14a\x04;W\x80c1=\xF7\xB1\x14a\x04ZW\x80c7\x8E\xC2;\x14a\x04\x91W\x80c<#\xB6\xDB\x14a\x04\xADW\x80c>\xD5[{\x14a\x04\xEAW__\xFD[\x80c\x16z\xC6\x18\x11a\x02\x1CW\x80c\x16z\xC6\x18\x14a\x03dW\x80c c\xD4\xF7\x14a\x03\x83W\x80c%)t'\x14a\x03\xA2W\x80c-R\xAA\xD6\x14a\x03\xD1W\x80c/y\x88\x9D\x14a\x03\xFDW__\xFD[\x80c\x01?\xA5\xFC\x14a\x02XW\x80c\x02\xB5\x92\xF3\x14a\x02yW\x80c\x06%\xE1\x9B\x14a\x02\xD6W\x80c\r\x8En,\x14a\x03\x18W\x80c\x12\x17<,\x14a\x03CW[__\xFD[4\x80\x15a\x02cW__\xFD[Pa\x02wa\x02r6`\x04a*\tV[a\x08\xF4V[\0[4\x80\x15a\x02\x84W__\xFD[Pa\x02\x98a\x02\x936`\x04a*\"V[a\t\xA7V[`@Qa\x02\xCD\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\xE1W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xF8\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\xCDV[4\x80\x15a\x03#W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\xCDV[4\x80\x15a\x03NW__\xFD[Pa\x03Wa\t\xF0V[`@Qa\x02\xCD\x91\x90a*9V[4\x80\x15a\x03oW__\xFD[Pa\x02wa\x03~6`\x04a,PV[a\x10\x1FV[4\x80\x15a\x03\x8EW__\xFD[Pa\x02wa\x03\x9D6`\x04a/4V[a\x10\x96V[4\x80\x15a\x03\xADW__\xFD[Pa\x03\xC1a\x03\xBC6`\x04a,PV[a\x10\xAFV[`@Q\x90\x15\x15\x81R` \x01a\x02\xCDV[4\x80\x15a\x03\xDCW__\xFD[Pa\x02wa\x03\xEB6`\x04a*\"V[`\x0F\x80T`\xFF\x19\x16`\x01\x17\x90U`\x10UV[4\x80\x15a\x04\x08W__\xFD[P`\x08Ta\x04#\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04FW__\xFD[Pa\x03\xC1a\x04U6`\x04a,PV[a\x11\x11V[4\x80\x15a\x04eW__\xFD[P`\x08Ta\x04y\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\x9CW__\xFD[PC[`@Q\x90\x81R` \x01a\x02\xCDV[4\x80\x15a\x04\xB8W__\xFD[Pa\x02wa\x04\xC76`\x04a,PV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[4\x80\x15a\x04\xF5W__\xFD[P`\nTa\x04#\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x05\x1BW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xF8\x93\x92\x91\x90\x84V[4\x80\x15a\x05<W__\xFD[Pa\x02wa\x05K6`\x04a/{V[a\x11\xA6V[a\x02wa\x05^6`\x04a/\x94V[a\x11\xBAV[4\x80\x15a\x05nW__\xFD[Pa\x04\x9Fa\x11\xD9V[4\x80\x15a\x05\x82W__\xFD[Pa\x02wa\x05\x916`\x04a0zV[\x80Q`\x0BU` \x81\x01Q`\x0CU`@\x81\x01Q`\rU``\x01Q`\x0EUV[4\x80\x15a\x05\xBAW__\xFD[Pa\x02wa\x11\xF4V[4\x80\x15a\x05\xCEW__\xFD[Pa\x02wa\x12bV[4\x80\x15a\x05\xE2W__\xFD[Pa\x02wa\x05\xF16`\x04a0\x94V[a\x12\x83V[4\x80\x15a\x06\x01W__\xFD[Pa\x04#a\x15\xB6V[4\x80\x15a\x06\x15W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03\xC1V[4\x80\x15a\x064W__\xFD[Pa\x06Ha\x06C6`\x04a*\"V[a\x15\xE0V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\xCDV[4\x80\x15a\x06pW__\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\x16a\x04yV[4\x80\x15a\x06\xACW__\xFD[Pa\x04#a\x06\xBB6`\x04a0\xD8V[a\x17\x0BV[4\x80\x15a\x06\xCBW__\xFD[Pa\x02wa\x06\xDA6`\x04a/{V[a\x17zV[4\x80\x15a\x06\xEAW__\xFD[Pa\x02wa\x06\xF96`\x04a1\0V[a\x18\x03V[4\x80\x15a\x07\tW__\xFD[P`\x06T`\x07Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\xCDV[4\x80\x15a\x07^W__\xFD[Pa\x07\x83`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\xCD\x91\x90a1UV[4\x80\x15a\x07\x9BW__\xFD[Pa\x02wa\x07\xAA6`\x04a0\xD8V[a\x19%V[4\x80\x15a\x07\xBAW__\xFD[Pa\x04#a\x1A\x91V[4\x80\x15a\x07\xCEW__\xFD[Pa\x02wa\x07\xDD6`\x04a1\x8AV[a\x1A\xB2V[4\x80\x15a\x07\xEDW__\xFD[P`\x08Ta\x08\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\xCDV[4\x80\x15a\x08%W__\xFD[Pa\x02w`\x0F\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x08@W__\xFD[P`\x04T`\x05Ta\x07-\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x08oW__\xFD[Pa\x03\xC1a\x08~6`\x04a1\xA4V[a\x1A\xF9V[4\x80\x15a\x08\x8EW__\xFD[P`\nTa\x04#\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x08\xADW__\xFD[Pa\x02wa\x08\xBC6`\x04a*\tV[a\x1B,V[4\x80\x15a\x08\xCCW__\xFD[Pa\x02wa\x08\xDB6`\x04a1\xC4V[a\x1BkV[4\x80\x15a\x08\xEBW__\xFD[P`\tTa\x04\x9FV[a\x08\xFCa\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\t#W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\tRW`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\t\xB6W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\t\xF8a'(V[b\x01\0\0\x81R`\x0B` \x82\x01R\x7F/\xAFZ\x11>\xFD\x87\xD7X\x18\xE6?\xF9\xA6\x17\0\x07\xF2,\x89\xBB\xC4\xA8\xBD\x0F+H&\x87W\xB0\x14`@\x82\x01QR\x7F\x18Z\xEE\x05\xF8\xD3\xBA\xBF\xCEg\x93\x1F\x15\xDB9\xE6\x1F%\xF7\x94\xA4\x13M{\xEEn\x18\xC5\xAD\x1E\xC0W` `@\x83\x01Q\x01R\x7F\r\xCC\xF5\xDC\xF6g\xA3|\xA9;\x8Dr\x10\x91\xD8\xF3\xA8\x04\x9B=\x1E\x89\xA5mf\xE4'Q\xBB\xAF{^``\x82\x01QR\x7F,\xF1\tI\xFC[\xFC\xEC\xB3\xBCT\xDDA!\xE5X\x07C\x0F\x17\xF3\x04\x98\xA7\xEAj\x02`p\xB1\x91b` ``\x83\x01Q\x01R\x7F\x08\xD7\x0EN\x01\x84\xFES\xBDVo\r~\xDCL\xD7\xB0\xE39I\ts\xD0\xFA\xEC}\xAC \x89\xF58\xE5`\x80\x82\x01QR~\xF6e\xFE\x1F\xD1\x10\xD3}\x1D\xEADn\x84\0\xF0o\x06\xB9\xB5\x8A\xB3\xDF\x90\xFB\xAE|G\xEEX`A` `\x80\x83\x01Q\x01R\x7F\x08~\x14\xD7\x19$\xAC\x0F(\x80\xAD\xF0\xF1\x06\x92^Zo\xDDW\xD0 \xBB<\x8A\xA7\x0F\xA9\xFC\0\xCC\xF3`\xA0\x82\x01QR\x7F\x01\xDB~1x\xB3B\xF9\x1DT\xFC\x97,\xEErV\x9FB\x9A99\x88\xEEC\xC2\x89\xE2\xED\x96\x07qR` `\xA0\x83\x01Q\x01R\x7F\x19m\xD4-vr\x01\xF7\xF1\x96\xC4*\xAE\xF4\x85e`F1\x0FP\x83U\x95\x92\xBD\x13\x13\xE1iH\xB7`\xC0\x82\x01QR\x7F\x17\x88\x96\x80\x81\n\xAA\xBD\x1F\xF3\xACJlT\x92\x10\x05y\xE0Y\x17\x0C\xD2\xB7~+=\xA6\xD3|\xC2F` `\xC0\x83\x01Q\x01R\x7F$\x93^zw\xAC1?\xD3\xD6\x0F\xF3\xF1\xA0\xA7\x9E\xC3,}\xC5\x19\xB3\x9D\xA0\xAC\xB2\xC4\x9F6wq\xCC`\xE0\x82\x01QR\x7F\x16\x8E)B^\xF18\xCBiC\xC7SR\xF3<\x19\x0E_\x14\x88\xEBT\xA9\xE1\x1D\xEBtM\xA7\xFBk.` `\xE0\x83\x01Q\x01R\x7F\x1BX\xD5X\xB5RdS\xBD\x10(\xCA\x93\x8C\x94\x0B\xB8\x9Er?|5x|\x02\xF9\xF1y\xAE\x9A\x0C\xEAa\x01\0\x82\x01QR\x7F!\xAF\xC1!\xD9\x1D\x9D\x1C\x17\xDA\xFB\x926\xBC\x9B\x87,[C\xDF\x06L\x0B\x12\x86\x01/\xB4:v#$` a\x01\0\x83\x01Q\x01R\x7F\x10G\xFCUyM\x1EY}\xE1U\x07v\x11\xE3\xC7\x89\xA0\xA2\xBE\x02\x188!\xBB\xA5l\xF6\x1C\xC1\xB8\xEDa\x01 \x82\x01QR\x7F\x17BR2G'\xC0\xD2\xEE^P\xEBW\xA5#\x1FgGL\xEE\xD6\x93*\xD4\xFF\xE9\xBC\xF8f\xAA4(` a\x01 \x83\x01Q\x01R\x7F(\xDB(\x9AL\xFBs\xBA\x92\x96\x15r\xF3\x18R\x98\xAE6n\xD1\xA4Iq`{\xCB\xF8\x01\xF1 \xF5aa\x01@\x82\x01QR\x7F\x04\\\xFEz\xE2\xCD\x17U\x08\x17.}\x9C.\x89\x9B\xB1\xD2\x16\xDF\xC3\x1F\xE8\x9F\xC6\xC9\x17\xCA\xAE\xE8w\xA2` a\x01@\x83\x01Q\x01R\x7F\x19_.\xEC\x85Gr\x7F\xC4n\xD0\x1By\xE8\xF6f\xDE\xD6J\xE5OW\x078t\xA5\xA2G\x03\x80\xA7\x85a\x01`\x82\x01QR\x7F\x15'2.\x85\xDA\x1A\xEF\xBD\x83\x9Ee\xD1\x1D\xC6\x95\xAA\xC1k\r\xB6\xC6%\x91\xD9\x812B\xD4\x1C\xBE1` a\x01`\x83\x01Q\x01R\x7F\x10\xC8\xD7\xD75_~\x0F\x8C\0/H,\xC3\xB9\x8C\x90\xBA\xA9Ba\xC5\x9A\x17\xB4$\xEE\xCF\xE4\xE9c\xB2a\x01\x80\x82\x01QR\x7F\"r\xE3\x01xdqg\xBB\xEA\xD3\xA2\xD77\x19\x88\xF2\xE1\x98\xE6X\x15\x02\x9D\xEDLd\xBF\xC0\x85\x0F\x1F` a\x01\x80\x83\x01Q\x01R\x7F\x15\xD5n\xA7\xAB/\xA6\x12e\xF5Q\xC2\xAE%8\x9C\x8F\xE7\xBC\xB3\xBFf\x08\x08,6\xA2\x01\xF2%\xF7}a\x01\xA0\x82\x01QR\x7F\x0BXTh\x87 .rs\xD3\xD0\xC5]e\xDDa2\xCA\xC9\x8E\xBF\x04\xEF\xB1\xB5$E\xC5\x13\xC4\xA4\xDF` a\x01\xA0\x83\x01Q\x01R\x7F\x05\roCwN\x8D\xFF\xAA\x86\x8F*}\xC8/Vli\xD1u\xD8\x18\xD4Q|\xC7\n\xC5\xFC\xB2\xF1\xB1a\x01\xC0\x82\x01QR\x7F/\xFF\x87\xBF`^\x99\x83s\xBBdU?:b]\xAB\xCD\x12\x88\x86\x92\xD6x\xA8\xF4M\x13d@\xC8c` a\x01\xC0\x83\x01Q\x01R\x7F\x12\xD0\x85`\x8C`,\xFB[\x8C\x03\xEC{\xD1:\xC0\xFF\x9Ed\xA9\xAC\x1E\x9A\xA7FYJ\x03>FK\xF2a\x01\xE0\x82\x01QR\x7F\x18\xACZ56\x04.\xEB\x0B\x0C|/C\xF5\xE2\xCA;!s\xDA\xA4\xC2\x81/\xFC\xA6G\x87\xE8\xE9V\xB2` a\x01\xE0\x83\x01Q\x01R\x7F\x0F\x0F\x98\x91\xFC+y\x0Et\xDC%<\x88T\xDFc\x92\xE0\x10\xF4\xDEg`\xB8B:=\xD6\x9B\xBE]\xCEa\x02\0\x82\x01QR\x7F\x16\xBE\xD1\xD2D\xA2\xFE:\xB9\xA6R\xC7\xFE\xECVP\x16\x1D\x8Au\"}\xEC\xE7)O<\x8F\xC5B\xFDl` a\x02\0\x83\x01Q\x01R\x7F\x0F\xA3m\0g/\xA6\xA1\xC4L\xD3\xC2Y!,\x1A\xDAH\xC6k\xF7\xBB\x08_$G\x1B\x15\xB1~nQa\x02 \x82\x01QR\x7F\x18 \x88\xE5kd\x95R2F\x08\x91\xD2\xB2yvS%\x81:\xEF\x1D\xAE\x85^_IlA\x8A\xFCA` a\x02 \x83\x01Q\x01R\x7F+\xAFZ\xE2\xDD\x83.\x14I\xFA\xCCa\x1Bk\x80\xFDf\xD5\x8C\x87\x1DX'\xC5\xC8\xE2tpd\xE2\x99da\x02@\x82\x01QR\x7F)\xF5C\xB5C\x13~\x88\x18\x04\xC9\x89\xCD;\x99\x93@\x10\0\"8\xE8\xAB>\xEC\x88.\t\xD3\x06h\x1F` a\x02@\x83\x01Q\x01R\x7F-\xB0\xDD\xC7\x12;B\xF5 \xE2WFj\r\x92\xDA\x8BVO\xE0\x1E\xC6e\tl\x14\x11\x96C\x01)\x84a\x02`\x82\x01QR\x7F\x1Bz\xB2zf\x96b\x84\xD7\xFB)\xBC\xE9\xD5P\xEA\xFB\xA1lI\xFB\xC6&x'\xCD\xFC\x8D\x0B\x16\xF9O` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[a\x10'a\x1C\x16V[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x10m\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x17\x0BV[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x10\xCFWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x10\xDBWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\x10\xF2\x83`\x05a2\xD0V[a\x10\xFC\x91\x90a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\x111WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\x11=WP_\x91\x90PV[`\nTa\x11S\x90`\x01`\x01`@\x1B\x03\x16\x83a3\x03V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\x11\xA0WP`\nTa\x11{\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a30V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\x11\x95\x91\x16\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\x11\xAEa\x1C\x16V[a\x11\xB7\x81a\x17zV[PV[a\x11\xC2a\x1CqV[a\x11\xCB\x82a\x1D\x15V[a\x11\xD5\x82\x82a\x1DVV[PPV[_a\x11\xE2a\x1E\x17V[P_Q` a81_9_Q\x90_R\x90V[a\x11\xFCa\x1C\x16V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x12GW`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\x12ja\x1C\x16V[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x12\xA8WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x12\xC6W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x12\xFFWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x13\x1DW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x13*\x83`@\x01Qa\x1E`V[a\x137\x82` \x01Qa\x1E`V[a\x13D\x82`@\x01Qa\x1E`V[a\x13Q\x82``\x01Qa\x1E`V[_a\x13Za\x15\xB6V[` \x85\x01Q`\nT\x91\x92P_\x91a\x13z\x91\x90`\x01`\x01`@\x1B\x03\x16a\x17\x0BV[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x13\xC5Wa\x13\xA7\x85` \x01Qa\x11\x11V[\x15a\x13\xC5W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\x14xW`\x02a\x13\xEF\x83\x83a30V[`\x01`\x01`@\x1B\x03\x16\x10a\x14\x16W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14!\x82`\x01a2\xD0V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x14ZWP`\x06Ta\x14X\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\x10\xAFV[\x15[\x15a\x14xW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\x83\x85\x85\x85a\x1E\xA1V[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\x14\xE2WPa\x14\xE2\x85` \x01Qa\x10\xAFV[\x15a\x15LW\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\x150\x82`\x01a2\xD0V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x15WCB\x87a \x18V[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x15\xA7\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x15\xDB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x17\x0BV[\x90P\x90V[`\t\x80T_\x91\x82\x91\x90a\x15\xF4`\x01\x83a3OV[\x81T\x81\x10a\x16\x04Wa\x16\x04a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x16CW`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x17\x04W\x84`\t\x82\x81T\x81\x10a\x16sWa\x16sa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x16\xFCW`\t\x81\x81T\x81\x10a\x16\xACWa\x16\xACa3bV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x16\xCFWa\x16\xCFa3bV[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x16WV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x17#WP_a\x11\xA0V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x17;WP`\x01a\x11\xA0V[a\x17E\x82\x84a3\x03V[`\x01`\x01`@\x1B\x03\x16_\x03a\x17eWa\x17^\x82\x84a3vV[\x90Pa\x11\xA0V[a\x17o\x82\x84a3vV[a\x17^\x90`\x01a2\xD0V[a\x17\x82a\x1C\x16V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x17\xA1WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x17\xBFWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x17\xDDW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\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\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x18GWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x18bWP0;\x15[\x90P\x81\x15\x80\x15a\x18pWP\x80\x15[\x15a\x18\x8EW`@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\x18\xB8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x18\xC1\x86a\"\x01V[a\x18\xC9a\"\x12V[a\x18\xD4\x89\x89\x89a\"\x1AV[\x83\x15a\x19\x1AW\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\x19-a\x1C\x16V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x19vWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x19\x94W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x19\xDCW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x1A%\x83\x85a\x17\x0BV[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\nT_\x90a\x15\xDB\x90`\x01`\x01`@\x1B\x03`\x01`@\x1B\x82\x04\x81\x16\x91\x16a\x17\x0BV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x81\x01Q`\x07Ua\x11\xB7CB\x83a \x18V[`\x0FT_\x90`\xFF\x16a\x1B\x14Wa\x1B\x0F\x83\x83a#FV[a\x1B%V[\x81`\x10T\x84a\x1B#\x91\x90a3OV[\x11[\x93\x92PPPV[a\x1B4a\x1C\x16V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x1BbW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\x11\xB7\x81a$\x9EV[a\x1Bv`\t_a)\x8DV[_[\x81Q\x81\x10\x15a\x11\xD5W`\t\x82\x82\x81Q\x81\x10a\x1B\x95Wa\x1B\x95a3bV[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\x1BxV[3a\x1CH\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\x12`W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x1BYV[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\x1C\xF7WP\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\x1C\xEB_Q` a81_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1D\x1Da\x1C\x16V[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\t\x9CV[\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\x1D\xB0WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1D\xAD\x91\x81\x01\x90a3\xA3V[`\x01[a\x1D\xD8W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_9_Q\x90_R\x81\x14a\x1E\x08W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x1BYV[a\x1E\x12\x83\x83a%\x0EV[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\x12`W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\x11\xD5W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1E\xAAa\t\xF0V[\x90Pa\x1E\xB4a)\xABV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1F$WPa\x1F$\x85` \x01Qa\x10\xAFV[\x15a\x1FVW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1FzV[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1F\xB5\x90\x85\x90\x85\x90\x88\x90`\x04\x01a5\x9CV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\xD0W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\xF4\x91\x90a7\xBCV[a \x11W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a \x8DWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a XWa Xa3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta \x82\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a30V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a! W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a \xBAWa \xBAa3bV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a \xFA\x83a7\xDBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a\"\ta%cV[a\x11\xB7\x81a%\xACV[a\x12`a%cV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\">WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\"KWP` \x82\x01Q\x15[\x80a\"XWP`@\x82\x01Q\x15[\x80a\"eWP``\x82\x01Q\x15[\x80a\"oWP\x81Q\x15[\x80a\"\x81WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\"\x95WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\"\xB3W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a#WWP\x80\x15[\x80a#\xA1WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a#\x85Wa#\x85a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a#\xBFW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a#\xCD`\x01\x85a3OV[\x90P[\x81a$iW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a$iW\x86`\t\x82\x81T\x81\x10a$\x02Wa$\x02a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a$WW`\x01\x91P`\t\x81\x81T\x81\x10a$7Wa$7a3bV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa$iV[\x80a$a\x81a8\x05V[\x91PPa#\xD0V[\x81a$\x87W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a$\x92\x84\x89a3OV[\x11\x97\x96PPPPPPPV[\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[a%\x17\x82a%\xB4V[`@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%[Wa\x1E\x12\x82\x82a&\x17V[a\x11\xD5a&\x89V[\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\x12`W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B4a%cV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a%\xE9W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x1BYV[_Q` a81_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&3\x91\x90a8\x1AV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a&kW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a&pV[``\x91P[P\x91P\x91Pa&\x80\x85\x83\x83a&\xA8V[\x95\x94PPPPPV[4\x15a\x12`W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a&\xB8Wa\x1B\x0F\x82a&\xFFV[\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\x1BYV[P\x92\x91PPV[\x80Q\x15a'\x0FW\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a'[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'{`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(;`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a([`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a({`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\x9B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xBB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xDB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a(\xFB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)\x1B`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a);`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a)[`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a){`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\x11\xB7\x91\x90a)\xCAV[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a)\xEFW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a)\xCBV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a*\x19W__\xFD[a\x1B%\x82a)\xF3V[_` \x82\x84\x03\x12\x15a*2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa*k`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a,`W__\xFD[a\x1B%\x82a,:V[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xA0Wa,\xA0a,iV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a,\xF0Wa,\xF0a,iV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a-\x08W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-*Wa-*a,iV[`@R\x90P\x80a-9\x83a,:V[\x81Ra-G` \x84\x01a,:V[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a-mW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\x8FWa-\x8Fa,iV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a-\xBAW__\xFD[a-\xC2a,}V[\x90Pa-\xCE\x83\x83a-]V[\x81Ra-\xDD\x83`@\x84\x01a-]V[` \x82\x01Ra-\xEF\x83`\x80\x84\x01a-]V[`@\x82\x01Ra.\x01\x83`\xC0\x84\x01a-]V[``\x82\x01Ra.\x14\x83a\x01\0\x84\x01a-]V[`\x80\x82\x01Ra.'\x83a\x01@\x84\x01a-]V[`\xA0\x82\x01Ra.:\x83a\x01\x80\x84\x01a-]V[`\xC0\x82\x01Ra.M\x83a\x01\xC0\x84\x01a-]V[`\xE0\x82\x01Ra.`\x83a\x02\0\x84\x01a-]V[a\x01\0\x82\x01Ra.t\x83a\x02@\x84\x01a-]V[a\x01 \x82\x01Ra.\x88\x83a\x02\x80\x84\x01a-]V[a\x01@\x82\x01Ra.\x9C\x83a\x02\xC0\x84\x01a-]V[a\x01`\x82\x01Ra.\xB0\x83a\x03\0\x84\x01a-]V[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a/FW__\xFD[a/P\x84\x84a,\xF8V[\x91Pa/_\x84``\x85\x01a-\xA9V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x11\x0CW__\xFD[_` \x82\x84\x03\x12\x15a/\x8BW__\xFD[a\x1B%\x82a/hV[__`@\x83\x85\x03\x12\x15a/\xA5W__\xFD[a/\xAE\x83a)\xF3V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xC8W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a/\xD8W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a/\xF1Wa/\xF1a,iV[a0\x04`\x1F\x82\x01`\x1F\x19\x16` \x01a,\xC8V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a0\x18W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a0GW__\xFD[a0Oa,\xA6V[\x825\x81R` \x80\x84\x015\x90\x82\x01R`@\x80\x84\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_`\x80\x82\x84\x03\x12\x15a0\x8AW__\xFD[a\x1B%\x83\x83a07V[___a\x05`\x84\x86\x03\x12\x15a0\xA7W__\xFD[a0\xB1\x85\x85a,\xF8V[\x92Pa0\xC0\x85``\x86\x01a07V[\x91Pa0\xCF\x85`\xE0\x86\x01a-\xA9V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a0\xE9W__\xFD[a0\xF2\x83a,:V[\x91Pa/_` \x84\x01a,:V[____a\x01 \x85\x87\x03\x12\x15a1\x14W__\xFD[a1\x1E\x86\x86a,\xF8V[\x93Pa1-\x86``\x87\x01a07V[\x92Pa1;`\xE0\x86\x01a/hV[\x91Pa1Ja\x01\0\x86\x01a)\xF3V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a1\x9AW__\xFD[a\x1B%\x83\x83a,\xF8V[__`@\x83\x85\x03\x12\x15a1\xB5W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a1\xD4W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a1\xE9W__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a1\xF9W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a2\x12Wa2\x12a,iV[a2!` \x82`\x05\x1B\x01a,\xC8V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a2BW__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a2\xB2W`\x80\x84\x88\x03\x12\x15a2`W__\xFD[a2ha,\xA6V[a2q\x85a,:V[\x81Ra2\x7F` \x86\x01a,:V[` \x82\x01Ra2\x90`@\x86\x01a,:V[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a2IV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x1BWa3\x1Ba2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[\x81\x81\x03\x81\x81\x11\x15a\x11\xA0Wa\x11\xA0a2\xBCV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a3\x8EWa3\x8Ea2\xEFV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_` \x82\x84\x03\x12\x15a3\xB3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a3\xDCW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a3\xBDV[PPPPV[a3\xF7\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa5\xCE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra7\xA6a\x05\0\x83\x01\x85a3\xBAV[a7\xB4a\x06`\x83\x01\x84a3\xE2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a7\xCCW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1B%W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a7\xFCWa7\xFCa2\xBCV[`\x01\x01\x92\x91PPV[_\x81a8\x13Wa8\x13a2\xBCV[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
5378    );
5379    #[derive(serde::Serialize, serde::Deserialize)]
5380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5381    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
5382```solidity
5383error AddressEmptyCode(address target);
5384```*/
5385    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5386    #[derive(Clone)]
5387    pub struct AddressEmptyCode {
5388        #[allow(missing_docs)]
5389        pub target: alloy::sol_types::private::Address,
5390    }
5391    #[allow(
5392        non_camel_case_types,
5393        non_snake_case,
5394        clippy::pub_underscore_fields,
5395        clippy::style
5396    )]
5397    const _: () = {
5398        use alloy::sol_types as alloy_sol_types;
5399        #[doc(hidden)]
5400        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5401        #[doc(hidden)]
5402        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5403        #[cfg(test)]
5404        #[allow(dead_code, unreachable_patterns)]
5405        fn _type_assertion(
5406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5407        ) {
5408            match _t {
5409                alloy_sol_types::private::AssertTypeEq::<
5410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5411                >(_) => {}
5412            }
5413        }
5414        #[automatically_derived]
5415        #[doc(hidden)]
5416        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
5417            fn from(value: AddressEmptyCode) -> Self {
5418                (value.target,)
5419            }
5420        }
5421        #[automatically_derived]
5422        #[doc(hidden)]
5423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
5424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5425                Self { target: tuple.0 }
5426            }
5427        }
5428        #[automatically_derived]
5429        impl alloy_sol_types::SolError for AddressEmptyCode {
5430            type Parameters<'a> = UnderlyingSolTuple<'a>;
5431            type Token<'a> = <Self::Parameters<
5432                'a,
5433            > as alloy_sol_types::SolType>::Token<'a>;
5434            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
5435            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
5436            #[inline]
5437            fn new<'a>(
5438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5439            ) -> Self {
5440                tuple.into()
5441            }
5442            #[inline]
5443            fn tokenize(&self) -> Self::Token<'_> {
5444                (
5445                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5446                        &self.target,
5447                    ),
5448                )
5449            }
5450            #[inline]
5451            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5452                <Self::Parameters<
5453                    '_,
5454                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5455                    .map(Self::new)
5456            }
5457        }
5458    };
5459    #[derive(serde::Serialize, serde::Deserialize)]
5460    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5461    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5462```solidity
5463error DeprecatedApi();
5464```*/
5465    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5466    #[derive(Clone)]
5467    pub struct DeprecatedApi;
5468    #[allow(
5469        non_camel_case_types,
5470        non_snake_case,
5471        clippy::pub_underscore_fields,
5472        clippy::style
5473    )]
5474    const _: () = {
5475        use alloy::sol_types as alloy_sol_types;
5476        #[doc(hidden)]
5477        type UnderlyingSolTuple<'a> = ();
5478        #[doc(hidden)]
5479        type UnderlyingRustTuple<'a> = ();
5480        #[cfg(test)]
5481        #[allow(dead_code, unreachable_patterns)]
5482        fn _type_assertion(
5483            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5484        ) {
5485            match _t {
5486                alloy_sol_types::private::AssertTypeEq::<
5487                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5488                >(_) => {}
5489            }
5490        }
5491        #[automatically_derived]
5492        #[doc(hidden)]
5493        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5494            fn from(value: DeprecatedApi) -> Self {
5495                ()
5496            }
5497        }
5498        #[automatically_derived]
5499        #[doc(hidden)]
5500        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5501            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5502                Self
5503            }
5504        }
5505        #[automatically_derived]
5506        impl alloy_sol_types::SolError for DeprecatedApi {
5507            type Parameters<'a> = UnderlyingSolTuple<'a>;
5508            type Token<'a> = <Self::Parameters<
5509                'a,
5510            > as alloy_sol_types::SolType>::Token<'a>;
5511            const SIGNATURE: &'static str = "DeprecatedApi()";
5512            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5513            #[inline]
5514            fn new<'a>(
5515                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5516            ) -> Self {
5517                tuple.into()
5518            }
5519            #[inline]
5520            fn tokenize(&self) -> Self::Token<'_> {
5521                ()
5522            }
5523            #[inline]
5524            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5525                <Self::Parameters<
5526                    '_,
5527                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5528                    .map(Self::new)
5529            }
5530        }
5531    };
5532    #[derive(serde::Serialize, serde::Deserialize)]
5533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5534    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5535```solidity
5536error ERC1967InvalidImplementation(address implementation);
5537```*/
5538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5539    #[derive(Clone)]
5540    pub struct ERC1967InvalidImplementation {
5541        #[allow(missing_docs)]
5542        pub implementation: alloy::sol_types::private::Address,
5543    }
5544    #[allow(
5545        non_camel_case_types,
5546        non_snake_case,
5547        clippy::pub_underscore_fields,
5548        clippy::style
5549    )]
5550    const _: () = {
5551        use alloy::sol_types as alloy_sol_types;
5552        #[doc(hidden)]
5553        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5554        #[doc(hidden)]
5555        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5556        #[cfg(test)]
5557        #[allow(dead_code, unreachable_patterns)]
5558        fn _type_assertion(
5559            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5560        ) {
5561            match _t {
5562                alloy_sol_types::private::AssertTypeEq::<
5563                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5564                >(_) => {}
5565            }
5566        }
5567        #[automatically_derived]
5568        #[doc(hidden)]
5569        impl ::core::convert::From<ERC1967InvalidImplementation>
5570        for UnderlyingRustTuple<'_> {
5571            fn from(value: ERC1967InvalidImplementation) -> Self {
5572                (value.implementation,)
5573            }
5574        }
5575        #[automatically_derived]
5576        #[doc(hidden)]
5577        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5578        for ERC1967InvalidImplementation {
5579            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5580                Self { implementation: tuple.0 }
5581            }
5582        }
5583        #[automatically_derived]
5584        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5585            type Parameters<'a> = UnderlyingSolTuple<'a>;
5586            type Token<'a> = <Self::Parameters<
5587                'a,
5588            > as alloy_sol_types::SolType>::Token<'a>;
5589            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5590            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5591            #[inline]
5592            fn new<'a>(
5593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5594            ) -> Self {
5595                tuple.into()
5596            }
5597            #[inline]
5598            fn tokenize(&self) -> Self::Token<'_> {
5599                (
5600                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5601                        &self.implementation,
5602                    ),
5603                )
5604            }
5605            #[inline]
5606            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5607                <Self::Parameters<
5608                    '_,
5609                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5610                    .map(Self::new)
5611            }
5612        }
5613    };
5614    #[derive(serde::Serialize, serde::Deserialize)]
5615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5616    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5617```solidity
5618error ERC1967NonPayable();
5619```*/
5620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5621    #[derive(Clone)]
5622    pub struct ERC1967NonPayable;
5623    #[allow(
5624        non_camel_case_types,
5625        non_snake_case,
5626        clippy::pub_underscore_fields,
5627        clippy::style
5628    )]
5629    const _: () = {
5630        use alloy::sol_types as alloy_sol_types;
5631        #[doc(hidden)]
5632        type UnderlyingSolTuple<'a> = ();
5633        #[doc(hidden)]
5634        type UnderlyingRustTuple<'a> = ();
5635        #[cfg(test)]
5636        #[allow(dead_code, unreachable_patterns)]
5637        fn _type_assertion(
5638            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5639        ) {
5640            match _t {
5641                alloy_sol_types::private::AssertTypeEq::<
5642                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5643                >(_) => {}
5644            }
5645        }
5646        #[automatically_derived]
5647        #[doc(hidden)]
5648        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5649            fn from(value: ERC1967NonPayable) -> Self {
5650                ()
5651            }
5652        }
5653        #[automatically_derived]
5654        #[doc(hidden)]
5655        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5656            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5657                Self
5658            }
5659        }
5660        #[automatically_derived]
5661        impl alloy_sol_types::SolError for ERC1967NonPayable {
5662            type Parameters<'a> = UnderlyingSolTuple<'a>;
5663            type Token<'a> = <Self::Parameters<
5664                'a,
5665            > as alloy_sol_types::SolType>::Token<'a>;
5666            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5667            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5668            #[inline]
5669            fn new<'a>(
5670                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5671            ) -> Self {
5672                tuple.into()
5673            }
5674            #[inline]
5675            fn tokenize(&self) -> Self::Token<'_> {
5676                ()
5677            }
5678            #[inline]
5679            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5680                <Self::Parameters<
5681                    '_,
5682                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5683                    .map(Self::new)
5684            }
5685        }
5686    };
5687    #[derive(serde::Serialize, serde::Deserialize)]
5688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5689    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5690```solidity
5691error FailedInnerCall();
5692```*/
5693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5694    #[derive(Clone)]
5695    pub struct FailedInnerCall;
5696    #[allow(
5697        non_camel_case_types,
5698        non_snake_case,
5699        clippy::pub_underscore_fields,
5700        clippy::style
5701    )]
5702    const _: () = {
5703        use alloy::sol_types as alloy_sol_types;
5704        #[doc(hidden)]
5705        type UnderlyingSolTuple<'a> = ();
5706        #[doc(hidden)]
5707        type UnderlyingRustTuple<'a> = ();
5708        #[cfg(test)]
5709        #[allow(dead_code, unreachable_patterns)]
5710        fn _type_assertion(
5711            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5712        ) {
5713            match _t {
5714                alloy_sol_types::private::AssertTypeEq::<
5715                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5716                >(_) => {}
5717            }
5718        }
5719        #[automatically_derived]
5720        #[doc(hidden)]
5721        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5722            fn from(value: FailedInnerCall) -> Self {
5723                ()
5724            }
5725        }
5726        #[automatically_derived]
5727        #[doc(hidden)]
5728        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5729            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5730                Self
5731            }
5732        }
5733        #[automatically_derived]
5734        impl alloy_sol_types::SolError for FailedInnerCall {
5735            type Parameters<'a> = UnderlyingSolTuple<'a>;
5736            type Token<'a> = <Self::Parameters<
5737                'a,
5738            > as alloy_sol_types::SolType>::Token<'a>;
5739            const SIGNATURE: &'static str = "FailedInnerCall()";
5740            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5741            #[inline]
5742            fn new<'a>(
5743                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5744            ) -> Self {
5745                tuple.into()
5746            }
5747            #[inline]
5748            fn tokenize(&self) -> Self::Token<'_> {
5749                ()
5750            }
5751            #[inline]
5752            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5753                <Self::Parameters<
5754                    '_,
5755                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5756                    .map(Self::new)
5757            }
5758        }
5759    };
5760    #[derive(serde::Serialize, serde::Deserialize)]
5761    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5762    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5763```solidity
5764error InsufficientSnapshotHistory();
5765```*/
5766    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5767    #[derive(Clone)]
5768    pub struct InsufficientSnapshotHistory;
5769    #[allow(
5770        non_camel_case_types,
5771        non_snake_case,
5772        clippy::pub_underscore_fields,
5773        clippy::style
5774    )]
5775    const _: () = {
5776        use alloy::sol_types as alloy_sol_types;
5777        #[doc(hidden)]
5778        type UnderlyingSolTuple<'a> = ();
5779        #[doc(hidden)]
5780        type UnderlyingRustTuple<'a> = ();
5781        #[cfg(test)]
5782        #[allow(dead_code, unreachable_patterns)]
5783        fn _type_assertion(
5784            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5785        ) {
5786            match _t {
5787                alloy_sol_types::private::AssertTypeEq::<
5788                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5789                >(_) => {}
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<InsufficientSnapshotHistory>
5795        for UnderlyingRustTuple<'_> {
5796            fn from(value: InsufficientSnapshotHistory) -> Self {
5797                ()
5798            }
5799        }
5800        #[automatically_derived]
5801        #[doc(hidden)]
5802        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5803        for InsufficientSnapshotHistory {
5804            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5805                Self
5806            }
5807        }
5808        #[automatically_derived]
5809        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5810            type Parameters<'a> = UnderlyingSolTuple<'a>;
5811            type Token<'a> = <Self::Parameters<
5812                'a,
5813            > as alloy_sol_types::SolType>::Token<'a>;
5814            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5815            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5816            #[inline]
5817            fn new<'a>(
5818                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5819            ) -> Self {
5820                tuple.into()
5821            }
5822            #[inline]
5823            fn tokenize(&self) -> Self::Token<'_> {
5824                ()
5825            }
5826            #[inline]
5827            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5828                <Self::Parameters<
5829                    '_,
5830                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5831                    .map(Self::new)
5832            }
5833        }
5834    };
5835    #[derive(serde::Serialize, serde::Deserialize)]
5836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5837    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5838```solidity
5839error InvalidAddress();
5840```*/
5841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5842    #[derive(Clone)]
5843    pub struct InvalidAddress;
5844    #[allow(
5845        non_camel_case_types,
5846        non_snake_case,
5847        clippy::pub_underscore_fields,
5848        clippy::style
5849    )]
5850    const _: () = {
5851        use alloy::sol_types as alloy_sol_types;
5852        #[doc(hidden)]
5853        type UnderlyingSolTuple<'a> = ();
5854        #[doc(hidden)]
5855        type UnderlyingRustTuple<'a> = ();
5856        #[cfg(test)]
5857        #[allow(dead_code, unreachable_patterns)]
5858        fn _type_assertion(
5859            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5860        ) {
5861            match _t {
5862                alloy_sol_types::private::AssertTypeEq::<
5863                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5864                >(_) => {}
5865            }
5866        }
5867        #[automatically_derived]
5868        #[doc(hidden)]
5869        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5870            fn from(value: InvalidAddress) -> Self {
5871                ()
5872            }
5873        }
5874        #[automatically_derived]
5875        #[doc(hidden)]
5876        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5877            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5878                Self
5879            }
5880        }
5881        #[automatically_derived]
5882        impl alloy_sol_types::SolError for InvalidAddress {
5883            type Parameters<'a> = UnderlyingSolTuple<'a>;
5884            type Token<'a> = <Self::Parameters<
5885                'a,
5886            > as alloy_sol_types::SolType>::Token<'a>;
5887            const SIGNATURE: &'static str = "InvalidAddress()";
5888            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5889            #[inline]
5890            fn new<'a>(
5891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5892            ) -> Self {
5893                tuple.into()
5894            }
5895            #[inline]
5896            fn tokenize(&self) -> Self::Token<'_> {
5897                ()
5898            }
5899            #[inline]
5900            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5901                <Self::Parameters<
5902                    '_,
5903                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5904                    .map(Self::new)
5905            }
5906        }
5907    };
5908    #[derive(serde::Serialize, serde::Deserialize)]
5909    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5910    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5911```solidity
5912error InvalidArgs();
5913```*/
5914    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5915    #[derive(Clone)]
5916    pub struct InvalidArgs;
5917    #[allow(
5918        non_camel_case_types,
5919        non_snake_case,
5920        clippy::pub_underscore_fields,
5921        clippy::style
5922    )]
5923    const _: () = {
5924        use alloy::sol_types as alloy_sol_types;
5925        #[doc(hidden)]
5926        type UnderlyingSolTuple<'a> = ();
5927        #[doc(hidden)]
5928        type UnderlyingRustTuple<'a> = ();
5929        #[cfg(test)]
5930        #[allow(dead_code, unreachable_patterns)]
5931        fn _type_assertion(
5932            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5933        ) {
5934            match _t {
5935                alloy_sol_types::private::AssertTypeEq::<
5936                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5937                >(_) => {}
5938            }
5939        }
5940        #[automatically_derived]
5941        #[doc(hidden)]
5942        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5943            fn from(value: InvalidArgs) -> Self {
5944                ()
5945            }
5946        }
5947        #[automatically_derived]
5948        #[doc(hidden)]
5949        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5950            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5951                Self
5952            }
5953        }
5954        #[automatically_derived]
5955        impl alloy_sol_types::SolError for InvalidArgs {
5956            type Parameters<'a> = UnderlyingSolTuple<'a>;
5957            type Token<'a> = <Self::Parameters<
5958                'a,
5959            > as alloy_sol_types::SolType>::Token<'a>;
5960            const SIGNATURE: &'static str = "InvalidArgs()";
5961            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5962            #[inline]
5963            fn new<'a>(
5964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5965            ) -> Self {
5966                tuple.into()
5967            }
5968            #[inline]
5969            fn tokenize(&self) -> Self::Token<'_> {
5970                ()
5971            }
5972            #[inline]
5973            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5974                <Self::Parameters<
5975                    '_,
5976                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5977                    .map(Self::new)
5978            }
5979        }
5980    };
5981    #[derive(serde::Serialize, serde::Deserialize)]
5982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5983    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5984```solidity
5985error InvalidHotShotBlockForCommitmentCheck();
5986```*/
5987    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5988    #[derive(Clone)]
5989    pub struct InvalidHotShotBlockForCommitmentCheck;
5990    #[allow(
5991        non_camel_case_types,
5992        non_snake_case,
5993        clippy::pub_underscore_fields,
5994        clippy::style
5995    )]
5996    const _: () = {
5997        use alloy::sol_types as alloy_sol_types;
5998        #[doc(hidden)]
5999        type UnderlyingSolTuple<'a> = ();
6000        #[doc(hidden)]
6001        type UnderlyingRustTuple<'a> = ();
6002        #[cfg(test)]
6003        #[allow(dead_code, unreachable_patterns)]
6004        fn _type_assertion(
6005            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6006        ) {
6007            match _t {
6008                alloy_sol_types::private::AssertTypeEq::<
6009                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6010                >(_) => {}
6011            }
6012        }
6013        #[automatically_derived]
6014        #[doc(hidden)]
6015        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
6016        for UnderlyingRustTuple<'_> {
6017            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
6018                ()
6019            }
6020        }
6021        #[automatically_derived]
6022        #[doc(hidden)]
6023        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6024        for InvalidHotShotBlockForCommitmentCheck {
6025            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6026                Self
6027            }
6028        }
6029        #[automatically_derived]
6030        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
6031            type Parameters<'a> = UnderlyingSolTuple<'a>;
6032            type Token<'a> = <Self::Parameters<
6033                'a,
6034            > as alloy_sol_types::SolType>::Token<'a>;
6035            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
6036            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
6037            #[inline]
6038            fn new<'a>(
6039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6040            ) -> Self {
6041                tuple.into()
6042            }
6043            #[inline]
6044            fn tokenize(&self) -> Self::Token<'_> {
6045                ()
6046            }
6047            #[inline]
6048            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6049                <Self::Parameters<
6050                    '_,
6051                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6052                    .map(Self::new)
6053            }
6054        }
6055    };
6056    #[derive(serde::Serialize, serde::Deserialize)]
6057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6058    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
6059```solidity
6060error InvalidInitialization();
6061```*/
6062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6063    #[derive(Clone)]
6064    pub struct InvalidInitialization;
6065    #[allow(
6066        non_camel_case_types,
6067        non_snake_case,
6068        clippy::pub_underscore_fields,
6069        clippy::style
6070    )]
6071    const _: () = {
6072        use alloy::sol_types as alloy_sol_types;
6073        #[doc(hidden)]
6074        type UnderlyingSolTuple<'a> = ();
6075        #[doc(hidden)]
6076        type UnderlyingRustTuple<'a> = ();
6077        #[cfg(test)]
6078        #[allow(dead_code, unreachable_patterns)]
6079        fn _type_assertion(
6080            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6081        ) {
6082            match _t {
6083                alloy_sol_types::private::AssertTypeEq::<
6084                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6085                >(_) => {}
6086            }
6087        }
6088        #[automatically_derived]
6089        #[doc(hidden)]
6090        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
6091            fn from(value: InvalidInitialization) -> Self {
6092                ()
6093            }
6094        }
6095        #[automatically_derived]
6096        #[doc(hidden)]
6097        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
6098            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6099                Self
6100            }
6101        }
6102        #[automatically_derived]
6103        impl alloy_sol_types::SolError for InvalidInitialization {
6104            type Parameters<'a> = UnderlyingSolTuple<'a>;
6105            type Token<'a> = <Self::Parameters<
6106                'a,
6107            > as alloy_sol_types::SolType>::Token<'a>;
6108            const SIGNATURE: &'static str = "InvalidInitialization()";
6109            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
6110            #[inline]
6111            fn new<'a>(
6112                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6113            ) -> Self {
6114                tuple.into()
6115            }
6116            #[inline]
6117            fn tokenize(&self) -> Self::Token<'_> {
6118                ()
6119            }
6120            #[inline]
6121            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6122                <Self::Parameters<
6123                    '_,
6124                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6125                    .map(Self::new)
6126            }
6127        }
6128    };
6129    #[derive(serde::Serialize, serde::Deserialize)]
6130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6131    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
6132```solidity
6133error InvalidMaxStateHistory();
6134```*/
6135    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6136    #[derive(Clone)]
6137    pub struct InvalidMaxStateHistory;
6138    #[allow(
6139        non_camel_case_types,
6140        non_snake_case,
6141        clippy::pub_underscore_fields,
6142        clippy::style
6143    )]
6144    const _: () = {
6145        use alloy::sol_types as alloy_sol_types;
6146        #[doc(hidden)]
6147        type UnderlyingSolTuple<'a> = ();
6148        #[doc(hidden)]
6149        type UnderlyingRustTuple<'a> = ();
6150        #[cfg(test)]
6151        #[allow(dead_code, unreachable_patterns)]
6152        fn _type_assertion(
6153            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6154        ) {
6155            match _t {
6156                alloy_sol_types::private::AssertTypeEq::<
6157                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6158                >(_) => {}
6159            }
6160        }
6161        #[automatically_derived]
6162        #[doc(hidden)]
6163        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
6164            fn from(value: InvalidMaxStateHistory) -> Self {
6165                ()
6166            }
6167        }
6168        #[automatically_derived]
6169        #[doc(hidden)]
6170        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
6171            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6172                Self
6173            }
6174        }
6175        #[automatically_derived]
6176        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
6177            type Parameters<'a> = UnderlyingSolTuple<'a>;
6178            type Token<'a> = <Self::Parameters<
6179                'a,
6180            > as alloy_sol_types::SolType>::Token<'a>;
6181            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
6182            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
6183            #[inline]
6184            fn new<'a>(
6185                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6186            ) -> Self {
6187                tuple.into()
6188            }
6189            #[inline]
6190            fn tokenize(&self) -> Self::Token<'_> {
6191                ()
6192            }
6193            #[inline]
6194            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6195                <Self::Parameters<
6196                    '_,
6197                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6198                    .map(Self::new)
6199            }
6200        }
6201    };
6202    #[derive(serde::Serialize, serde::Deserialize)]
6203    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6204    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
6205```solidity
6206error InvalidProof();
6207```*/
6208    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6209    #[derive(Clone)]
6210    pub struct InvalidProof;
6211    #[allow(
6212        non_camel_case_types,
6213        non_snake_case,
6214        clippy::pub_underscore_fields,
6215        clippy::style
6216    )]
6217    const _: () = {
6218        use alloy::sol_types as alloy_sol_types;
6219        #[doc(hidden)]
6220        type UnderlyingSolTuple<'a> = ();
6221        #[doc(hidden)]
6222        type UnderlyingRustTuple<'a> = ();
6223        #[cfg(test)]
6224        #[allow(dead_code, unreachable_patterns)]
6225        fn _type_assertion(
6226            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6227        ) {
6228            match _t {
6229                alloy_sol_types::private::AssertTypeEq::<
6230                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6231                >(_) => {}
6232            }
6233        }
6234        #[automatically_derived]
6235        #[doc(hidden)]
6236        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
6237            fn from(value: InvalidProof) -> Self {
6238                ()
6239            }
6240        }
6241        #[automatically_derived]
6242        #[doc(hidden)]
6243        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
6244            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6245                Self
6246            }
6247        }
6248        #[automatically_derived]
6249        impl alloy_sol_types::SolError for InvalidProof {
6250            type Parameters<'a> = UnderlyingSolTuple<'a>;
6251            type Token<'a> = <Self::Parameters<
6252                'a,
6253            > as alloy_sol_types::SolType>::Token<'a>;
6254            const SIGNATURE: &'static str = "InvalidProof()";
6255            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
6256            #[inline]
6257            fn new<'a>(
6258                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6259            ) -> Self {
6260                tuple.into()
6261            }
6262            #[inline]
6263            fn tokenize(&self) -> Self::Token<'_> {
6264                ()
6265            }
6266            #[inline]
6267            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6268                <Self::Parameters<
6269                    '_,
6270                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6271                    .map(Self::new)
6272            }
6273        }
6274    };
6275    #[derive(serde::Serialize, serde::Deserialize)]
6276    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6277    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
6278```solidity
6279error InvalidScalar();
6280```*/
6281    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6282    #[derive(Clone)]
6283    pub struct InvalidScalar;
6284    #[allow(
6285        non_camel_case_types,
6286        non_snake_case,
6287        clippy::pub_underscore_fields,
6288        clippy::style
6289    )]
6290    const _: () = {
6291        use alloy::sol_types as alloy_sol_types;
6292        #[doc(hidden)]
6293        type UnderlyingSolTuple<'a> = ();
6294        #[doc(hidden)]
6295        type UnderlyingRustTuple<'a> = ();
6296        #[cfg(test)]
6297        #[allow(dead_code, unreachable_patterns)]
6298        fn _type_assertion(
6299            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6300        ) {
6301            match _t {
6302                alloy_sol_types::private::AssertTypeEq::<
6303                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6304                >(_) => {}
6305            }
6306        }
6307        #[automatically_derived]
6308        #[doc(hidden)]
6309        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
6310            fn from(value: InvalidScalar) -> Self {
6311                ()
6312            }
6313        }
6314        #[automatically_derived]
6315        #[doc(hidden)]
6316        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
6317            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6318                Self
6319            }
6320        }
6321        #[automatically_derived]
6322        impl alloy_sol_types::SolError for InvalidScalar {
6323            type Parameters<'a> = UnderlyingSolTuple<'a>;
6324            type Token<'a> = <Self::Parameters<
6325                'a,
6326            > as alloy_sol_types::SolType>::Token<'a>;
6327            const SIGNATURE: &'static str = "InvalidScalar()";
6328            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
6329            #[inline]
6330            fn new<'a>(
6331                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6332            ) -> Self {
6333                tuple.into()
6334            }
6335            #[inline]
6336            fn tokenize(&self) -> Self::Token<'_> {
6337                ()
6338            }
6339            #[inline]
6340            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6341                <Self::Parameters<
6342                    '_,
6343                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6344                    .map(Self::new)
6345            }
6346        }
6347    };
6348    #[derive(serde::Serialize, serde::Deserialize)]
6349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6350    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
6351```solidity
6352error MissingEpochRootUpdate();
6353```*/
6354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6355    #[derive(Clone)]
6356    pub struct MissingEpochRootUpdate;
6357    #[allow(
6358        non_camel_case_types,
6359        non_snake_case,
6360        clippy::pub_underscore_fields,
6361        clippy::style
6362    )]
6363    const _: () = {
6364        use alloy::sol_types as alloy_sol_types;
6365        #[doc(hidden)]
6366        type UnderlyingSolTuple<'a> = ();
6367        #[doc(hidden)]
6368        type UnderlyingRustTuple<'a> = ();
6369        #[cfg(test)]
6370        #[allow(dead_code, unreachable_patterns)]
6371        fn _type_assertion(
6372            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6373        ) {
6374            match _t {
6375                alloy_sol_types::private::AssertTypeEq::<
6376                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6377                >(_) => {}
6378            }
6379        }
6380        #[automatically_derived]
6381        #[doc(hidden)]
6382        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
6383            fn from(value: MissingEpochRootUpdate) -> Self {
6384                ()
6385            }
6386        }
6387        #[automatically_derived]
6388        #[doc(hidden)]
6389        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
6390            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6391                Self
6392            }
6393        }
6394        #[automatically_derived]
6395        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
6396            type Parameters<'a> = UnderlyingSolTuple<'a>;
6397            type Token<'a> = <Self::Parameters<
6398                'a,
6399            > as alloy_sol_types::SolType>::Token<'a>;
6400            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
6401            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
6402            #[inline]
6403            fn new<'a>(
6404                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6405            ) -> Self {
6406                tuple.into()
6407            }
6408            #[inline]
6409            fn tokenize(&self) -> Self::Token<'_> {
6410                ()
6411            }
6412            #[inline]
6413            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6414                <Self::Parameters<
6415                    '_,
6416                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6417                    .map(Self::new)
6418            }
6419        }
6420    };
6421    #[derive(serde::Serialize, serde::Deserialize)]
6422    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6423    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
6424```solidity
6425error NoChangeRequired();
6426```*/
6427    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6428    #[derive(Clone)]
6429    pub struct NoChangeRequired;
6430    #[allow(
6431        non_camel_case_types,
6432        non_snake_case,
6433        clippy::pub_underscore_fields,
6434        clippy::style
6435    )]
6436    const _: () = {
6437        use alloy::sol_types as alloy_sol_types;
6438        #[doc(hidden)]
6439        type UnderlyingSolTuple<'a> = ();
6440        #[doc(hidden)]
6441        type UnderlyingRustTuple<'a> = ();
6442        #[cfg(test)]
6443        #[allow(dead_code, unreachable_patterns)]
6444        fn _type_assertion(
6445            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6446        ) {
6447            match _t {
6448                alloy_sol_types::private::AssertTypeEq::<
6449                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6450                >(_) => {}
6451            }
6452        }
6453        #[automatically_derived]
6454        #[doc(hidden)]
6455        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6456            fn from(value: NoChangeRequired) -> Self {
6457                ()
6458            }
6459        }
6460        #[automatically_derived]
6461        #[doc(hidden)]
6462        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6463            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6464                Self
6465            }
6466        }
6467        #[automatically_derived]
6468        impl alloy_sol_types::SolError for NoChangeRequired {
6469            type Parameters<'a> = UnderlyingSolTuple<'a>;
6470            type Token<'a> = <Self::Parameters<
6471                'a,
6472            > as alloy_sol_types::SolType>::Token<'a>;
6473            const SIGNATURE: &'static str = "NoChangeRequired()";
6474            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6475            #[inline]
6476            fn new<'a>(
6477                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6478            ) -> Self {
6479                tuple.into()
6480            }
6481            #[inline]
6482            fn tokenize(&self) -> Self::Token<'_> {
6483                ()
6484            }
6485            #[inline]
6486            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6487                <Self::Parameters<
6488                    '_,
6489                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6490                    .map(Self::new)
6491            }
6492        }
6493    };
6494    #[derive(serde::Serialize, serde::Deserialize)]
6495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6496    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6497```solidity
6498error NotInitializing();
6499```*/
6500    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6501    #[derive(Clone)]
6502    pub struct NotInitializing;
6503    #[allow(
6504        non_camel_case_types,
6505        non_snake_case,
6506        clippy::pub_underscore_fields,
6507        clippy::style
6508    )]
6509    const _: () = {
6510        use alloy::sol_types as alloy_sol_types;
6511        #[doc(hidden)]
6512        type UnderlyingSolTuple<'a> = ();
6513        #[doc(hidden)]
6514        type UnderlyingRustTuple<'a> = ();
6515        #[cfg(test)]
6516        #[allow(dead_code, unreachable_patterns)]
6517        fn _type_assertion(
6518            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6519        ) {
6520            match _t {
6521                alloy_sol_types::private::AssertTypeEq::<
6522                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6523                >(_) => {}
6524            }
6525        }
6526        #[automatically_derived]
6527        #[doc(hidden)]
6528        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6529            fn from(value: NotInitializing) -> Self {
6530                ()
6531            }
6532        }
6533        #[automatically_derived]
6534        #[doc(hidden)]
6535        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6536            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6537                Self
6538            }
6539        }
6540        #[automatically_derived]
6541        impl alloy_sol_types::SolError for NotInitializing {
6542            type Parameters<'a> = UnderlyingSolTuple<'a>;
6543            type Token<'a> = <Self::Parameters<
6544                'a,
6545            > as alloy_sol_types::SolType>::Token<'a>;
6546            const SIGNATURE: &'static str = "NotInitializing()";
6547            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6548            #[inline]
6549            fn new<'a>(
6550                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6551            ) -> Self {
6552                tuple.into()
6553            }
6554            #[inline]
6555            fn tokenize(&self) -> Self::Token<'_> {
6556                ()
6557            }
6558            #[inline]
6559            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6560                <Self::Parameters<
6561                    '_,
6562                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6563                    .map(Self::new)
6564            }
6565        }
6566    };
6567    #[derive(serde::Serialize, serde::Deserialize)]
6568    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6569    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6570```solidity
6571error OutdatedState();
6572```*/
6573    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6574    #[derive(Clone)]
6575    pub struct OutdatedState;
6576    #[allow(
6577        non_camel_case_types,
6578        non_snake_case,
6579        clippy::pub_underscore_fields,
6580        clippy::style
6581    )]
6582    const _: () = {
6583        use alloy::sol_types as alloy_sol_types;
6584        #[doc(hidden)]
6585        type UnderlyingSolTuple<'a> = ();
6586        #[doc(hidden)]
6587        type UnderlyingRustTuple<'a> = ();
6588        #[cfg(test)]
6589        #[allow(dead_code, unreachable_patterns)]
6590        fn _type_assertion(
6591            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6592        ) {
6593            match _t {
6594                alloy_sol_types::private::AssertTypeEq::<
6595                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6596                >(_) => {}
6597            }
6598        }
6599        #[automatically_derived]
6600        #[doc(hidden)]
6601        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6602            fn from(value: OutdatedState) -> Self {
6603                ()
6604            }
6605        }
6606        #[automatically_derived]
6607        #[doc(hidden)]
6608        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6609            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6610                Self
6611            }
6612        }
6613        #[automatically_derived]
6614        impl alloy_sol_types::SolError for OutdatedState {
6615            type Parameters<'a> = UnderlyingSolTuple<'a>;
6616            type Token<'a> = <Self::Parameters<
6617                'a,
6618            > as alloy_sol_types::SolType>::Token<'a>;
6619            const SIGNATURE: &'static str = "OutdatedState()";
6620            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6621            #[inline]
6622            fn new<'a>(
6623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6624            ) -> Self {
6625                tuple.into()
6626            }
6627            #[inline]
6628            fn tokenize(&self) -> Self::Token<'_> {
6629                ()
6630            }
6631            #[inline]
6632            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6633                <Self::Parameters<
6634                    '_,
6635                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6636                    .map(Self::new)
6637            }
6638        }
6639    };
6640    #[derive(serde::Serialize, serde::Deserialize)]
6641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6642    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6643```solidity
6644error OwnableInvalidOwner(address owner);
6645```*/
6646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6647    #[derive(Clone)]
6648    pub struct OwnableInvalidOwner {
6649        #[allow(missing_docs)]
6650        pub owner: alloy::sol_types::private::Address,
6651    }
6652    #[allow(
6653        non_camel_case_types,
6654        non_snake_case,
6655        clippy::pub_underscore_fields,
6656        clippy::style
6657    )]
6658    const _: () = {
6659        use alloy::sol_types as alloy_sol_types;
6660        #[doc(hidden)]
6661        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6662        #[doc(hidden)]
6663        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6664        #[cfg(test)]
6665        #[allow(dead_code, unreachable_patterns)]
6666        fn _type_assertion(
6667            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6668        ) {
6669            match _t {
6670                alloy_sol_types::private::AssertTypeEq::<
6671                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6672                >(_) => {}
6673            }
6674        }
6675        #[automatically_derived]
6676        #[doc(hidden)]
6677        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6678            fn from(value: OwnableInvalidOwner) -> Self {
6679                (value.owner,)
6680            }
6681        }
6682        #[automatically_derived]
6683        #[doc(hidden)]
6684        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6685            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6686                Self { owner: tuple.0 }
6687            }
6688        }
6689        #[automatically_derived]
6690        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6691            type Parameters<'a> = UnderlyingSolTuple<'a>;
6692            type Token<'a> = <Self::Parameters<
6693                'a,
6694            > as alloy_sol_types::SolType>::Token<'a>;
6695            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6696            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6697            #[inline]
6698            fn new<'a>(
6699                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6700            ) -> Self {
6701                tuple.into()
6702            }
6703            #[inline]
6704            fn tokenize(&self) -> Self::Token<'_> {
6705                (
6706                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6707                        &self.owner,
6708                    ),
6709                )
6710            }
6711            #[inline]
6712            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6713                <Self::Parameters<
6714                    '_,
6715                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6716                    .map(Self::new)
6717            }
6718        }
6719    };
6720    #[derive(serde::Serialize, serde::Deserialize)]
6721    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6722    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6723```solidity
6724error OwnableUnauthorizedAccount(address account);
6725```*/
6726    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6727    #[derive(Clone)]
6728    pub struct OwnableUnauthorizedAccount {
6729        #[allow(missing_docs)]
6730        pub account: alloy::sol_types::private::Address,
6731    }
6732    #[allow(
6733        non_camel_case_types,
6734        non_snake_case,
6735        clippy::pub_underscore_fields,
6736        clippy::style
6737    )]
6738    const _: () = {
6739        use alloy::sol_types as alloy_sol_types;
6740        #[doc(hidden)]
6741        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6742        #[doc(hidden)]
6743        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6744        #[cfg(test)]
6745        #[allow(dead_code, unreachable_patterns)]
6746        fn _type_assertion(
6747            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6748        ) {
6749            match _t {
6750                alloy_sol_types::private::AssertTypeEq::<
6751                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6752                >(_) => {}
6753            }
6754        }
6755        #[automatically_derived]
6756        #[doc(hidden)]
6757        impl ::core::convert::From<OwnableUnauthorizedAccount>
6758        for UnderlyingRustTuple<'_> {
6759            fn from(value: OwnableUnauthorizedAccount) -> Self {
6760                (value.account,)
6761            }
6762        }
6763        #[automatically_derived]
6764        #[doc(hidden)]
6765        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6766        for OwnableUnauthorizedAccount {
6767            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6768                Self { account: tuple.0 }
6769            }
6770        }
6771        #[automatically_derived]
6772        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6773            type Parameters<'a> = UnderlyingSolTuple<'a>;
6774            type Token<'a> = <Self::Parameters<
6775                'a,
6776            > as alloy_sol_types::SolType>::Token<'a>;
6777            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6778            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6779            #[inline]
6780            fn new<'a>(
6781                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6782            ) -> Self {
6783                tuple.into()
6784            }
6785            #[inline]
6786            fn tokenize(&self) -> Self::Token<'_> {
6787                (
6788                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6789                        &self.account,
6790                    ),
6791                )
6792            }
6793            #[inline]
6794            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6795                <Self::Parameters<
6796                    '_,
6797                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6798                    .map(Self::new)
6799            }
6800        }
6801    };
6802    #[derive(serde::Serialize, serde::Deserialize)]
6803    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6804    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6805```solidity
6806error OwnershipCannotBeRenounced();
6807```*/
6808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6809    #[derive(Clone)]
6810    pub struct OwnershipCannotBeRenounced;
6811    #[allow(
6812        non_camel_case_types,
6813        non_snake_case,
6814        clippy::pub_underscore_fields,
6815        clippy::style
6816    )]
6817    const _: () = {
6818        use alloy::sol_types as alloy_sol_types;
6819        #[doc(hidden)]
6820        type UnderlyingSolTuple<'a> = ();
6821        #[doc(hidden)]
6822        type UnderlyingRustTuple<'a> = ();
6823        #[cfg(test)]
6824        #[allow(dead_code, unreachable_patterns)]
6825        fn _type_assertion(
6826            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6827        ) {
6828            match _t {
6829                alloy_sol_types::private::AssertTypeEq::<
6830                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6831                >(_) => {}
6832            }
6833        }
6834        #[automatically_derived]
6835        #[doc(hidden)]
6836        impl ::core::convert::From<OwnershipCannotBeRenounced>
6837        for UnderlyingRustTuple<'_> {
6838            fn from(value: OwnershipCannotBeRenounced) -> Self {
6839                ()
6840            }
6841        }
6842        #[automatically_derived]
6843        #[doc(hidden)]
6844        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6845        for OwnershipCannotBeRenounced {
6846            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6847                Self
6848            }
6849        }
6850        #[automatically_derived]
6851        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6852            type Parameters<'a> = UnderlyingSolTuple<'a>;
6853            type Token<'a> = <Self::Parameters<
6854                'a,
6855            > as alloy_sol_types::SolType>::Token<'a>;
6856            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6857            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6858            #[inline]
6859            fn new<'a>(
6860                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6861            ) -> Self {
6862                tuple.into()
6863            }
6864            #[inline]
6865            fn tokenize(&self) -> Self::Token<'_> {
6866                ()
6867            }
6868            #[inline]
6869            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6870                <Self::Parameters<
6871                    '_,
6872                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6873                    .map(Self::new)
6874            }
6875        }
6876    };
6877    #[derive(serde::Serialize, serde::Deserialize)]
6878    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6879    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6880```solidity
6881error ProverNotPermissioned();
6882```*/
6883    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6884    #[derive(Clone)]
6885    pub struct ProverNotPermissioned;
6886    #[allow(
6887        non_camel_case_types,
6888        non_snake_case,
6889        clippy::pub_underscore_fields,
6890        clippy::style
6891    )]
6892    const _: () = {
6893        use alloy::sol_types as alloy_sol_types;
6894        #[doc(hidden)]
6895        type UnderlyingSolTuple<'a> = ();
6896        #[doc(hidden)]
6897        type UnderlyingRustTuple<'a> = ();
6898        #[cfg(test)]
6899        #[allow(dead_code, unreachable_patterns)]
6900        fn _type_assertion(
6901            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6902        ) {
6903            match _t {
6904                alloy_sol_types::private::AssertTypeEq::<
6905                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6906                >(_) => {}
6907            }
6908        }
6909        #[automatically_derived]
6910        #[doc(hidden)]
6911        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6912            fn from(value: ProverNotPermissioned) -> Self {
6913                ()
6914            }
6915        }
6916        #[automatically_derived]
6917        #[doc(hidden)]
6918        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6919            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6920                Self
6921            }
6922        }
6923        #[automatically_derived]
6924        impl alloy_sol_types::SolError for ProverNotPermissioned {
6925            type Parameters<'a> = UnderlyingSolTuple<'a>;
6926            type Token<'a> = <Self::Parameters<
6927                'a,
6928            > as alloy_sol_types::SolType>::Token<'a>;
6929            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6930            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6931            #[inline]
6932            fn new<'a>(
6933                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6934            ) -> Self {
6935                tuple.into()
6936            }
6937            #[inline]
6938            fn tokenize(&self) -> Self::Token<'_> {
6939                ()
6940            }
6941            #[inline]
6942            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6943                <Self::Parameters<
6944                    '_,
6945                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6946                    .map(Self::new)
6947            }
6948        }
6949    };
6950    #[derive(serde::Serialize, serde::Deserialize)]
6951    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6952    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6953```solidity
6954error UUPSUnauthorizedCallContext();
6955```*/
6956    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6957    #[derive(Clone)]
6958    pub struct UUPSUnauthorizedCallContext;
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        #[doc(hidden)]
6968        type UnderlyingSolTuple<'a> = ();
6969        #[doc(hidden)]
6970        type UnderlyingRustTuple<'a> = ();
6971        #[cfg(test)]
6972        #[allow(dead_code, unreachable_patterns)]
6973        fn _type_assertion(
6974            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6975        ) {
6976            match _t {
6977                alloy_sol_types::private::AssertTypeEq::<
6978                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6979                >(_) => {}
6980            }
6981        }
6982        #[automatically_derived]
6983        #[doc(hidden)]
6984        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6985        for UnderlyingRustTuple<'_> {
6986            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6987                ()
6988            }
6989        }
6990        #[automatically_derived]
6991        #[doc(hidden)]
6992        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6993        for UUPSUnauthorizedCallContext {
6994            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6995                Self
6996            }
6997        }
6998        #[automatically_derived]
6999        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
7000            type Parameters<'a> = UnderlyingSolTuple<'a>;
7001            type Token<'a> = <Self::Parameters<
7002                'a,
7003            > as alloy_sol_types::SolType>::Token<'a>;
7004            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
7005            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
7006            #[inline]
7007            fn new<'a>(
7008                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7009            ) -> Self {
7010                tuple.into()
7011            }
7012            #[inline]
7013            fn tokenize(&self) -> Self::Token<'_> {
7014                ()
7015            }
7016            #[inline]
7017            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7018                <Self::Parameters<
7019                    '_,
7020                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7021                    .map(Self::new)
7022            }
7023        }
7024    };
7025    #[derive(serde::Serialize, serde::Deserialize)]
7026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7027    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
7028```solidity
7029error UUPSUnsupportedProxiableUUID(bytes32 slot);
7030```*/
7031    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7032    #[derive(Clone)]
7033    pub struct UUPSUnsupportedProxiableUUID {
7034        #[allow(missing_docs)]
7035        pub slot: alloy::sol_types::private::FixedBytes<32>,
7036    }
7037    #[allow(
7038        non_camel_case_types,
7039        non_snake_case,
7040        clippy::pub_underscore_fields,
7041        clippy::style
7042    )]
7043    const _: () = {
7044        use alloy::sol_types as alloy_sol_types;
7045        #[doc(hidden)]
7046        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
7047        #[doc(hidden)]
7048        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
7049        #[cfg(test)]
7050        #[allow(dead_code, unreachable_patterns)]
7051        fn _type_assertion(
7052            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7053        ) {
7054            match _t {
7055                alloy_sol_types::private::AssertTypeEq::<
7056                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7057                >(_) => {}
7058            }
7059        }
7060        #[automatically_derived]
7061        #[doc(hidden)]
7062        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
7063        for UnderlyingRustTuple<'_> {
7064            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
7065                (value.slot,)
7066            }
7067        }
7068        #[automatically_derived]
7069        #[doc(hidden)]
7070        impl ::core::convert::From<UnderlyingRustTuple<'_>>
7071        for UUPSUnsupportedProxiableUUID {
7072            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7073                Self { slot: tuple.0 }
7074            }
7075        }
7076        #[automatically_derived]
7077        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
7078            type Parameters<'a> = UnderlyingSolTuple<'a>;
7079            type Token<'a> = <Self::Parameters<
7080                'a,
7081            > as alloy_sol_types::SolType>::Token<'a>;
7082            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
7083            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
7084            #[inline]
7085            fn new<'a>(
7086                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7087            ) -> Self {
7088                tuple.into()
7089            }
7090            #[inline]
7091            fn tokenize(&self) -> Self::Token<'_> {
7092                (
7093                    <alloy::sol_types::sol_data::FixedBytes<
7094                        32,
7095                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
7096                )
7097            }
7098            #[inline]
7099            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7100                <Self::Parameters<
7101                    '_,
7102                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7103                    .map(Self::new)
7104            }
7105        }
7106    };
7107    #[derive(serde::Serialize, serde::Deserialize)]
7108    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7109    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
7110```solidity
7111error WrongStakeTableUsed();
7112```*/
7113    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7114    #[derive(Clone)]
7115    pub struct WrongStakeTableUsed;
7116    #[allow(
7117        non_camel_case_types,
7118        non_snake_case,
7119        clippy::pub_underscore_fields,
7120        clippy::style
7121    )]
7122    const _: () = {
7123        use alloy::sol_types as alloy_sol_types;
7124        #[doc(hidden)]
7125        type UnderlyingSolTuple<'a> = ();
7126        #[doc(hidden)]
7127        type UnderlyingRustTuple<'a> = ();
7128        #[cfg(test)]
7129        #[allow(dead_code, unreachable_patterns)]
7130        fn _type_assertion(
7131            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7132        ) {
7133            match _t {
7134                alloy_sol_types::private::AssertTypeEq::<
7135                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7136                >(_) => {}
7137            }
7138        }
7139        #[automatically_derived]
7140        #[doc(hidden)]
7141        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
7142            fn from(value: WrongStakeTableUsed) -> Self {
7143                ()
7144            }
7145        }
7146        #[automatically_derived]
7147        #[doc(hidden)]
7148        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
7149            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7150                Self
7151            }
7152        }
7153        #[automatically_derived]
7154        impl alloy_sol_types::SolError for WrongStakeTableUsed {
7155            type Parameters<'a> = UnderlyingSolTuple<'a>;
7156            type Token<'a> = <Self::Parameters<
7157                'a,
7158            > as alloy_sol_types::SolType>::Token<'a>;
7159            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
7160            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
7161            #[inline]
7162            fn new<'a>(
7163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7164            ) -> Self {
7165                tuple.into()
7166            }
7167            #[inline]
7168            fn tokenize(&self) -> Self::Token<'_> {
7169                ()
7170            }
7171            #[inline]
7172            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
7173                <Self::Parameters<
7174                    '_,
7175                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7176                    .map(Self::new)
7177            }
7178        }
7179    };
7180    #[derive(serde::Serialize, serde::Deserialize)]
7181    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7182    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
7183```solidity
7184event Initialized(uint64 version);
7185```*/
7186    #[allow(
7187        non_camel_case_types,
7188        non_snake_case,
7189        clippy::pub_underscore_fields,
7190        clippy::style
7191    )]
7192    #[derive(Clone)]
7193    pub struct Initialized {
7194        #[allow(missing_docs)]
7195        pub version: u64,
7196    }
7197    #[allow(
7198        non_camel_case_types,
7199        non_snake_case,
7200        clippy::pub_underscore_fields,
7201        clippy::style
7202    )]
7203    const _: () = {
7204        use alloy::sol_types as alloy_sol_types;
7205        #[automatically_derived]
7206        impl alloy_sol_types::SolEvent for Initialized {
7207            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7208            type DataToken<'a> = <Self::DataTuple<
7209                'a,
7210            > as alloy_sol_types::SolType>::Token<'a>;
7211            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7212            const SIGNATURE: &'static str = "Initialized(uint64)";
7213            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7214                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
7215                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
7216                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
7217            ]);
7218            const ANONYMOUS: bool = false;
7219            #[allow(unused_variables)]
7220            #[inline]
7221            fn new(
7222                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7223                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7224            ) -> Self {
7225                Self { version: data.0 }
7226            }
7227            #[inline]
7228            fn check_signature(
7229                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7230            ) -> alloy_sol_types::Result<()> {
7231                if topics.0 != Self::SIGNATURE_HASH {
7232                    return Err(
7233                        alloy_sol_types::Error::invalid_event_signature_hash(
7234                            Self::SIGNATURE,
7235                            topics.0,
7236                            Self::SIGNATURE_HASH,
7237                        ),
7238                    );
7239                }
7240                Ok(())
7241            }
7242            #[inline]
7243            fn tokenize_body(&self) -> Self::DataToken<'_> {
7244                (
7245                    <alloy::sol_types::sol_data::Uint<
7246                        64,
7247                    > as alloy_sol_types::SolType>::tokenize(&self.version),
7248                )
7249            }
7250            #[inline]
7251            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7252                (Self::SIGNATURE_HASH.into(),)
7253            }
7254            #[inline]
7255            fn encode_topics_raw(
7256                &self,
7257                out: &mut [alloy_sol_types::abi::token::WordToken],
7258            ) -> alloy_sol_types::Result<()> {
7259                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7260                    return Err(alloy_sol_types::Error::Overrun);
7261                }
7262                out[0usize] = alloy_sol_types::abi::token::WordToken(
7263                    Self::SIGNATURE_HASH,
7264                );
7265                Ok(())
7266            }
7267        }
7268        #[automatically_derived]
7269        impl alloy_sol_types::private::IntoLogData for Initialized {
7270            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7271                From::from(self)
7272            }
7273            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7274                From::from(&self)
7275            }
7276        }
7277        #[automatically_derived]
7278        impl From<&Initialized> for alloy_sol_types::private::LogData {
7279            #[inline]
7280            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
7281                alloy_sol_types::SolEvent::encode_log_data(this)
7282            }
7283        }
7284    };
7285    #[derive(serde::Serialize, serde::Deserialize)]
7286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7287    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
7288```solidity
7289event NewEpoch(uint64 epoch);
7290```*/
7291    #[allow(
7292        non_camel_case_types,
7293        non_snake_case,
7294        clippy::pub_underscore_fields,
7295        clippy::style
7296    )]
7297    #[derive(Clone)]
7298    pub struct NewEpoch {
7299        #[allow(missing_docs)]
7300        pub epoch: u64,
7301    }
7302    #[allow(
7303        non_camel_case_types,
7304        non_snake_case,
7305        clippy::pub_underscore_fields,
7306        clippy::style
7307    )]
7308    const _: () = {
7309        use alloy::sol_types as alloy_sol_types;
7310        #[automatically_derived]
7311        impl alloy_sol_types::SolEvent for NewEpoch {
7312            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7313            type DataToken<'a> = <Self::DataTuple<
7314                'a,
7315            > as alloy_sol_types::SolType>::Token<'a>;
7316            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7317            const SIGNATURE: &'static str = "NewEpoch(uint64)";
7318            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7319                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
7320                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
7321                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
7322            ]);
7323            const ANONYMOUS: bool = false;
7324            #[allow(unused_variables)]
7325            #[inline]
7326            fn new(
7327                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7328                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7329            ) -> Self {
7330                Self { epoch: data.0 }
7331            }
7332            #[inline]
7333            fn check_signature(
7334                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7335            ) -> alloy_sol_types::Result<()> {
7336                if topics.0 != Self::SIGNATURE_HASH {
7337                    return Err(
7338                        alloy_sol_types::Error::invalid_event_signature_hash(
7339                            Self::SIGNATURE,
7340                            topics.0,
7341                            Self::SIGNATURE_HASH,
7342                        ),
7343                    );
7344                }
7345                Ok(())
7346            }
7347            #[inline]
7348            fn tokenize_body(&self) -> Self::DataToken<'_> {
7349                (
7350                    <alloy::sol_types::sol_data::Uint<
7351                        64,
7352                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
7353                )
7354            }
7355            #[inline]
7356            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7357                (Self::SIGNATURE_HASH.into(),)
7358            }
7359            #[inline]
7360            fn encode_topics_raw(
7361                &self,
7362                out: &mut [alloy_sol_types::abi::token::WordToken],
7363            ) -> alloy_sol_types::Result<()> {
7364                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7365                    return Err(alloy_sol_types::Error::Overrun);
7366                }
7367                out[0usize] = alloy_sol_types::abi::token::WordToken(
7368                    Self::SIGNATURE_HASH,
7369                );
7370                Ok(())
7371            }
7372        }
7373        #[automatically_derived]
7374        impl alloy_sol_types::private::IntoLogData for NewEpoch {
7375            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7376                From::from(self)
7377            }
7378            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7379                From::from(&self)
7380            }
7381        }
7382        #[automatically_derived]
7383        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
7384            #[inline]
7385            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
7386                alloy_sol_types::SolEvent::encode_log_data(this)
7387            }
7388        }
7389    };
7390    #[derive(serde::Serialize, serde::Deserialize)]
7391    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7392    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
7393```solidity
7394event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
7395```*/
7396    #[allow(
7397        non_camel_case_types,
7398        non_snake_case,
7399        clippy::pub_underscore_fields,
7400        clippy::style
7401    )]
7402    #[derive(Clone)]
7403    pub struct NewState {
7404        #[allow(missing_docs)]
7405        pub viewNum: u64,
7406        #[allow(missing_docs)]
7407        pub blockHeight: u64,
7408        #[allow(missing_docs)]
7409        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7410    }
7411    #[allow(
7412        non_camel_case_types,
7413        non_snake_case,
7414        clippy::pub_underscore_fields,
7415        clippy::style
7416    )]
7417    const _: () = {
7418        use alloy::sol_types as alloy_sol_types;
7419        #[automatically_derived]
7420        impl alloy_sol_types::SolEvent for NewState {
7421            type DataTuple<'a> = (BN254::ScalarField,);
7422            type DataToken<'a> = <Self::DataTuple<
7423                'a,
7424            > as alloy_sol_types::SolType>::Token<'a>;
7425            type TopicList = (
7426                alloy_sol_types::sol_data::FixedBytes<32>,
7427                alloy::sol_types::sol_data::Uint<64>,
7428                alloy::sol_types::sol_data::Uint<64>,
7429            );
7430            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7431            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7432                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7433                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7434                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7435            ]);
7436            const ANONYMOUS: bool = false;
7437            #[allow(unused_variables)]
7438            #[inline]
7439            fn new(
7440                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7441                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7442            ) -> Self {
7443                Self {
7444                    viewNum: topics.1,
7445                    blockHeight: topics.2,
7446                    blockCommRoot: data.0,
7447                }
7448            }
7449            #[inline]
7450            fn check_signature(
7451                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7452            ) -> alloy_sol_types::Result<()> {
7453                if topics.0 != Self::SIGNATURE_HASH {
7454                    return Err(
7455                        alloy_sol_types::Error::invalid_event_signature_hash(
7456                            Self::SIGNATURE,
7457                            topics.0,
7458                            Self::SIGNATURE_HASH,
7459                        ),
7460                    );
7461                }
7462                Ok(())
7463            }
7464            #[inline]
7465            fn tokenize_body(&self) -> Self::DataToken<'_> {
7466                (
7467                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7468                        &self.blockCommRoot,
7469                    ),
7470                )
7471            }
7472            #[inline]
7473            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7474                (
7475                    Self::SIGNATURE_HASH.into(),
7476                    self.viewNum.clone(),
7477                    self.blockHeight.clone(),
7478                )
7479            }
7480            #[inline]
7481            fn encode_topics_raw(
7482                &self,
7483                out: &mut [alloy_sol_types::abi::token::WordToken],
7484            ) -> alloy_sol_types::Result<()> {
7485                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7486                    return Err(alloy_sol_types::Error::Overrun);
7487                }
7488                out[0usize] = alloy_sol_types::abi::token::WordToken(
7489                    Self::SIGNATURE_HASH,
7490                );
7491                out[1usize] = <alloy::sol_types::sol_data::Uint<
7492                    64,
7493                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7494                out[2usize] = <alloy::sol_types::sol_data::Uint<
7495                    64,
7496                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7497                Ok(())
7498            }
7499        }
7500        #[automatically_derived]
7501        impl alloy_sol_types::private::IntoLogData for NewState {
7502            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7503                From::from(self)
7504            }
7505            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7506                From::from(&self)
7507            }
7508        }
7509        #[automatically_derived]
7510        impl From<&NewState> for alloy_sol_types::private::LogData {
7511            #[inline]
7512            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7513                alloy_sol_types::SolEvent::encode_log_data(this)
7514            }
7515        }
7516    };
7517    #[derive(serde::Serialize, serde::Deserialize)]
7518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7519    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7520```solidity
7521event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7522```*/
7523    #[allow(
7524        non_camel_case_types,
7525        non_snake_case,
7526        clippy::pub_underscore_fields,
7527        clippy::style
7528    )]
7529    #[derive(Clone)]
7530    pub struct OwnershipTransferred {
7531        #[allow(missing_docs)]
7532        pub previousOwner: alloy::sol_types::private::Address,
7533        #[allow(missing_docs)]
7534        pub newOwner: alloy::sol_types::private::Address,
7535    }
7536    #[allow(
7537        non_camel_case_types,
7538        non_snake_case,
7539        clippy::pub_underscore_fields,
7540        clippy::style
7541    )]
7542    const _: () = {
7543        use alloy::sol_types as alloy_sol_types;
7544        #[automatically_derived]
7545        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7546            type DataTuple<'a> = ();
7547            type DataToken<'a> = <Self::DataTuple<
7548                'a,
7549            > as alloy_sol_types::SolType>::Token<'a>;
7550            type TopicList = (
7551                alloy_sol_types::sol_data::FixedBytes<32>,
7552                alloy::sol_types::sol_data::Address,
7553                alloy::sol_types::sol_data::Address,
7554            );
7555            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7556            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7557                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7558                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7559                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7560            ]);
7561            const ANONYMOUS: bool = false;
7562            #[allow(unused_variables)]
7563            #[inline]
7564            fn new(
7565                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7566                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7567            ) -> Self {
7568                Self {
7569                    previousOwner: topics.1,
7570                    newOwner: topics.2,
7571                }
7572            }
7573            #[inline]
7574            fn check_signature(
7575                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7576            ) -> alloy_sol_types::Result<()> {
7577                if topics.0 != Self::SIGNATURE_HASH {
7578                    return Err(
7579                        alloy_sol_types::Error::invalid_event_signature_hash(
7580                            Self::SIGNATURE,
7581                            topics.0,
7582                            Self::SIGNATURE_HASH,
7583                        ),
7584                    );
7585                }
7586                Ok(())
7587            }
7588            #[inline]
7589            fn tokenize_body(&self) -> Self::DataToken<'_> {
7590                ()
7591            }
7592            #[inline]
7593            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7594                (
7595                    Self::SIGNATURE_HASH.into(),
7596                    self.previousOwner.clone(),
7597                    self.newOwner.clone(),
7598                )
7599            }
7600            #[inline]
7601            fn encode_topics_raw(
7602                &self,
7603                out: &mut [alloy_sol_types::abi::token::WordToken],
7604            ) -> alloy_sol_types::Result<()> {
7605                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7606                    return Err(alloy_sol_types::Error::Overrun);
7607                }
7608                out[0usize] = alloy_sol_types::abi::token::WordToken(
7609                    Self::SIGNATURE_HASH,
7610                );
7611                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7612                    &self.previousOwner,
7613                );
7614                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7615                    &self.newOwner,
7616                );
7617                Ok(())
7618            }
7619        }
7620        #[automatically_derived]
7621        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7622            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7623                From::from(self)
7624            }
7625            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7626                From::from(&self)
7627            }
7628        }
7629        #[automatically_derived]
7630        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7631            #[inline]
7632            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7633                alloy_sol_types::SolEvent::encode_log_data(this)
7634            }
7635        }
7636    };
7637    #[derive(serde::Serialize, serde::Deserialize)]
7638    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7639    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7640```solidity
7641event PermissionedProverNotRequired();
7642```*/
7643    #[allow(
7644        non_camel_case_types,
7645        non_snake_case,
7646        clippy::pub_underscore_fields,
7647        clippy::style
7648    )]
7649    #[derive(Clone)]
7650    pub struct PermissionedProverNotRequired;
7651    #[allow(
7652        non_camel_case_types,
7653        non_snake_case,
7654        clippy::pub_underscore_fields,
7655        clippy::style
7656    )]
7657    const _: () = {
7658        use alloy::sol_types as alloy_sol_types;
7659        #[automatically_derived]
7660        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7661            type DataTuple<'a> = ();
7662            type DataToken<'a> = <Self::DataTuple<
7663                'a,
7664            > as alloy_sol_types::SolType>::Token<'a>;
7665            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7666            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7667            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7668                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7669                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7670                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7671            ]);
7672            const ANONYMOUS: bool = false;
7673            #[allow(unused_variables)]
7674            #[inline]
7675            fn new(
7676                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7677                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7678            ) -> Self {
7679                Self {}
7680            }
7681            #[inline]
7682            fn check_signature(
7683                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7684            ) -> alloy_sol_types::Result<()> {
7685                if topics.0 != Self::SIGNATURE_HASH {
7686                    return Err(
7687                        alloy_sol_types::Error::invalid_event_signature_hash(
7688                            Self::SIGNATURE,
7689                            topics.0,
7690                            Self::SIGNATURE_HASH,
7691                        ),
7692                    );
7693                }
7694                Ok(())
7695            }
7696            #[inline]
7697            fn tokenize_body(&self) -> Self::DataToken<'_> {
7698                ()
7699            }
7700            #[inline]
7701            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7702                (Self::SIGNATURE_HASH.into(),)
7703            }
7704            #[inline]
7705            fn encode_topics_raw(
7706                &self,
7707                out: &mut [alloy_sol_types::abi::token::WordToken],
7708            ) -> alloy_sol_types::Result<()> {
7709                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7710                    return Err(alloy_sol_types::Error::Overrun);
7711                }
7712                out[0usize] = alloy_sol_types::abi::token::WordToken(
7713                    Self::SIGNATURE_HASH,
7714                );
7715                Ok(())
7716            }
7717        }
7718        #[automatically_derived]
7719        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7720            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7721                From::from(self)
7722            }
7723            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7724                From::from(&self)
7725            }
7726        }
7727        #[automatically_derived]
7728        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7729            #[inline]
7730            fn from(
7731                this: &PermissionedProverNotRequired,
7732            ) -> alloy_sol_types::private::LogData {
7733                alloy_sol_types::SolEvent::encode_log_data(this)
7734            }
7735        }
7736    };
7737    #[derive(serde::Serialize, serde::Deserialize)]
7738    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7739    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7740```solidity
7741event PermissionedProverRequired(address permissionedProver);
7742```*/
7743    #[allow(
7744        non_camel_case_types,
7745        non_snake_case,
7746        clippy::pub_underscore_fields,
7747        clippy::style
7748    )]
7749    #[derive(Clone)]
7750    pub struct PermissionedProverRequired {
7751        #[allow(missing_docs)]
7752        pub permissionedProver: alloy::sol_types::private::Address,
7753    }
7754    #[allow(
7755        non_camel_case_types,
7756        non_snake_case,
7757        clippy::pub_underscore_fields,
7758        clippy::style
7759    )]
7760    const _: () = {
7761        use alloy::sol_types as alloy_sol_types;
7762        #[automatically_derived]
7763        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7764            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7765            type DataToken<'a> = <Self::DataTuple<
7766                'a,
7767            > as alloy_sol_types::SolType>::Token<'a>;
7768            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7769            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7770            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7771                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7772                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7773                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7774            ]);
7775            const ANONYMOUS: bool = false;
7776            #[allow(unused_variables)]
7777            #[inline]
7778            fn new(
7779                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7780                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7781            ) -> Self {
7782                Self { permissionedProver: data.0 }
7783            }
7784            #[inline]
7785            fn check_signature(
7786                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7787            ) -> alloy_sol_types::Result<()> {
7788                if topics.0 != Self::SIGNATURE_HASH {
7789                    return Err(
7790                        alloy_sol_types::Error::invalid_event_signature_hash(
7791                            Self::SIGNATURE,
7792                            topics.0,
7793                            Self::SIGNATURE_HASH,
7794                        ),
7795                    );
7796                }
7797                Ok(())
7798            }
7799            #[inline]
7800            fn tokenize_body(&self) -> Self::DataToken<'_> {
7801                (
7802                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7803                        &self.permissionedProver,
7804                    ),
7805                )
7806            }
7807            #[inline]
7808            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7809                (Self::SIGNATURE_HASH.into(),)
7810            }
7811            #[inline]
7812            fn encode_topics_raw(
7813                &self,
7814                out: &mut [alloy_sol_types::abi::token::WordToken],
7815            ) -> alloy_sol_types::Result<()> {
7816                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7817                    return Err(alloy_sol_types::Error::Overrun);
7818                }
7819                out[0usize] = alloy_sol_types::abi::token::WordToken(
7820                    Self::SIGNATURE_HASH,
7821                );
7822                Ok(())
7823            }
7824        }
7825        #[automatically_derived]
7826        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7827            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7828                From::from(self)
7829            }
7830            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7831                From::from(&self)
7832            }
7833        }
7834        #[automatically_derived]
7835        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7836            #[inline]
7837            fn from(
7838                this: &PermissionedProverRequired,
7839            ) -> alloy_sol_types::private::LogData {
7840                alloy_sol_types::SolEvent::encode_log_data(this)
7841            }
7842        }
7843    };
7844    #[derive(serde::Serialize, serde::Deserialize)]
7845    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7846    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7847```solidity
7848event Upgrade(address implementation);
7849```*/
7850    #[allow(
7851        non_camel_case_types,
7852        non_snake_case,
7853        clippy::pub_underscore_fields,
7854        clippy::style
7855    )]
7856    #[derive(Clone)]
7857    pub struct Upgrade {
7858        #[allow(missing_docs)]
7859        pub implementation: alloy::sol_types::private::Address,
7860    }
7861    #[allow(
7862        non_camel_case_types,
7863        non_snake_case,
7864        clippy::pub_underscore_fields,
7865        clippy::style
7866    )]
7867    const _: () = {
7868        use alloy::sol_types as alloy_sol_types;
7869        #[automatically_derived]
7870        impl alloy_sol_types::SolEvent for Upgrade {
7871            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7872            type DataToken<'a> = <Self::DataTuple<
7873                'a,
7874            > as alloy_sol_types::SolType>::Token<'a>;
7875            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7876            const SIGNATURE: &'static str = "Upgrade(address)";
7877            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7878                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7879                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7880                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7881            ]);
7882            const ANONYMOUS: bool = false;
7883            #[allow(unused_variables)]
7884            #[inline]
7885            fn new(
7886                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7887                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7888            ) -> Self {
7889                Self { implementation: data.0 }
7890            }
7891            #[inline]
7892            fn check_signature(
7893                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7894            ) -> alloy_sol_types::Result<()> {
7895                if topics.0 != Self::SIGNATURE_HASH {
7896                    return Err(
7897                        alloy_sol_types::Error::invalid_event_signature_hash(
7898                            Self::SIGNATURE,
7899                            topics.0,
7900                            Self::SIGNATURE_HASH,
7901                        ),
7902                    );
7903                }
7904                Ok(())
7905            }
7906            #[inline]
7907            fn tokenize_body(&self) -> Self::DataToken<'_> {
7908                (
7909                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7910                        &self.implementation,
7911                    ),
7912                )
7913            }
7914            #[inline]
7915            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7916                (Self::SIGNATURE_HASH.into(),)
7917            }
7918            #[inline]
7919            fn encode_topics_raw(
7920                &self,
7921                out: &mut [alloy_sol_types::abi::token::WordToken],
7922            ) -> alloy_sol_types::Result<()> {
7923                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7924                    return Err(alloy_sol_types::Error::Overrun);
7925                }
7926                out[0usize] = alloy_sol_types::abi::token::WordToken(
7927                    Self::SIGNATURE_HASH,
7928                );
7929                Ok(())
7930            }
7931        }
7932        #[automatically_derived]
7933        impl alloy_sol_types::private::IntoLogData for Upgrade {
7934            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7935                From::from(self)
7936            }
7937            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7938                From::from(&self)
7939            }
7940        }
7941        #[automatically_derived]
7942        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7943            #[inline]
7944            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7945                alloy_sol_types::SolEvent::encode_log_data(this)
7946            }
7947        }
7948    };
7949    #[derive(serde::Serialize, serde::Deserialize)]
7950    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7951    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7952```solidity
7953event Upgraded(address indexed implementation);
7954```*/
7955    #[allow(
7956        non_camel_case_types,
7957        non_snake_case,
7958        clippy::pub_underscore_fields,
7959        clippy::style
7960    )]
7961    #[derive(Clone)]
7962    pub struct Upgraded {
7963        #[allow(missing_docs)]
7964        pub implementation: alloy::sol_types::private::Address,
7965    }
7966    #[allow(
7967        non_camel_case_types,
7968        non_snake_case,
7969        clippy::pub_underscore_fields,
7970        clippy::style
7971    )]
7972    const _: () = {
7973        use alloy::sol_types as alloy_sol_types;
7974        #[automatically_derived]
7975        impl alloy_sol_types::SolEvent for Upgraded {
7976            type DataTuple<'a> = ();
7977            type DataToken<'a> = <Self::DataTuple<
7978                'a,
7979            > as alloy_sol_types::SolType>::Token<'a>;
7980            type TopicList = (
7981                alloy_sol_types::sol_data::FixedBytes<32>,
7982                alloy::sol_types::sol_data::Address,
7983            );
7984            const SIGNATURE: &'static str = "Upgraded(address)";
7985            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7986                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7987                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7988                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7989            ]);
7990            const ANONYMOUS: bool = false;
7991            #[allow(unused_variables)]
7992            #[inline]
7993            fn new(
7994                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7995                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7996            ) -> Self {
7997                Self { implementation: topics.1 }
7998            }
7999            #[inline]
8000            fn check_signature(
8001                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
8002            ) -> alloy_sol_types::Result<()> {
8003                if topics.0 != Self::SIGNATURE_HASH {
8004                    return Err(
8005                        alloy_sol_types::Error::invalid_event_signature_hash(
8006                            Self::SIGNATURE,
8007                            topics.0,
8008                            Self::SIGNATURE_HASH,
8009                        ),
8010                    );
8011                }
8012                Ok(())
8013            }
8014            #[inline]
8015            fn tokenize_body(&self) -> Self::DataToken<'_> {
8016                ()
8017            }
8018            #[inline]
8019            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
8020                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
8021            }
8022            #[inline]
8023            fn encode_topics_raw(
8024                &self,
8025                out: &mut [alloy_sol_types::abi::token::WordToken],
8026            ) -> alloy_sol_types::Result<()> {
8027                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
8028                    return Err(alloy_sol_types::Error::Overrun);
8029                }
8030                out[0usize] = alloy_sol_types::abi::token::WordToken(
8031                    Self::SIGNATURE_HASH,
8032                );
8033                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
8034                    &self.implementation,
8035                );
8036                Ok(())
8037            }
8038        }
8039        #[automatically_derived]
8040        impl alloy_sol_types::private::IntoLogData for Upgraded {
8041            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
8042                From::from(self)
8043            }
8044            fn into_log_data(self) -> alloy_sol_types::private::LogData {
8045                From::from(&self)
8046            }
8047        }
8048        #[automatically_derived]
8049        impl From<&Upgraded> for alloy_sol_types::private::LogData {
8050            #[inline]
8051            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
8052                alloy_sol_types::SolEvent::encode_log_data(this)
8053            }
8054        }
8055    };
8056    #[derive(serde::Serialize, serde::Deserialize)]
8057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8058    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
8059```solidity
8060function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
8061```*/
8062    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8063    #[derive(Clone)]
8064    pub struct UPGRADE_INTERFACE_VERSIONCall;
8065    #[derive(serde::Serialize, serde::Deserialize)]
8066    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8067    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
8068    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8069    #[derive(Clone)]
8070    pub struct UPGRADE_INTERFACE_VERSIONReturn {
8071        #[allow(missing_docs)]
8072        pub _0: alloy::sol_types::private::String,
8073    }
8074    #[allow(
8075        non_camel_case_types,
8076        non_snake_case,
8077        clippy::pub_underscore_fields,
8078        clippy::style
8079    )]
8080    const _: () = {
8081        use alloy::sol_types as alloy_sol_types;
8082        {
8083            #[doc(hidden)]
8084            type UnderlyingSolTuple<'a> = ();
8085            #[doc(hidden)]
8086            type UnderlyingRustTuple<'a> = ();
8087            #[cfg(test)]
8088            #[allow(dead_code, unreachable_patterns)]
8089            fn _type_assertion(
8090                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8091            ) {
8092                match _t {
8093                    alloy_sol_types::private::AssertTypeEq::<
8094                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8095                    >(_) => {}
8096                }
8097            }
8098            #[automatically_derived]
8099            #[doc(hidden)]
8100            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
8101            for UnderlyingRustTuple<'_> {
8102                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
8103                    ()
8104                }
8105            }
8106            #[automatically_derived]
8107            #[doc(hidden)]
8108            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8109            for UPGRADE_INTERFACE_VERSIONCall {
8110                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8111                    Self
8112                }
8113            }
8114        }
8115        {
8116            #[doc(hidden)]
8117            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
8118            #[doc(hidden)]
8119            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
8120            #[cfg(test)]
8121            #[allow(dead_code, unreachable_patterns)]
8122            fn _type_assertion(
8123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8124            ) {
8125                match _t {
8126                    alloy_sol_types::private::AssertTypeEq::<
8127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8128                    >(_) => {}
8129                }
8130            }
8131            #[automatically_derived]
8132            #[doc(hidden)]
8133            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
8134            for UnderlyingRustTuple<'_> {
8135                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
8136                    (value._0,)
8137                }
8138            }
8139            #[automatically_derived]
8140            #[doc(hidden)]
8141            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8142            for UPGRADE_INTERFACE_VERSIONReturn {
8143                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8144                    Self { _0: tuple.0 }
8145                }
8146            }
8147        }
8148        #[automatically_derived]
8149        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
8150            type Parameters<'a> = ();
8151            type Token<'a> = <Self::Parameters<
8152                'a,
8153            > as alloy_sol_types::SolType>::Token<'a>;
8154            type Return = alloy::sol_types::private::String;
8155            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
8156            type ReturnToken<'a> = <Self::ReturnTuple<
8157                'a,
8158            > as alloy_sol_types::SolType>::Token<'a>;
8159            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
8160            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
8161            #[inline]
8162            fn new<'a>(
8163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8164            ) -> Self {
8165                tuple.into()
8166            }
8167            #[inline]
8168            fn tokenize(&self) -> Self::Token<'_> {
8169                ()
8170            }
8171            #[inline]
8172            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8173                (
8174                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
8175                        ret,
8176                    ),
8177                )
8178            }
8179            #[inline]
8180            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8181                <Self::ReturnTuple<
8182                    '_,
8183                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8184                    .map(|r| {
8185                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8186                        r._0
8187                    })
8188            }
8189            #[inline]
8190            fn abi_decode_returns_validate(
8191                data: &[u8],
8192            ) -> alloy_sol_types::Result<Self::Return> {
8193                <Self::ReturnTuple<
8194                    '_,
8195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8196                    .map(|r| {
8197                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
8198                        r._0
8199                    })
8200            }
8201        }
8202    };
8203    #[derive(serde::Serialize, serde::Deserialize)]
8204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8205    /**Function with signature `_getVk()` and selector `0x12173c2c`.
8206```solidity
8207function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
8208```*/
8209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8210    #[derive(Clone)]
8211    pub struct _getVkCall;
8212    #[derive(serde::Serialize, serde::Deserialize)]
8213    #[derive()]
8214    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
8215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8216    #[derive(Clone)]
8217    pub struct _getVkReturn {
8218        #[allow(missing_docs)]
8219        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8220    }
8221    #[allow(
8222        non_camel_case_types,
8223        non_snake_case,
8224        clippy::pub_underscore_fields,
8225        clippy::style
8226    )]
8227    const _: () = {
8228        use alloy::sol_types as alloy_sol_types;
8229        {
8230            #[doc(hidden)]
8231            type UnderlyingSolTuple<'a> = ();
8232            #[doc(hidden)]
8233            type UnderlyingRustTuple<'a> = ();
8234            #[cfg(test)]
8235            #[allow(dead_code, unreachable_patterns)]
8236            fn _type_assertion(
8237                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8238            ) {
8239                match _t {
8240                    alloy_sol_types::private::AssertTypeEq::<
8241                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8242                    >(_) => {}
8243                }
8244            }
8245            #[automatically_derived]
8246            #[doc(hidden)]
8247            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
8248                fn from(value: _getVkCall) -> Self {
8249                    ()
8250                }
8251            }
8252            #[automatically_derived]
8253            #[doc(hidden)]
8254            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
8255                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8256                    Self
8257                }
8258            }
8259        }
8260        {
8261            #[doc(hidden)]
8262            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8263            #[doc(hidden)]
8264            type UnderlyingRustTuple<'a> = (
8265                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
8266            );
8267            #[cfg(test)]
8268            #[allow(dead_code, unreachable_patterns)]
8269            fn _type_assertion(
8270                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8271            ) {
8272                match _t {
8273                    alloy_sol_types::private::AssertTypeEq::<
8274                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8275                    >(_) => {}
8276                }
8277            }
8278            #[automatically_derived]
8279            #[doc(hidden)]
8280            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
8281                fn from(value: _getVkReturn) -> Self {
8282                    (value.vk,)
8283                }
8284            }
8285            #[automatically_derived]
8286            #[doc(hidden)]
8287            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
8288                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8289                    Self { vk: tuple.0 }
8290                }
8291            }
8292        }
8293        #[automatically_derived]
8294        impl alloy_sol_types::SolCall for _getVkCall {
8295            type Parameters<'a> = ();
8296            type Token<'a> = <Self::Parameters<
8297                'a,
8298            > as alloy_sol_types::SolType>::Token<'a>;
8299            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
8300            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
8301            type ReturnToken<'a> = <Self::ReturnTuple<
8302                'a,
8303            > as alloy_sol_types::SolType>::Token<'a>;
8304            const SIGNATURE: &'static str = "_getVk()";
8305            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
8306            #[inline]
8307            fn new<'a>(
8308                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8309            ) -> Self {
8310                tuple.into()
8311            }
8312            #[inline]
8313            fn tokenize(&self) -> Self::Token<'_> {
8314                ()
8315            }
8316            #[inline]
8317            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8318                (
8319                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
8320                        ret,
8321                    ),
8322                )
8323            }
8324            #[inline]
8325            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8326                <Self::ReturnTuple<
8327                    '_,
8328                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8329                    .map(|r| {
8330                        let r: _getVkReturn = r.into();
8331                        r.vk
8332                    })
8333            }
8334            #[inline]
8335            fn abi_decode_returns_validate(
8336                data: &[u8],
8337            ) -> alloy_sol_types::Result<Self::Return> {
8338                <Self::ReturnTuple<
8339                    '_,
8340                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8341                    .map(|r| {
8342                        let r: _getVkReturn = r.into();
8343                        r.vk
8344                    })
8345            }
8346        }
8347    };
8348    #[derive(serde::Serialize, serde::Deserialize)]
8349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8350    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
8351```solidity
8352function blocksPerEpoch() external view returns (uint64);
8353```*/
8354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8355    #[derive(Clone)]
8356    pub struct blocksPerEpochCall;
8357    #[derive(serde::Serialize, serde::Deserialize)]
8358    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8359    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
8360    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8361    #[derive(Clone)]
8362    pub struct blocksPerEpochReturn {
8363        #[allow(missing_docs)]
8364        pub _0: u64,
8365    }
8366    #[allow(
8367        non_camel_case_types,
8368        non_snake_case,
8369        clippy::pub_underscore_fields,
8370        clippy::style
8371    )]
8372    const _: () = {
8373        use alloy::sol_types as alloy_sol_types;
8374        {
8375            #[doc(hidden)]
8376            type UnderlyingSolTuple<'a> = ();
8377            #[doc(hidden)]
8378            type UnderlyingRustTuple<'a> = ();
8379            #[cfg(test)]
8380            #[allow(dead_code, unreachable_patterns)]
8381            fn _type_assertion(
8382                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8383            ) {
8384                match _t {
8385                    alloy_sol_types::private::AssertTypeEq::<
8386                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8387                    >(_) => {}
8388                }
8389            }
8390            #[automatically_derived]
8391            #[doc(hidden)]
8392            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
8393                fn from(value: blocksPerEpochCall) -> Self {
8394                    ()
8395                }
8396            }
8397            #[automatically_derived]
8398            #[doc(hidden)]
8399            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
8400                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8401                    Self
8402                }
8403            }
8404        }
8405        {
8406            #[doc(hidden)]
8407            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8408            #[doc(hidden)]
8409            type UnderlyingRustTuple<'a> = (u64,);
8410            #[cfg(test)]
8411            #[allow(dead_code, unreachable_patterns)]
8412            fn _type_assertion(
8413                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8414            ) {
8415                match _t {
8416                    alloy_sol_types::private::AssertTypeEq::<
8417                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8418                    >(_) => {}
8419                }
8420            }
8421            #[automatically_derived]
8422            #[doc(hidden)]
8423            impl ::core::convert::From<blocksPerEpochReturn>
8424            for UnderlyingRustTuple<'_> {
8425                fn from(value: blocksPerEpochReturn) -> Self {
8426                    (value._0,)
8427                }
8428            }
8429            #[automatically_derived]
8430            #[doc(hidden)]
8431            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8432            for blocksPerEpochReturn {
8433                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8434                    Self { _0: tuple.0 }
8435                }
8436            }
8437        }
8438        #[automatically_derived]
8439        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8440            type Parameters<'a> = ();
8441            type Token<'a> = <Self::Parameters<
8442                'a,
8443            > as alloy_sol_types::SolType>::Token<'a>;
8444            type Return = u64;
8445            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8446            type ReturnToken<'a> = <Self::ReturnTuple<
8447                'a,
8448            > as alloy_sol_types::SolType>::Token<'a>;
8449            const SIGNATURE: &'static str = "blocksPerEpoch()";
8450            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8451            #[inline]
8452            fn new<'a>(
8453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8454            ) -> Self {
8455                tuple.into()
8456            }
8457            #[inline]
8458            fn tokenize(&self) -> Self::Token<'_> {
8459                ()
8460            }
8461            #[inline]
8462            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8463                (
8464                    <alloy::sol_types::sol_data::Uint<
8465                        64,
8466                    > as alloy_sol_types::SolType>::tokenize(ret),
8467                )
8468            }
8469            #[inline]
8470            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8471                <Self::ReturnTuple<
8472                    '_,
8473                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8474                    .map(|r| {
8475                        let r: blocksPerEpochReturn = r.into();
8476                        r._0
8477                    })
8478            }
8479            #[inline]
8480            fn abi_decode_returns_validate(
8481                data: &[u8],
8482            ) -> alloy_sol_types::Result<Self::Return> {
8483                <Self::ReturnTuple<
8484                    '_,
8485                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8486                    .map(|r| {
8487                        let r: blocksPerEpochReturn = r.into();
8488                        r._0
8489                    })
8490            }
8491        }
8492    };
8493    #[derive(serde::Serialize, serde::Deserialize)]
8494    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8495    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8496```solidity
8497function currentBlockNumber() external view returns (uint256);
8498```*/
8499    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8500    #[derive(Clone)]
8501    pub struct currentBlockNumberCall;
8502    #[derive(serde::Serialize, serde::Deserialize)]
8503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8504    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8505    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8506    #[derive(Clone)]
8507    pub struct currentBlockNumberReturn {
8508        #[allow(missing_docs)]
8509        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8510    }
8511    #[allow(
8512        non_camel_case_types,
8513        non_snake_case,
8514        clippy::pub_underscore_fields,
8515        clippy::style
8516    )]
8517    const _: () = {
8518        use alloy::sol_types as alloy_sol_types;
8519        {
8520            #[doc(hidden)]
8521            type UnderlyingSolTuple<'a> = ();
8522            #[doc(hidden)]
8523            type UnderlyingRustTuple<'a> = ();
8524            #[cfg(test)]
8525            #[allow(dead_code, unreachable_patterns)]
8526            fn _type_assertion(
8527                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8528            ) {
8529                match _t {
8530                    alloy_sol_types::private::AssertTypeEq::<
8531                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8532                    >(_) => {}
8533                }
8534            }
8535            #[automatically_derived]
8536            #[doc(hidden)]
8537            impl ::core::convert::From<currentBlockNumberCall>
8538            for UnderlyingRustTuple<'_> {
8539                fn from(value: currentBlockNumberCall) -> Self {
8540                    ()
8541                }
8542            }
8543            #[automatically_derived]
8544            #[doc(hidden)]
8545            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8546            for currentBlockNumberCall {
8547                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8548                    Self
8549                }
8550            }
8551        }
8552        {
8553            #[doc(hidden)]
8554            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8555            #[doc(hidden)]
8556            type UnderlyingRustTuple<'a> = (
8557                alloy::sol_types::private::primitives::aliases::U256,
8558            );
8559            #[cfg(test)]
8560            #[allow(dead_code, unreachable_patterns)]
8561            fn _type_assertion(
8562                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8563            ) {
8564                match _t {
8565                    alloy_sol_types::private::AssertTypeEq::<
8566                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8567                    >(_) => {}
8568                }
8569            }
8570            #[automatically_derived]
8571            #[doc(hidden)]
8572            impl ::core::convert::From<currentBlockNumberReturn>
8573            for UnderlyingRustTuple<'_> {
8574                fn from(value: currentBlockNumberReturn) -> Self {
8575                    (value._0,)
8576                }
8577            }
8578            #[automatically_derived]
8579            #[doc(hidden)]
8580            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8581            for currentBlockNumberReturn {
8582                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8583                    Self { _0: tuple.0 }
8584                }
8585            }
8586        }
8587        #[automatically_derived]
8588        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8589            type Parameters<'a> = ();
8590            type Token<'a> = <Self::Parameters<
8591                'a,
8592            > as alloy_sol_types::SolType>::Token<'a>;
8593            type Return = alloy::sol_types::private::primitives::aliases::U256;
8594            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8595            type ReturnToken<'a> = <Self::ReturnTuple<
8596                'a,
8597            > as alloy_sol_types::SolType>::Token<'a>;
8598            const SIGNATURE: &'static str = "currentBlockNumber()";
8599            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8600            #[inline]
8601            fn new<'a>(
8602                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8603            ) -> Self {
8604                tuple.into()
8605            }
8606            #[inline]
8607            fn tokenize(&self) -> Self::Token<'_> {
8608                ()
8609            }
8610            #[inline]
8611            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8612                (
8613                    <alloy::sol_types::sol_data::Uint<
8614                        256,
8615                    > as alloy_sol_types::SolType>::tokenize(ret),
8616                )
8617            }
8618            #[inline]
8619            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8620                <Self::ReturnTuple<
8621                    '_,
8622                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8623                    .map(|r| {
8624                        let r: currentBlockNumberReturn = r.into();
8625                        r._0
8626                    })
8627            }
8628            #[inline]
8629            fn abi_decode_returns_validate(
8630                data: &[u8],
8631            ) -> alloy_sol_types::Result<Self::Return> {
8632                <Self::ReturnTuple<
8633                    '_,
8634                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8635                    .map(|r| {
8636                        let r: currentBlockNumberReturn = r.into();
8637                        r._0
8638                    })
8639            }
8640        }
8641    };
8642    #[derive(serde::Serialize, serde::Deserialize)]
8643    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8644    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8645```solidity
8646function currentEpoch() external view returns (uint64);
8647```*/
8648    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8649    #[derive(Clone)]
8650    pub struct currentEpochCall;
8651    #[derive(serde::Serialize, serde::Deserialize)]
8652    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8653    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8655    #[derive(Clone)]
8656    pub struct currentEpochReturn {
8657        #[allow(missing_docs)]
8658        pub _0: u64,
8659    }
8660    #[allow(
8661        non_camel_case_types,
8662        non_snake_case,
8663        clippy::pub_underscore_fields,
8664        clippy::style
8665    )]
8666    const _: () = {
8667        use alloy::sol_types as alloy_sol_types;
8668        {
8669            #[doc(hidden)]
8670            type UnderlyingSolTuple<'a> = ();
8671            #[doc(hidden)]
8672            type UnderlyingRustTuple<'a> = ();
8673            #[cfg(test)]
8674            #[allow(dead_code, unreachable_patterns)]
8675            fn _type_assertion(
8676                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8677            ) {
8678                match _t {
8679                    alloy_sol_types::private::AssertTypeEq::<
8680                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8681                    >(_) => {}
8682                }
8683            }
8684            #[automatically_derived]
8685            #[doc(hidden)]
8686            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8687                fn from(value: currentEpochCall) -> Self {
8688                    ()
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8694                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8695                    Self
8696                }
8697            }
8698        }
8699        {
8700            #[doc(hidden)]
8701            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8702            #[doc(hidden)]
8703            type UnderlyingRustTuple<'a> = (u64,);
8704            #[cfg(test)]
8705            #[allow(dead_code, unreachable_patterns)]
8706            fn _type_assertion(
8707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8708            ) {
8709                match _t {
8710                    alloy_sol_types::private::AssertTypeEq::<
8711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8712                    >(_) => {}
8713                }
8714            }
8715            #[automatically_derived]
8716            #[doc(hidden)]
8717            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8718                fn from(value: currentEpochReturn) -> Self {
8719                    (value._0,)
8720                }
8721            }
8722            #[automatically_derived]
8723            #[doc(hidden)]
8724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8726                    Self { _0: tuple.0 }
8727                }
8728            }
8729        }
8730        #[automatically_derived]
8731        impl alloy_sol_types::SolCall for currentEpochCall {
8732            type Parameters<'a> = ();
8733            type Token<'a> = <Self::Parameters<
8734                'a,
8735            > as alloy_sol_types::SolType>::Token<'a>;
8736            type Return = u64;
8737            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8738            type ReturnToken<'a> = <Self::ReturnTuple<
8739                'a,
8740            > as alloy_sol_types::SolType>::Token<'a>;
8741            const SIGNATURE: &'static str = "currentEpoch()";
8742            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8743            #[inline]
8744            fn new<'a>(
8745                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8746            ) -> Self {
8747                tuple.into()
8748            }
8749            #[inline]
8750            fn tokenize(&self) -> Self::Token<'_> {
8751                ()
8752            }
8753            #[inline]
8754            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8755                (
8756                    <alloy::sol_types::sol_data::Uint<
8757                        64,
8758                    > as alloy_sol_types::SolType>::tokenize(ret),
8759                )
8760            }
8761            #[inline]
8762            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8763                <Self::ReturnTuple<
8764                    '_,
8765                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8766                    .map(|r| {
8767                        let r: currentEpochReturn = r.into();
8768                        r._0
8769                    })
8770            }
8771            #[inline]
8772            fn abi_decode_returns_validate(
8773                data: &[u8],
8774            ) -> alloy_sol_types::Result<Self::Return> {
8775                <Self::ReturnTuple<
8776                    '_,
8777                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8778                    .map(|r| {
8779                        let r: currentEpochReturn = r.into();
8780                        r._0
8781                    })
8782            }
8783        }
8784    };
8785    #[derive(serde::Serialize, serde::Deserialize)]
8786    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8787    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8788```solidity
8789function disablePermissionedProverMode() external;
8790```*/
8791    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8792    #[derive(Clone)]
8793    pub struct disablePermissionedProverModeCall;
8794    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8796    #[derive(Clone)]
8797    pub struct disablePermissionedProverModeReturn {}
8798    #[allow(
8799        non_camel_case_types,
8800        non_snake_case,
8801        clippy::pub_underscore_fields,
8802        clippy::style
8803    )]
8804    const _: () = {
8805        use alloy::sol_types as alloy_sol_types;
8806        {
8807            #[doc(hidden)]
8808            type UnderlyingSolTuple<'a> = ();
8809            #[doc(hidden)]
8810            type UnderlyingRustTuple<'a> = ();
8811            #[cfg(test)]
8812            #[allow(dead_code, unreachable_patterns)]
8813            fn _type_assertion(
8814                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8815            ) {
8816                match _t {
8817                    alloy_sol_types::private::AssertTypeEq::<
8818                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8819                    >(_) => {}
8820                }
8821            }
8822            #[automatically_derived]
8823            #[doc(hidden)]
8824            impl ::core::convert::From<disablePermissionedProverModeCall>
8825            for UnderlyingRustTuple<'_> {
8826                fn from(value: disablePermissionedProverModeCall) -> Self {
8827                    ()
8828                }
8829            }
8830            #[automatically_derived]
8831            #[doc(hidden)]
8832            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8833            for disablePermissionedProverModeCall {
8834                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8835                    Self
8836                }
8837            }
8838        }
8839        {
8840            #[doc(hidden)]
8841            type UnderlyingSolTuple<'a> = ();
8842            #[doc(hidden)]
8843            type UnderlyingRustTuple<'a> = ();
8844            #[cfg(test)]
8845            #[allow(dead_code, unreachable_patterns)]
8846            fn _type_assertion(
8847                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8848            ) {
8849                match _t {
8850                    alloy_sol_types::private::AssertTypeEq::<
8851                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8852                    >(_) => {}
8853                }
8854            }
8855            #[automatically_derived]
8856            #[doc(hidden)]
8857            impl ::core::convert::From<disablePermissionedProverModeReturn>
8858            for UnderlyingRustTuple<'_> {
8859                fn from(value: disablePermissionedProverModeReturn) -> Self {
8860                    ()
8861                }
8862            }
8863            #[automatically_derived]
8864            #[doc(hidden)]
8865            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8866            for disablePermissionedProverModeReturn {
8867                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8868                    Self {}
8869                }
8870            }
8871        }
8872        impl disablePermissionedProverModeReturn {
8873            fn _tokenize(
8874                &self,
8875            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8876                '_,
8877            > {
8878                ()
8879            }
8880        }
8881        #[automatically_derived]
8882        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8883            type Parameters<'a> = ();
8884            type Token<'a> = <Self::Parameters<
8885                'a,
8886            > as alloy_sol_types::SolType>::Token<'a>;
8887            type Return = disablePermissionedProverModeReturn;
8888            type ReturnTuple<'a> = ();
8889            type ReturnToken<'a> = <Self::ReturnTuple<
8890                'a,
8891            > as alloy_sol_types::SolType>::Token<'a>;
8892            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8893            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8894            #[inline]
8895            fn new<'a>(
8896                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8897            ) -> Self {
8898                tuple.into()
8899            }
8900            #[inline]
8901            fn tokenize(&self) -> Self::Token<'_> {
8902                ()
8903            }
8904            #[inline]
8905            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8906                disablePermissionedProverModeReturn::_tokenize(ret)
8907            }
8908            #[inline]
8909            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8910                <Self::ReturnTuple<
8911                    '_,
8912                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8913                    .map(Into::into)
8914            }
8915            #[inline]
8916            fn abi_decode_returns_validate(
8917                data: &[u8],
8918            ) -> alloy_sol_types::Result<Self::Return> {
8919                <Self::ReturnTuple<
8920                    '_,
8921                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8922                    .map(Into::into)
8923            }
8924        }
8925    };
8926    #[derive(serde::Serialize, serde::Deserialize)]
8927    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8928    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8929```solidity
8930function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8931```*/
8932    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8933    #[derive(Clone)]
8934    pub struct epochFromBlockNumberCall {
8935        #[allow(missing_docs)]
8936        pub _blockNum: u64,
8937        #[allow(missing_docs)]
8938        pub _blocksPerEpoch: u64,
8939    }
8940    #[derive(serde::Serialize, serde::Deserialize)]
8941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8942    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8944    #[derive(Clone)]
8945    pub struct epochFromBlockNumberReturn {
8946        #[allow(missing_docs)]
8947        pub _0: u64,
8948    }
8949    #[allow(
8950        non_camel_case_types,
8951        non_snake_case,
8952        clippy::pub_underscore_fields,
8953        clippy::style
8954    )]
8955    const _: () = {
8956        use alloy::sol_types as alloy_sol_types;
8957        {
8958            #[doc(hidden)]
8959            type UnderlyingSolTuple<'a> = (
8960                alloy::sol_types::sol_data::Uint<64>,
8961                alloy::sol_types::sol_data::Uint<64>,
8962            );
8963            #[doc(hidden)]
8964            type UnderlyingRustTuple<'a> = (u64, u64);
8965            #[cfg(test)]
8966            #[allow(dead_code, unreachable_patterns)]
8967            fn _type_assertion(
8968                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8969            ) {
8970                match _t {
8971                    alloy_sol_types::private::AssertTypeEq::<
8972                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8973                    >(_) => {}
8974                }
8975            }
8976            #[automatically_derived]
8977            #[doc(hidden)]
8978            impl ::core::convert::From<epochFromBlockNumberCall>
8979            for UnderlyingRustTuple<'_> {
8980                fn from(value: epochFromBlockNumberCall) -> Self {
8981                    (value._blockNum, value._blocksPerEpoch)
8982                }
8983            }
8984            #[automatically_derived]
8985            #[doc(hidden)]
8986            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8987            for epochFromBlockNumberCall {
8988                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8989                    Self {
8990                        _blockNum: tuple.0,
8991                        _blocksPerEpoch: tuple.1,
8992                    }
8993                }
8994            }
8995        }
8996        {
8997            #[doc(hidden)]
8998            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8999            #[doc(hidden)]
9000            type UnderlyingRustTuple<'a> = (u64,);
9001            #[cfg(test)]
9002            #[allow(dead_code, unreachable_patterns)]
9003            fn _type_assertion(
9004                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9005            ) {
9006                match _t {
9007                    alloy_sol_types::private::AssertTypeEq::<
9008                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9009                    >(_) => {}
9010                }
9011            }
9012            #[automatically_derived]
9013            #[doc(hidden)]
9014            impl ::core::convert::From<epochFromBlockNumberReturn>
9015            for UnderlyingRustTuple<'_> {
9016                fn from(value: epochFromBlockNumberReturn) -> Self {
9017                    (value._0,)
9018                }
9019            }
9020            #[automatically_derived]
9021            #[doc(hidden)]
9022            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9023            for epochFromBlockNumberReturn {
9024                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9025                    Self { _0: tuple.0 }
9026                }
9027            }
9028        }
9029        #[automatically_derived]
9030        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
9031            type Parameters<'a> = (
9032                alloy::sol_types::sol_data::Uint<64>,
9033                alloy::sol_types::sol_data::Uint<64>,
9034            );
9035            type Token<'a> = <Self::Parameters<
9036                'a,
9037            > as alloy_sol_types::SolType>::Token<'a>;
9038            type Return = u64;
9039            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9040            type ReturnToken<'a> = <Self::ReturnTuple<
9041                'a,
9042            > as alloy_sol_types::SolType>::Token<'a>;
9043            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
9044            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
9045            #[inline]
9046            fn new<'a>(
9047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9048            ) -> Self {
9049                tuple.into()
9050            }
9051            #[inline]
9052            fn tokenize(&self) -> Self::Token<'_> {
9053                (
9054                    <alloy::sol_types::sol_data::Uint<
9055                        64,
9056                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
9057                    <alloy::sol_types::sol_data::Uint<
9058                        64,
9059                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
9060                )
9061            }
9062            #[inline]
9063            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9064                (
9065                    <alloy::sol_types::sol_data::Uint<
9066                        64,
9067                    > as alloy_sol_types::SolType>::tokenize(ret),
9068                )
9069            }
9070            #[inline]
9071            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9072                <Self::ReturnTuple<
9073                    '_,
9074                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9075                    .map(|r| {
9076                        let r: epochFromBlockNumberReturn = r.into();
9077                        r._0
9078                    })
9079            }
9080            #[inline]
9081            fn abi_decode_returns_validate(
9082                data: &[u8],
9083            ) -> alloy_sol_types::Result<Self::Return> {
9084                <Self::ReturnTuple<
9085                    '_,
9086                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9087                    .map(|r| {
9088                        let r: epochFromBlockNumberReturn = r.into();
9089                        r._0
9090                    })
9091            }
9092        }
9093    };
9094    #[derive(serde::Serialize, serde::Deserialize)]
9095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9096    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
9097```solidity
9098function epochStartBlock() external view returns (uint64);
9099```*/
9100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9101    #[derive(Clone)]
9102    pub struct epochStartBlockCall;
9103    #[derive(serde::Serialize, serde::Deserialize)]
9104    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9105    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
9106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9107    #[derive(Clone)]
9108    pub struct epochStartBlockReturn {
9109        #[allow(missing_docs)]
9110        pub _0: u64,
9111    }
9112    #[allow(
9113        non_camel_case_types,
9114        non_snake_case,
9115        clippy::pub_underscore_fields,
9116        clippy::style
9117    )]
9118    const _: () = {
9119        use alloy::sol_types as alloy_sol_types;
9120        {
9121            #[doc(hidden)]
9122            type UnderlyingSolTuple<'a> = ();
9123            #[doc(hidden)]
9124            type UnderlyingRustTuple<'a> = ();
9125            #[cfg(test)]
9126            #[allow(dead_code, unreachable_patterns)]
9127            fn _type_assertion(
9128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9129            ) {
9130                match _t {
9131                    alloy_sol_types::private::AssertTypeEq::<
9132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9133                    >(_) => {}
9134                }
9135            }
9136            #[automatically_derived]
9137            #[doc(hidden)]
9138            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
9139                fn from(value: epochStartBlockCall) -> Self {
9140                    ()
9141                }
9142            }
9143            #[automatically_derived]
9144            #[doc(hidden)]
9145            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
9146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9147                    Self
9148                }
9149            }
9150        }
9151        {
9152            #[doc(hidden)]
9153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9154            #[doc(hidden)]
9155            type UnderlyingRustTuple<'a> = (u64,);
9156            #[cfg(test)]
9157            #[allow(dead_code, unreachable_patterns)]
9158            fn _type_assertion(
9159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9160            ) {
9161                match _t {
9162                    alloy_sol_types::private::AssertTypeEq::<
9163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9164                    >(_) => {}
9165                }
9166            }
9167            #[automatically_derived]
9168            #[doc(hidden)]
9169            impl ::core::convert::From<epochStartBlockReturn>
9170            for UnderlyingRustTuple<'_> {
9171                fn from(value: epochStartBlockReturn) -> Self {
9172                    (value._0,)
9173                }
9174            }
9175            #[automatically_derived]
9176            #[doc(hidden)]
9177            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9178            for epochStartBlockReturn {
9179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9180                    Self { _0: tuple.0 }
9181                }
9182            }
9183        }
9184        #[automatically_derived]
9185        impl alloy_sol_types::SolCall for epochStartBlockCall {
9186            type Parameters<'a> = ();
9187            type Token<'a> = <Self::Parameters<
9188                'a,
9189            > as alloy_sol_types::SolType>::Token<'a>;
9190            type Return = u64;
9191            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9192            type ReturnToken<'a> = <Self::ReturnTuple<
9193                'a,
9194            > as alloy_sol_types::SolType>::Token<'a>;
9195            const SIGNATURE: &'static str = "epochStartBlock()";
9196            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
9197            #[inline]
9198            fn new<'a>(
9199                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9200            ) -> Self {
9201                tuple.into()
9202            }
9203            #[inline]
9204            fn tokenize(&self) -> Self::Token<'_> {
9205                ()
9206            }
9207            #[inline]
9208            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9209                (
9210                    <alloy::sol_types::sol_data::Uint<
9211                        64,
9212                    > as alloy_sol_types::SolType>::tokenize(ret),
9213                )
9214            }
9215            #[inline]
9216            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9217                <Self::ReturnTuple<
9218                    '_,
9219                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9220                    .map(|r| {
9221                        let r: epochStartBlockReturn = r.into();
9222                        r._0
9223                    })
9224            }
9225            #[inline]
9226            fn abi_decode_returns_validate(
9227                data: &[u8],
9228            ) -> alloy_sol_types::Result<Self::Return> {
9229                <Self::ReturnTuple<
9230                    '_,
9231                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9232                    .map(|r| {
9233                        let r: epochStartBlockReturn = r.into();
9234                        r._0
9235                    })
9236            }
9237        }
9238    };
9239    #[derive(serde::Serialize, serde::Deserialize)]
9240    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9241    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
9242```solidity
9243function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9244```*/
9245    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9246    #[derive(Clone)]
9247    pub struct finalizedStateCall;
9248    #[derive(serde::Serialize, serde::Deserialize)]
9249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9250    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
9251    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9252    #[derive(Clone)]
9253    pub struct finalizedStateReturn {
9254        #[allow(missing_docs)]
9255        pub viewNum: u64,
9256        #[allow(missing_docs)]
9257        pub blockHeight: u64,
9258        #[allow(missing_docs)]
9259        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9260    }
9261    #[allow(
9262        non_camel_case_types,
9263        non_snake_case,
9264        clippy::pub_underscore_fields,
9265        clippy::style
9266    )]
9267    const _: () = {
9268        use alloy::sol_types as alloy_sol_types;
9269        {
9270            #[doc(hidden)]
9271            type UnderlyingSolTuple<'a> = ();
9272            #[doc(hidden)]
9273            type UnderlyingRustTuple<'a> = ();
9274            #[cfg(test)]
9275            #[allow(dead_code, unreachable_patterns)]
9276            fn _type_assertion(
9277                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9278            ) {
9279                match _t {
9280                    alloy_sol_types::private::AssertTypeEq::<
9281                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9282                    >(_) => {}
9283                }
9284            }
9285            #[automatically_derived]
9286            #[doc(hidden)]
9287            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
9288                fn from(value: finalizedStateCall) -> Self {
9289                    ()
9290                }
9291            }
9292            #[automatically_derived]
9293            #[doc(hidden)]
9294            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
9295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9296                    Self
9297                }
9298            }
9299        }
9300        {
9301            #[doc(hidden)]
9302            type UnderlyingSolTuple<'a> = (
9303                alloy::sol_types::sol_data::Uint<64>,
9304                alloy::sol_types::sol_data::Uint<64>,
9305                BN254::ScalarField,
9306            );
9307            #[doc(hidden)]
9308            type UnderlyingRustTuple<'a> = (
9309                u64,
9310                u64,
9311                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9312            );
9313            #[cfg(test)]
9314            #[allow(dead_code, unreachable_patterns)]
9315            fn _type_assertion(
9316                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9317            ) {
9318                match _t {
9319                    alloy_sol_types::private::AssertTypeEq::<
9320                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9321                    >(_) => {}
9322                }
9323            }
9324            #[automatically_derived]
9325            #[doc(hidden)]
9326            impl ::core::convert::From<finalizedStateReturn>
9327            for UnderlyingRustTuple<'_> {
9328                fn from(value: finalizedStateReturn) -> Self {
9329                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9330                }
9331            }
9332            #[automatically_derived]
9333            #[doc(hidden)]
9334            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9335            for finalizedStateReturn {
9336                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9337                    Self {
9338                        viewNum: tuple.0,
9339                        blockHeight: tuple.1,
9340                        blockCommRoot: tuple.2,
9341                    }
9342                }
9343            }
9344        }
9345        impl finalizedStateReturn {
9346            fn _tokenize(
9347                &self,
9348            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9349                (
9350                    <alloy::sol_types::sol_data::Uint<
9351                        64,
9352                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9353                    <alloy::sol_types::sol_data::Uint<
9354                        64,
9355                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9356                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9357                        &self.blockCommRoot,
9358                    ),
9359                )
9360            }
9361        }
9362        #[automatically_derived]
9363        impl alloy_sol_types::SolCall for finalizedStateCall {
9364            type Parameters<'a> = ();
9365            type Token<'a> = <Self::Parameters<
9366                'a,
9367            > as alloy_sol_types::SolType>::Token<'a>;
9368            type Return = finalizedStateReturn;
9369            type ReturnTuple<'a> = (
9370                alloy::sol_types::sol_data::Uint<64>,
9371                alloy::sol_types::sol_data::Uint<64>,
9372                BN254::ScalarField,
9373            );
9374            type ReturnToken<'a> = <Self::ReturnTuple<
9375                'a,
9376            > as alloy_sol_types::SolType>::Token<'a>;
9377            const SIGNATURE: &'static str = "finalizedState()";
9378            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
9379            #[inline]
9380            fn new<'a>(
9381                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9382            ) -> Self {
9383                tuple.into()
9384            }
9385            #[inline]
9386            fn tokenize(&self) -> Self::Token<'_> {
9387                ()
9388            }
9389            #[inline]
9390            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9391                finalizedStateReturn::_tokenize(ret)
9392            }
9393            #[inline]
9394            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9395                <Self::ReturnTuple<
9396                    '_,
9397                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9398                    .map(Into::into)
9399            }
9400            #[inline]
9401            fn abi_decode_returns_validate(
9402                data: &[u8],
9403            ) -> alloy_sol_types::Result<Self::Return> {
9404                <Self::ReturnTuple<
9405                    '_,
9406                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9407                    .map(Into::into)
9408            }
9409        }
9410    };
9411    #[derive(serde::Serialize, serde::Deserialize)]
9412    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9413    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9414```solidity
9415function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9416```*/
9417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9418    #[derive(Clone)]
9419    pub struct genesisStakeTableStateCall;
9420    #[derive(serde::Serialize, serde::Deserialize)]
9421    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9422    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9423    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9424    #[derive(Clone)]
9425    pub struct genesisStakeTableStateReturn {
9426        #[allow(missing_docs)]
9427        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9428        #[allow(missing_docs)]
9429        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9430        #[allow(missing_docs)]
9431        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9432        #[allow(missing_docs)]
9433        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9434    }
9435    #[allow(
9436        non_camel_case_types,
9437        non_snake_case,
9438        clippy::pub_underscore_fields,
9439        clippy::style
9440    )]
9441    const _: () = {
9442        use alloy::sol_types as alloy_sol_types;
9443        {
9444            #[doc(hidden)]
9445            type UnderlyingSolTuple<'a> = ();
9446            #[doc(hidden)]
9447            type UnderlyingRustTuple<'a> = ();
9448            #[cfg(test)]
9449            #[allow(dead_code, unreachable_patterns)]
9450            fn _type_assertion(
9451                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9452            ) {
9453                match _t {
9454                    alloy_sol_types::private::AssertTypeEq::<
9455                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9456                    >(_) => {}
9457                }
9458            }
9459            #[automatically_derived]
9460            #[doc(hidden)]
9461            impl ::core::convert::From<genesisStakeTableStateCall>
9462            for UnderlyingRustTuple<'_> {
9463                fn from(value: genesisStakeTableStateCall) -> Self {
9464                    ()
9465                }
9466            }
9467            #[automatically_derived]
9468            #[doc(hidden)]
9469            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9470            for genesisStakeTableStateCall {
9471                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9472                    Self
9473                }
9474            }
9475        }
9476        {
9477            #[doc(hidden)]
9478            type UnderlyingSolTuple<'a> = (
9479                alloy::sol_types::sol_data::Uint<256>,
9480                BN254::ScalarField,
9481                BN254::ScalarField,
9482                BN254::ScalarField,
9483            );
9484            #[doc(hidden)]
9485            type UnderlyingRustTuple<'a> = (
9486                alloy::sol_types::private::primitives::aliases::U256,
9487                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9488                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9489                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9490            );
9491            #[cfg(test)]
9492            #[allow(dead_code, unreachable_patterns)]
9493            fn _type_assertion(
9494                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9495            ) {
9496                match _t {
9497                    alloy_sol_types::private::AssertTypeEq::<
9498                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9499                    >(_) => {}
9500                }
9501            }
9502            #[automatically_derived]
9503            #[doc(hidden)]
9504            impl ::core::convert::From<genesisStakeTableStateReturn>
9505            for UnderlyingRustTuple<'_> {
9506                fn from(value: genesisStakeTableStateReturn) -> Self {
9507                    (
9508                        value.threshold,
9509                        value.blsKeyComm,
9510                        value.schnorrKeyComm,
9511                        value.amountComm,
9512                    )
9513                }
9514            }
9515            #[automatically_derived]
9516            #[doc(hidden)]
9517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9518            for genesisStakeTableStateReturn {
9519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9520                    Self {
9521                        threshold: tuple.0,
9522                        blsKeyComm: tuple.1,
9523                        schnorrKeyComm: tuple.2,
9524                        amountComm: tuple.3,
9525                    }
9526                }
9527            }
9528        }
9529        impl genesisStakeTableStateReturn {
9530            fn _tokenize(
9531                &self,
9532            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9533                '_,
9534            > {
9535                (
9536                    <alloy::sol_types::sol_data::Uint<
9537                        256,
9538                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9539                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9540                        &self.blsKeyComm,
9541                    ),
9542                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9543                        &self.schnorrKeyComm,
9544                    ),
9545                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9546                        &self.amountComm,
9547                    ),
9548                )
9549            }
9550        }
9551        #[automatically_derived]
9552        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9553            type Parameters<'a> = ();
9554            type Token<'a> = <Self::Parameters<
9555                'a,
9556            > as alloy_sol_types::SolType>::Token<'a>;
9557            type Return = genesisStakeTableStateReturn;
9558            type ReturnTuple<'a> = (
9559                alloy::sol_types::sol_data::Uint<256>,
9560                BN254::ScalarField,
9561                BN254::ScalarField,
9562                BN254::ScalarField,
9563            );
9564            type ReturnToken<'a> = <Self::ReturnTuple<
9565                'a,
9566            > as alloy_sol_types::SolType>::Token<'a>;
9567            const SIGNATURE: &'static str = "genesisStakeTableState()";
9568            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9569            #[inline]
9570            fn new<'a>(
9571                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9572            ) -> Self {
9573                tuple.into()
9574            }
9575            #[inline]
9576            fn tokenize(&self) -> Self::Token<'_> {
9577                ()
9578            }
9579            #[inline]
9580            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9581                genesisStakeTableStateReturn::_tokenize(ret)
9582            }
9583            #[inline]
9584            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9585                <Self::ReturnTuple<
9586                    '_,
9587                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9588                    .map(Into::into)
9589            }
9590            #[inline]
9591            fn abi_decode_returns_validate(
9592                data: &[u8],
9593            ) -> alloy_sol_types::Result<Self::Return> {
9594                <Self::ReturnTuple<
9595                    '_,
9596                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9597                    .map(Into::into)
9598            }
9599        }
9600    };
9601    #[derive(serde::Serialize, serde::Deserialize)]
9602    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9603    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9604```solidity
9605function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9606```*/
9607    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9608    #[derive(Clone)]
9609    pub struct genesisStateCall;
9610    #[derive(serde::Serialize, serde::Deserialize)]
9611    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9612    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9613    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9614    #[derive(Clone)]
9615    pub struct genesisStateReturn {
9616        #[allow(missing_docs)]
9617        pub viewNum: u64,
9618        #[allow(missing_docs)]
9619        pub blockHeight: u64,
9620        #[allow(missing_docs)]
9621        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9622    }
9623    #[allow(
9624        non_camel_case_types,
9625        non_snake_case,
9626        clippy::pub_underscore_fields,
9627        clippy::style
9628    )]
9629    const _: () = {
9630        use alloy::sol_types as alloy_sol_types;
9631        {
9632            #[doc(hidden)]
9633            type UnderlyingSolTuple<'a> = ();
9634            #[doc(hidden)]
9635            type UnderlyingRustTuple<'a> = ();
9636            #[cfg(test)]
9637            #[allow(dead_code, unreachable_patterns)]
9638            fn _type_assertion(
9639                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9640            ) {
9641                match _t {
9642                    alloy_sol_types::private::AssertTypeEq::<
9643                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9644                    >(_) => {}
9645                }
9646            }
9647            #[automatically_derived]
9648            #[doc(hidden)]
9649            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9650                fn from(value: genesisStateCall) -> Self {
9651                    ()
9652                }
9653            }
9654            #[automatically_derived]
9655            #[doc(hidden)]
9656            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9658                    Self
9659                }
9660            }
9661        }
9662        {
9663            #[doc(hidden)]
9664            type UnderlyingSolTuple<'a> = (
9665                alloy::sol_types::sol_data::Uint<64>,
9666                alloy::sol_types::sol_data::Uint<64>,
9667                BN254::ScalarField,
9668            );
9669            #[doc(hidden)]
9670            type UnderlyingRustTuple<'a> = (
9671                u64,
9672                u64,
9673                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9674            );
9675            #[cfg(test)]
9676            #[allow(dead_code, unreachable_patterns)]
9677            fn _type_assertion(
9678                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9679            ) {
9680                match _t {
9681                    alloy_sol_types::private::AssertTypeEq::<
9682                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9683                    >(_) => {}
9684                }
9685            }
9686            #[automatically_derived]
9687            #[doc(hidden)]
9688            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9689                fn from(value: genesisStateReturn) -> Self {
9690                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9691                }
9692            }
9693            #[automatically_derived]
9694            #[doc(hidden)]
9695            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9696                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9697                    Self {
9698                        viewNum: tuple.0,
9699                        blockHeight: tuple.1,
9700                        blockCommRoot: tuple.2,
9701                    }
9702                }
9703            }
9704        }
9705        impl genesisStateReturn {
9706            fn _tokenize(
9707                &self,
9708            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9709                (
9710                    <alloy::sol_types::sol_data::Uint<
9711                        64,
9712                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9713                    <alloy::sol_types::sol_data::Uint<
9714                        64,
9715                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9716                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9717                        &self.blockCommRoot,
9718                    ),
9719                )
9720            }
9721        }
9722        #[automatically_derived]
9723        impl alloy_sol_types::SolCall for genesisStateCall {
9724            type Parameters<'a> = ();
9725            type Token<'a> = <Self::Parameters<
9726                'a,
9727            > as alloy_sol_types::SolType>::Token<'a>;
9728            type Return = genesisStateReturn;
9729            type ReturnTuple<'a> = (
9730                alloy::sol_types::sol_data::Uint<64>,
9731                alloy::sol_types::sol_data::Uint<64>,
9732                BN254::ScalarField,
9733            );
9734            type ReturnToken<'a> = <Self::ReturnTuple<
9735                'a,
9736            > as alloy_sol_types::SolType>::Token<'a>;
9737            const SIGNATURE: &'static str = "genesisState()";
9738            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9739            #[inline]
9740            fn new<'a>(
9741                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9742            ) -> Self {
9743                tuple.into()
9744            }
9745            #[inline]
9746            fn tokenize(&self) -> Self::Token<'_> {
9747                ()
9748            }
9749            #[inline]
9750            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9751                genesisStateReturn::_tokenize(ret)
9752            }
9753            #[inline]
9754            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9755                <Self::ReturnTuple<
9756                    '_,
9757                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9758                    .map(Into::into)
9759            }
9760            #[inline]
9761            fn abi_decode_returns_validate(
9762                data: &[u8],
9763            ) -> alloy_sol_types::Result<Self::Return> {
9764                <Self::ReturnTuple<
9765                    '_,
9766                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9767                    .map(Into::into)
9768            }
9769        }
9770    };
9771    #[derive(serde::Serialize, serde::Deserialize)]
9772    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9773    /**Function with signature `getFirstEpoch()` and selector `0xb3daf254`.
9774```solidity
9775function getFirstEpoch() external view returns (uint64);
9776```*/
9777    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9778    #[derive(Clone)]
9779    pub struct getFirstEpochCall;
9780    #[derive(serde::Serialize, serde::Deserialize)]
9781    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9782    ///Container type for the return parameters of the [`getFirstEpoch()`](getFirstEpochCall) function.
9783    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9784    #[derive(Clone)]
9785    pub struct getFirstEpochReturn {
9786        #[allow(missing_docs)]
9787        pub _0: u64,
9788    }
9789    #[allow(
9790        non_camel_case_types,
9791        non_snake_case,
9792        clippy::pub_underscore_fields,
9793        clippy::style
9794    )]
9795    const _: () = {
9796        use alloy::sol_types as alloy_sol_types;
9797        {
9798            #[doc(hidden)]
9799            type UnderlyingSolTuple<'a> = ();
9800            #[doc(hidden)]
9801            type UnderlyingRustTuple<'a> = ();
9802            #[cfg(test)]
9803            #[allow(dead_code, unreachable_patterns)]
9804            fn _type_assertion(
9805                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9806            ) {
9807                match _t {
9808                    alloy_sol_types::private::AssertTypeEq::<
9809                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9810                    >(_) => {}
9811                }
9812            }
9813            #[automatically_derived]
9814            #[doc(hidden)]
9815            impl ::core::convert::From<getFirstEpochCall> for UnderlyingRustTuple<'_> {
9816                fn from(value: getFirstEpochCall) -> Self {
9817                    ()
9818                }
9819            }
9820            #[automatically_derived]
9821            #[doc(hidden)]
9822            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochCall {
9823                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9824                    Self
9825                }
9826            }
9827        }
9828        {
9829            #[doc(hidden)]
9830            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9831            #[doc(hidden)]
9832            type UnderlyingRustTuple<'a> = (u64,);
9833            #[cfg(test)]
9834            #[allow(dead_code, unreachable_patterns)]
9835            fn _type_assertion(
9836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9837            ) {
9838                match _t {
9839                    alloy_sol_types::private::AssertTypeEq::<
9840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9841                    >(_) => {}
9842                }
9843            }
9844            #[automatically_derived]
9845            #[doc(hidden)]
9846            impl ::core::convert::From<getFirstEpochReturn> for UnderlyingRustTuple<'_> {
9847                fn from(value: getFirstEpochReturn) -> Self {
9848                    (value._0,)
9849                }
9850            }
9851            #[automatically_derived]
9852            #[doc(hidden)]
9853            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getFirstEpochReturn {
9854                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9855                    Self { _0: tuple.0 }
9856                }
9857            }
9858        }
9859        #[automatically_derived]
9860        impl alloy_sol_types::SolCall for getFirstEpochCall {
9861            type Parameters<'a> = ();
9862            type Token<'a> = <Self::Parameters<
9863                'a,
9864            > as alloy_sol_types::SolType>::Token<'a>;
9865            type Return = u64;
9866            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
9867            type ReturnToken<'a> = <Self::ReturnTuple<
9868                'a,
9869            > as alloy_sol_types::SolType>::Token<'a>;
9870            const SIGNATURE: &'static str = "getFirstEpoch()";
9871            const SELECTOR: [u8; 4] = [179u8, 218u8, 242u8, 84u8];
9872            #[inline]
9873            fn new<'a>(
9874                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9875            ) -> Self {
9876                tuple.into()
9877            }
9878            #[inline]
9879            fn tokenize(&self) -> Self::Token<'_> {
9880                ()
9881            }
9882            #[inline]
9883            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9884                (
9885                    <alloy::sol_types::sol_data::Uint<
9886                        64,
9887                    > as alloy_sol_types::SolType>::tokenize(ret),
9888                )
9889            }
9890            #[inline]
9891            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9892                <Self::ReturnTuple<
9893                    '_,
9894                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9895                    .map(|r| {
9896                        let r: getFirstEpochReturn = r.into();
9897                        r._0
9898                    })
9899            }
9900            #[inline]
9901            fn abi_decode_returns_validate(
9902                data: &[u8],
9903            ) -> alloy_sol_types::Result<Self::Return> {
9904                <Self::ReturnTuple<
9905                    '_,
9906                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9907                    .map(|r| {
9908                        let r: getFirstEpochReturn = r.into();
9909                        r._0
9910                    })
9911            }
9912        }
9913    };
9914    #[derive(serde::Serialize, serde::Deserialize)]
9915    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9916    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9917```solidity
9918function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9919```*/
9920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9921    #[derive(Clone)]
9922    pub struct getHotShotCommitmentCall {
9923        #[allow(missing_docs)]
9924        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9925    }
9926    #[derive(serde::Serialize, serde::Deserialize)]
9927    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9928    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9929    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9930    #[derive(Clone)]
9931    pub struct getHotShotCommitmentReturn {
9932        #[allow(missing_docs)]
9933        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9934        #[allow(missing_docs)]
9935        pub hotshotBlockHeight: u64,
9936    }
9937    #[allow(
9938        non_camel_case_types,
9939        non_snake_case,
9940        clippy::pub_underscore_fields,
9941        clippy::style
9942    )]
9943    const _: () = {
9944        use alloy::sol_types as alloy_sol_types;
9945        {
9946            #[doc(hidden)]
9947            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9948            #[doc(hidden)]
9949            type UnderlyingRustTuple<'a> = (
9950                alloy::sol_types::private::primitives::aliases::U256,
9951            );
9952            #[cfg(test)]
9953            #[allow(dead_code, unreachable_patterns)]
9954            fn _type_assertion(
9955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9956            ) {
9957                match _t {
9958                    alloy_sol_types::private::AssertTypeEq::<
9959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9960                    >(_) => {}
9961                }
9962            }
9963            #[automatically_derived]
9964            #[doc(hidden)]
9965            impl ::core::convert::From<getHotShotCommitmentCall>
9966            for UnderlyingRustTuple<'_> {
9967                fn from(value: getHotShotCommitmentCall) -> Self {
9968                    (value.hotShotBlockHeight,)
9969                }
9970            }
9971            #[automatically_derived]
9972            #[doc(hidden)]
9973            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9974            for getHotShotCommitmentCall {
9975                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9976                    Self {
9977                        hotShotBlockHeight: tuple.0,
9978                    }
9979                }
9980            }
9981        }
9982        {
9983            #[doc(hidden)]
9984            type UnderlyingSolTuple<'a> = (
9985                BN254::ScalarField,
9986                alloy::sol_types::sol_data::Uint<64>,
9987            );
9988            #[doc(hidden)]
9989            type UnderlyingRustTuple<'a> = (
9990                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9991                u64,
9992            );
9993            #[cfg(test)]
9994            #[allow(dead_code, unreachable_patterns)]
9995            fn _type_assertion(
9996                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9997            ) {
9998                match _t {
9999                    alloy_sol_types::private::AssertTypeEq::<
10000                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10001                    >(_) => {}
10002                }
10003            }
10004            #[automatically_derived]
10005            #[doc(hidden)]
10006            impl ::core::convert::From<getHotShotCommitmentReturn>
10007            for UnderlyingRustTuple<'_> {
10008                fn from(value: getHotShotCommitmentReturn) -> Self {
10009                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
10010                }
10011            }
10012            #[automatically_derived]
10013            #[doc(hidden)]
10014            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10015            for getHotShotCommitmentReturn {
10016                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10017                    Self {
10018                        hotShotBlockCommRoot: tuple.0,
10019                        hotshotBlockHeight: tuple.1,
10020                    }
10021                }
10022            }
10023        }
10024        impl getHotShotCommitmentReturn {
10025            fn _tokenize(
10026                &self,
10027            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
10028                '_,
10029            > {
10030                (
10031                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10032                        &self.hotShotBlockCommRoot,
10033                    ),
10034                    <alloy::sol_types::sol_data::Uint<
10035                        64,
10036                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
10037                )
10038            }
10039        }
10040        #[automatically_derived]
10041        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
10042            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10043            type Token<'a> = <Self::Parameters<
10044                'a,
10045            > as alloy_sol_types::SolType>::Token<'a>;
10046            type Return = getHotShotCommitmentReturn;
10047            type ReturnTuple<'a> = (
10048                BN254::ScalarField,
10049                alloy::sol_types::sol_data::Uint<64>,
10050            );
10051            type ReturnToken<'a> = <Self::ReturnTuple<
10052                'a,
10053            > as alloy_sol_types::SolType>::Token<'a>;
10054            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
10055            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
10056            #[inline]
10057            fn new<'a>(
10058                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10059            ) -> Self {
10060                tuple.into()
10061            }
10062            #[inline]
10063            fn tokenize(&self) -> Self::Token<'_> {
10064                (
10065                    <alloy::sol_types::sol_data::Uint<
10066                        256,
10067                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10068                )
10069            }
10070            #[inline]
10071            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10072                getHotShotCommitmentReturn::_tokenize(ret)
10073            }
10074            #[inline]
10075            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10076                <Self::ReturnTuple<
10077                    '_,
10078                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10079                    .map(Into::into)
10080            }
10081            #[inline]
10082            fn abi_decode_returns_validate(
10083                data: &[u8],
10084            ) -> alloy_sol_types::Result<Self::Return> {
10085                <Self::ReturnTuple<
10086                    '_,
10087                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10088                    .map(Into::into)
10089            }
10090        }
10091    };
10092    #[derive(serde::Serialize, serde::Deserialize)]
10093    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10094    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
10095```solidity
10096function getStateHistoryCount() external view returns (uint256);
10097```*/
10098    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10099    #[derive(Clone)]
10100    pub struct getStateHistoryCountCall;
10101    #[derive(serde::Serialize, serde::Deserialize)]
10102    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10103    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
10104    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10105    #[derive(Clone)]
10106    pub struct getStateHistoryCountReturn {
10107        #[allow(missing_docs)]
10108        pub _0: alloy::sol_types::private::primitives::aliases::U256,
10109    }
10110    #[allow(
10111        non_camel_case_types,
10112        non_snake_case,
10113        clippy::pub_underscore_fields,
10114        clippy::style
10115    )]
10116    const _: () = {
10117        use alloy::sol_types as alloy_sol_types;
10118        {
10119            #[doc(hidden)]
10120            type UnderlyingSolTuple<'a> = ();
10121            #[doc(hidden)]
10122            type UnderlyingRustTuple<'a> = ();
10123            #[cfg(test)]
10124            #[allow(dead_code, unreachable_patterns)]
10125            fn _type_assertion(
10126                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10127            ) {
10128                match _t {
10129                    alloy_sol_types::private::AssertTypeEq::<
10130                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10131                    >(_) => {}
10132                }
10133            }
10134            #[automatically_derived]
10135            #[doc(hidden)]
10136            impl ::core::convert::From<getStateHistoryCountCall>
10137            for UnderlyingRustTuple<'_> {
10138                fn from(value: getStateHistoryCountCall) -> Self {
10139                    ()
10140                }
10141            }
10142            #[automatically_derived]
10143            #[doc(hidden)]
10144            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10145            for getStateHistoryCountCall {
10146                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10147                    Self
10148                }
10149            }
10150        }
10151        {
10152            #[doc(hidden)]
10153            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10154            #[doc(hidden)]
10155            type UnderlyingRustTuple<'a> = (
10156                alloy::sol_types::private::primitives::aliases::U256,
10157            );
10158            #[cfg(test)]
10159            #[allow(dead_code, unreachable_patterns)]
10160            fn _type_assertion(
10161                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10162            ) {
10163                match _t {
10164                    alloy_sol_types::private::AssertTypeEq::<
10165                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10166                    >(_) => {}
10167                }
10168            }
10169            #[automatically_derived]
10170            #[doc(hidden)]
10171            impl ::core::convert::From<getStateHistoryCountReturn>
10172            for UnderlyingRustTuple<'_> {
10173                fn from(value: getStateHistoryCountReturn) -> Self {
10174                    (value._0,)
10175                }
10176            }
10177            #[automatically_derived]
10178            #[doc(hidden)]
10179            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10180            for getStateHistoryCountReturn {
10181                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10182                    Self { _0: tuple.0 }
10183                }
10184            }
10185        }
10186        #[automatically_derived]
10187        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
10188            type Parameters<'a> = ();
10189            type Token<'a> = <Self::Parameters<
10190                'a,
10191            > as alloy_sol_types::SolType>::Token<'a>;
10192            type Return = alloy::sol_types::private::primitives::aliases::U256;
10193            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10194            type ReturnToken<'a> = <Self::ReturnTuple<
10195                'a,
10196            > as alloy_sol_types::SolType>::Token<'a>;
10197            const SIGNATURE: &'static str = "getStateHistoryCount()";
10198            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
10199            #[inline]
10200            fn new<'a>(
10201                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10202            ) -> Self {
10203                tuple.into()
10204            }
10205            #[inline]
10206            fn tokenize(&self) -> Self::Token<'_> {
10207                ()
10208            }
10209            #[inline]
10210            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10211                (
10212                    <alloy::sol_types::sol_data::Uint<
10213                        256,
10214                    > as alloy_sol_types::SolType>::tokenize(ret),
10215                )
10216            }
10217            #[inline]
10218            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10219                <Self::ReturnTuple<
10220                    '_,
10221                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10222                    .map(|r| {
10223                        let r: getStateHistoryCountReturn = r.into();
10224                        r._0
10225                    })
10226            }
10227            #[inline]
10228            fn abi_decode_returns_validate(
10229                data: &[u8],
10230            ) -> alloy_sol_types::Result<Self::Return> {
10231                <Self::ReturnTuple<
10232                    '_,
10233                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10234                    .map(|r| {
10235                        let r: getStateHistoryCountReturn = r.into();
10236                        r._0
10237                    })
10238            }
10239        }
10240    };
10241    #[derive(serde::Serialize, serde::Deserialize)]
10242    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10243    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
10244```solidity
10245function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
10246```*/
10247    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10248    #[derive(Clone)]
10249    pub struct getVersionCall;
10250    #[derive(serde::Serialize, serde::Deserialize)]
10251    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10252    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
10253    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10254    #[derive(Clone)]
10255    pub struct getVersionReturn {
10256        #[allow(missing_docs)]
10257        pub majorVersion: u8,
10258        #[allow(missing_docs)]
10259        pub minorVersion: u8,
10260        #[allow(missing_docs)]
10261        pub patchVersion: u8,
10262    }
10263    #[allow(
10264        non_camel_case_types,
10265        non_snake_case,
10266        clippy::pub_underscore_fields,
10267        clippy::style
10268    )]
10269    const _: () = {
10270        use alloy::sol_types as alloy_sol_types;
10271        {
10272            #[doc(hidden)]
10273            type UnderlyingSolTuple<'a> = ();
10274            #[doc(hidden)]
10275            type UnderlyingRustTuple<'a> = ();
10276            #[cfg(test)]
10277            #[allow(dead_code, unreachable_patterns)]
10278            fn _type_assertion(
10279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10280            ) {
10281                match _t {
10282                    alloy_sol_types::private::AssertTypeEq::<
10283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10284                    >(_) => {}
10285                }
10286            }
10287            #[automatically_derived]
10288            #[doc(hidden)]
10289            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
10290                fn from(value: getVersionCall) -> Self {
10291                    ()
10292                }
10293            }
10294            #[automatically_derived]
10295            #[doc(hidden)]
10296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
10297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10298                    Self
10299                }
10300            }
10301        }
10302        {
10303            #[doc(hidden)]
10304            type UnderlyingSolTuple<'a> = (
10305                alloy::sol_types::sol_data::Uint<8>,
10306                alloy::sol_types::sol_data::Uint<8>,
10307                alloy::sol_types::sol_data::Uint<8>,
10308            );
10309            #[doc(hidden)]
10310            type UnderlyingRustTuple<'a> = (u8, u8, u8);
10311            #[cfg(test)]
10312            #[allow(dead_code, unreachable_patterns)]
10313            fn _type_assertion(
10314                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10315            ) {
10316                match _t {
10317                    alloy_sol_types::private::AssertTypeEq::<
10318                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10319                    >(_) => {}
10320                }
10321            }
10322            #[automatically_derived]
10323            #[doc(hidden)]
10324            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
10325                fn from(value: getVersionReturn) -> Self {
10326                    (value.majorVersion, value.minorVersion, value.patchVersion)
10327                }
10328            }
10329            #[automatically_derived]
10330            #[doc(hidden)]
10331            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
10332                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10333                    Self {
10334                        majorVersion: tuple.0,
10335                        minorVersion: tuple.1,
10336                        patchVersion: tuple.2,
10337                    }
10338                }
10339            }
10340        }
10341        impl getVersionReturn {
10342            fn _tokenize(
10343                &self,
10344            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10345                (
10346                    <alloy::sol_types::sol_data::Uint<
10347                        8,
10348                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
10349                    <alloy::sol_types::sol_data::Uint<
10350                        8,
10351                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
10352                    <alloy::sol_types::sol_data::Uint<
10353                        8,
10354                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
10355                )
10356            }
10357        }
10358        #[automatically_derived]
10359        impl alloy_sol_types::SolCall for getVersionCall {
10360            type Parameters<'a> = ();
10361            type Token<'a> = <Self::Parameters<
10362                'a,
10363            > as alloy_sol_types::SolType>::Token<'a>;
10364            type Return = getVersionReturn;
10365            type ReturnTuple<'a> = (
10366                alloy::sol_types::sol_data::Uint<8>,
10367                alloy::sol_types::sol_data::Uint<8>,
10368                alloy::sol_types::sol_data::Uint<8>,
10369            );
10370            type ReturnToken<'a> = <Self::ReturnTuple<
10371                'a,
10372            > as alloy_sol_types::SolType>::Token<'a>;
10373            const SIGNATURE: &'static str = "getVersion()";
10374            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
10375            #[inline]
10376            fn new<'a>(
10377                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10378            ) -> Self {
10379                tuple.into()
10380            }
10381            #[inline]
10382            fn tokenize(&self) -> Self::Token<'_> {
10383                ()
10384            }
10385            #[inline]
10386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10387                getVersionReturn::_tokenize(ret)
10388            }
10389            #[inline]
10390            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10391                <Self::ReturnTuple<
10392                    '_,
10393                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10394                    .map(Into::into)
10395            }
10396            #[inline]
10397            fn abi_decode_returns_validate(
10398                data: &[u8],
10399            ) -> alloy_sol_types::Result<Self::Return> {
10400                <Self::ReturnTuple<
10401                    '_,
10402                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10403                    .map(Into::into)
10404            }
10405        }
10406    };
10407    #[derive(serde::Serialize, serde::Deserialize)]
10408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10409    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
10410```solidity
10411function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
10412```*/
10413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10414    #[derive(Clone)]
10415    pub struct initializeCall {
10416        #[allow(missing_docs)]
10417        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10418        #[allow(missing_docs)]
10419        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10420        #[allow(missing_docs)]
10421        pub _stateHistoryRetentionPeriod: u32,
10422        #[allow(missing_docs)]
10423        pub owner: alloy::sol_types::private::Address,
10424    }
10425    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
10426    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10427    #[derive(Clone)]
10428    pub struct initializeReturn {}
10429    #[allow(
10430        non_camel_case_types,
10431        non_snake_case,
10432        clippy::pub_underscore_fields,
10433        clippy::style
10434    )]
10435    const _: () = {
10436        use alloy::sol_types as alloy_sol_types;
10437        {
10438            #[doc(hidden)]
10439            type UnderlyingSolTuple<'a> = (
10440                LightClient::LightClientState,
10441                LightClient::StakeTableState,
10442                alloy::sol_types::sol_data::Uint<32>,
10443                alloy::sol_types::sol_data::Address,
10444            );
10445            #[doc(hidden)]
10446            type UnderlyingRustTuple<'a> = (
10447                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10448                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10449                u32,
10450                alloy::sol_types::private::Address,
10451            );
10452            #[cfg(test)]
10453            #[allow(dead_code, unreachable_patterns)]
10454            fn _type_assertion(
10455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10456            ) {
10457                match _t {
10458                    alloy_sol_types::private::AssertTypeEq::<
10459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10460                    >(_) => {}
10461                }
10462            }
10463            #[automatically_derived]
10464            #[doc(hidden)]
10465            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
10466                fn from(value: initializeCall) -> Self {
10467                    (
10468                        value._genesis,
10469                        value._genesisStakeTableState,
10470                        value._stateHistoryRetentionPeriod,
10471                        value.owner,
10472                    )
10473                }
10474            }
10475            #[automatically_derived]
10476            #[doc(hidden)]
10477            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
10478                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10479                    Self {
10480                        _genesis: tuple.0,
10481                        _genesisStakeTableState: tuple.1,
10482                        _stateHistoryRetentionPeriod: tuple.2,
10483                        owner: tuple.3,
10484                    }
10485                }
10486            }
10487        }
10488        {
10489            #[doc(hidden)]
10490            type UnderlyingSolTuple<'a> = ();
10491            #[doc(hidden)]
10492            type UnderlyingRustTuple<'a> = ();
10493            #[cfg(test)]
10494            #[allow(dead_code, unreachable_patterns)]
10495            fn _type_assertion(
10496                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10497            ) {
10498                match _t {
10499                    alloy_sol_types::private::AssertTypeEq::<
10500                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10501                    >(_) => {}
10502                }
10503            }
10504            #[automatically_derived]
10505            #[doc(hidden)]
10506            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
10507                fn from(value: initializeReturn) -> Self {
10508                    ()
10509                }
10510            }
10511            #[automatically_derived]
10512            #[doc(hidden)]
10513            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
10514                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10515                    Self {}
10516                }
10517            }
10518        }
10519        impl initializeReturn {
10520            fn _tokenize(
10521                &self,
10522            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10523                ()
10524            }
10525        }
10526        #[automatically_derived]
10527        impl alloy_sol_types::SolCall for initializeCall {
10528            type Parameters<'a> = (
10529                LightClient::LightClientState,
10530                LightClient::StakeTableState,
10531                alloy::sol_types::sol_data::Uint<32>,
10532                alloy::sol_types::sol_data::Address,
10533            );
10534            type Token<'a> = <Self::Parameters<
10535                'a,
10536            > as alloy_sol_types::SolType>::Token<'a>;
10537            type Return = initializeReturn;
10538            type ReturnTuple<'a> = ();
10539            type ReturnToken<'a> = <Self::ReturnTuple<
10540                'a,
10541            > as alloy_sol_types::SolType>::Token<'a>;
10542            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10543            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10544            #[inline]
10545            fn new<'a>(
10546                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10547            ) -> Self {
10548                tuple.into()
10549            }
10550            #[inline]
10551            fn tokenize(&self) -> Self::Token<'_> {
10552                (
10553                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10554                        &self._genesis,
10555                    ),
10556                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10557                        &self._genesisStakeTableState,
10558                    ),
10559                    <alloy::sol_types::sol_data::Uint<
10560                        32,
10561                    > as alloy_sol_types::SolType>::tokenize(
10562                        &self._stateHistoryRetentionPeriod,
10563                    ),
10564                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10565                        &self.owner,
10566                    ),
10567                )
10568            }
10569            #[inline]
10570            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10571                initializeReturn::_tokenize(ret)
10572            }
10573            #[inline]
10574            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10575                <Self::ReturnTuple<
10576                    '_,
10577                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10578                    .map(Into::into)
10579            }
10580            #[inline]
10581            fn abi_decode_returns_validate(
10582                data: &[u8],
10583            ) -> alloy_sol_types::Result<Self::Return> {
10584                <Self::ReturnTuple<
10585                    '_,
10586                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10587                    .map(Into::into)
10588            }
10589        }
10590    };
10591    #[derive(serde::Serialize, serde::Deserialize)]
10592    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10593    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10594```solidity
10595function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10596```*/
10597    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10598    #[derive(Clone)]
10599    pub struct initializeV2Call {
10600        #[allow(missing_docs)]
10601        pub _blocksPerEpoch: u64,
10602        #[allow(missing_docs)]
10603        pub _epochStartBlock: u64,
10604    }
10605    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10606    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10607    #[derive(Clone)]
10608    pub struct initializeV2Return {}
10609    #[allow(
10610        non_camel_case_types,
10611        non_snake_case,
10612        clippy::pub_underscore_fields,
10613        clippy::style
10614    )]
10615    const _: () = {
10616        use alloy::sol_types as alloy_sol_types;
10617        {
10618            #[doc(hidden)]
10619            type UnderlyingSolTuple<'a> = (
10620                alloy::sol_types::sol_data::Uint<64>,
10621                alloy::sol_types::sol_data::Uint<64>,
10622            );
10623            #[doc(hidden)]
10624            type UnderlyingRustTuple<'a> = (u64, u64);
10625            #[cfg(test)]
10626            #[allow(dead_code, unreachable_patterns)]
10627            fn _type_assertion(
10628                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10629            ) {
10630                match _t {
10631                    alloy_sol_types::private::AssertTypeEq::<
10632                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10633                    >(_) => {}
10634                }
10635            }
10636            #[automatically_derived]
10637            #[doc(hidden)]
10638            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10639                fn from(value: initializeV2Call) -> Self {
10640                    (value._blocksPerEpoch, value._epochStartBlock)
10641                }
10642            }
10643            #[automatically_derived]
10644            #[doc(hidden)]
10645            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10646                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10647                    Self {
10648                        _blocksPerEpoch: tuple.0,
10649                        _epochStartBlock: tuple.1,
10650                    }
10651                }
10652            }
10653        }
10654        {
10655            #[doc(hidden)]
10656            type UnderlyingSolTuple<'a> = ();
10657            #[doc(hidden)]
10658            type UnderlyingRustTuple<'a> = ();
10659            #[cfg(test)]
10660            #[allow(dead_code, unreachable_patterns)]
10661            fn _type_assertion(
10662                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10663            ) {
10664                match _t {
10665                    alloy_sol_types::private::AssertTypeEq::<
10666                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10667                    >(_) => {}
10668                }
10669            }
10670            #[automatically_derived]
10671            #[doc(hidden)]
10672            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10673                fn from(value: initializeV2Return) -> Self {
10674                    ()
10675                }
10676            }
10677            #[automatically_derived]
10678            #[doc(hidden)]
10679            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10680                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10681                    Self {}
10682                }
10683            }
10684        }
10685        impl initializeV2Return {
10686            fn _tokenize(
10687                &self,
10688            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10689                ()
10690            }
10691        }
10692        #[automatically_derived]
10693        impl alloy_sol_types::SolCall for initializeV2Call {
10694            type Parameters<'a> = (
10695                alloy::sol_types::sol_data::Uint<64>,
10696                alloy::sol_types::sol_data::Uint<64>,
10697            );
10698            type Token<'a> = <Self::Parameters<
10699                'a,
10700            > as alloy_sol_types::SolType>::Token<'a>;
10701            type Return = initializeV2Return;
10702            type ReturnTuple<'a> = ();
10703            type ReturnToken<'a> = <Self::ReturnTuple<
10704                'a,
10705            > as alloy_sol_types::SolType>::Token<'a>;
10706            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10707            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10708            #[inline]
10709            fn new<'a>(
10710                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10711            ) -> Self {
10712                tuple.into()
10713            }
10714            #[inline]
10715            fn tokenize(&self) -> Self::Token<'_> {
10716                (
10717                    <alloy::sol_types::sol_data::Uint<
10718                        64,
10719                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10720                    <alloy::sol_types::sol_data::Uint<
10721                        64,
10722                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10723                )
10724            }
10725            #[inline]
10726            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10727                initializeV2Return::_tokenize(ret)
10728            }
10729            #[inline]
10730            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10731                <Self::ReturnTuple<
10732                    '_,
10733                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10734                    .map(Into::into)
10735            }
10736            #[inline]
10737            fn abi_decode_returns_validate(
10738                data: &[u8],
10739            ) -> alloy_sol_types::Result<Self::Return> {
10740                <Self::ReturnTuple<
10741                    '_,
10742                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10743                    .map(Into::into)
10744            }
10745        }
10746    };
10747    #[derive(serde::Serialize, serde::Deserialize)]
10748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10749    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10750```solidity
10751function isEpochRoot(uint64 blockHeight) external view returns (bool);
10752```*/
10753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10754    #[derive(Clone)]
10755    pub struct isEpochRootCall {
10756        #[allow(missing_docs)]
10757        pub blockHeight: u64,
10758    }
10759    #[derive(serde::Serialize, serde::Deserialize)]
10760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10761    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10762    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10763    #[derive(Clone)]
10764    pub struct isEpochRootReturn {
10765        #[allow(missing_docs)]
10766        pub _0: bool,
10767    }
10768    #[allow(
10769        non_camel_case_types,
10770        non_snake_case,
10771        clippy::pub_underscore_fields,
10772        clippy::style
10773    )]
10774    const _: () = {
10775        use alloy::sol_types as alloy_sol_types;
10776        {
10777            #[doc(hidden)]
10778            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10779            #[doc(hidden)]
10780            type UnderlyingRustTuple<'a> = (u64,);
10781            #[cfg(test)]
10782            #[allow(dead_code, unreachable_patterns)]
10783            fn _type_assertion(
10784                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10785            ) {
10786                match _t {
10787                    alloy_sol_types::private::AssertTypeEq::<
10788                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10789                    >(_) => {}
10790                }
10791            }
10792            #[automatically_derived]
10793            #[doc(hidden)]
10794            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10795                fn from(value: isEpochRootCall) -> Self {
10796                    (value.blockHeight,)
10797                }
10798            }
10799            #[automatically_derived]
10800            #[doc(hidden)]
10801            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10802                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10803                    Self { blockHeight: tuple.0 }
10804                }
10805            }
10806        }
10807        {
10808            #[doc(hidden)]
10809            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10810            #[doc(hidden)]
10811            type UnderlyingRustTuple<'a> = (bool,);
10812            #[cfg(test)]
10813            #[allow(dead_code, unreachable_patterns)]
10814            fn _type_assertion(
10815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10816            ) {
10817                match _t {
10818                    alloy_sol_types::private::AssertTypeEq::<
10819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10820                    >(_) => {}
10821                }
10822            }
10823            #[automatically_derived]
10824            #[doc(hidden)]
10825            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10826                fn from(value: isEpochRootReturn) -> Self {
10827                    (value._0,)
10828                }
10829            }
10830            #[automatically_derived]
10831            #[doc(hidden)]
10832            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10833                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10834                    Self { _0: tuple.0 }
10835                }
10836            }
10837        }
10838        #[automatically_derived]
10839        impl alloy_sol_types::SolCall for isEpochRootCall {
10840            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10841            type Token<'a> = <Self::Parameters<
10842                'a,
10843            > as alloy_sol_types::SolType>::Token<'a>;
10844            type Return = bool;
10845            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10846            type ReturnToken<'a> = <Self::ReturnTuple<
10847                'a,
10848            > as alloy_sol_types::SolType>::Token<'a>;
10849            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10850            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10851            #[inline]
10852            fn new<'a>(
10853                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10854            ) -> Self {
10855                tuple.into()
10856            }
10857            #[inline]
10858            fn tokenize(&self) -> Self::Token<'_> {
10859                (
10860                    <alloy::sol_types::sol_data::Uint<
10861                        64,
10862                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10863                )
10864            }
10865            #[inline]
10866            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10867                (
10868                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10869                        ret,
10870                    ),
10871                )
10872            }
10873            #[inline]
10874            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10875                <Self::ReturnTuple<
10876                    '_,
10877                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10878                    .map(|r| {
10879                        let r: isEpochRootReturn = r.into();
10880                        r._0
10881                    })
10882            }
10883            #[inline]
10884            fn abi_decode_returns_validate(
10885                data: &[u8],
10886            ) -> alloy_sol_types::Result<Self::Return> {
10887                <Self::ReturnTuple<
10888                    '_,
10889                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10890                    .map(|r| {
10891                        let r: isEpochRootReturn = r.into();
10892                        r._0
10893                    })
10894            }
10895        }
10896    };
10897    #[derive(serde::Serialize, serde::Deserialize)]
10898    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10899    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10900```solidity
10901function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10902```*/
10903    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10904    #[derive(Clone)]
10905    pub struct isGtEpochRootCall {
10906        #[allow(missing_docs)]
10907        pub blockHeight: u64,
10908    }
10909    #[derive(serde::Serialize, serde::Deserialize)]
10910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10911    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10912    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10913    #[derive(Clone)]
10914    pub struct isGtEpochRootReturn {
10915        #[allow(missing_docs)]
10916        pub _0: bool,
10917    }
10918    #[allow(
10919        non_camel_case_types,
10920        non_snake_case,
10921        clippy::pub_underscore_fields,
10922        clippy::style
10923    )]
10924    const _: () = {
10925        use alloy::sol_types as alloy_sol_types;
10926        {
10927            #[doc(hidden)]
10928            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10929            #[doc(hidden)]
10930            type UnderlyingRustTuple<'a> = (u64,);
10931            #[cfg(test)]
10932            #[allow(dead_code, unreachable_patterns)]
10933            fn _type_assertion(
10934                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10935            ) {
10936                match _t {
10937                    alloy_sol_types::private::AssertTypeEq::<
10938                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10939                    >(_) => {}
10940                }
10941            }
10942            #[automatically_derived]
10943            #[doc(hidden)]
10944            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10945                fn from(value: isGtEpochRootCall) -> Self {
10946                    (value.blockHeight,)
10947                }
10948            }
10949            #[automatically_derived]
10950            #[doc(hidden)]
10951            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10952                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10953                    Self { blockHeight: tuple.0 }
10954                }
10955            }
10956        }
10957        {
10958            #[doc(hidden)]
10959            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10960            #[doc(hidden)]
10961            type UnderlyingRustTuple<'a> = (bool,);
10962            #[cfg(test)]
10963            #[allow(dead_code, unreachable_patterns)]
10964            fn _type_assertion(
10965                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10966            ) {
10967                match _t {
10968                    alloy_sol_types::private::AssertTypeEq::<
10969                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10970                    >(_) => {}
10971                }
10972            }
10973            #[automatically_derived]
10974            #[doc(hidden)]
10975            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10976                fn from(value: isGtEpochRootReturn) -> Self {
10977                    (value._0,)
10978                }
10979            }
10980            #[automatically_derived]
10981            #[doc(hidden)]
10982            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10983                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10984                    Self { _0: tuple.0 }
10985                }
10986            }
10987        }
10988        #[automatically_derived]
10989        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10990            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10991            type Token<'a> = <Self::Parameters<
10992                'a,
10993            > as alloy_sol_types::SolType>::Token<'a>;
10994            type Return = bool;
10995            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10996            type ReturnToken<'a> = <Self::ReturnTuple<
10997                'a,
10998            > as alloy_sol_types::SolType>::Token<'a>;
10999            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
11000            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
11001            #[inline]
11002            fn new<'a>(
11003                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11004            ) -> Self {
11005                tuple.into()
11006            }
11007            #[inline]
11008            fn tokenize(&self) -> Self::Token<'_> {
11009                (
11010                    <alloy::sol_types::sol_data::Uint<
11011                        64,
11012                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
11013                )
11014            }
11015            #[inline]
11016            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11017                (
11018                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11019                        ret,
11020                    ),
11021                )
11022            }
11023            #[inline]
11024            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11025                <Self::ReturnTuple<
11026                    '_,
11027                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11028                    .map(|r| {
11029                        let r: isGtEpochRootReturn = r.into();
11030                        r._0
11031                    })
11032            }
11033            #[inline]
11034            fn abi_decode_returns_validate(
11035                data: &[u8],
11036            ) -> alloy_sol_types::Result<Self::Return> {
11037                <Self::ReturnTuple<
11038                    '_,
11039                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11040                    .map(|r| {
11041                        let r: isGtEpochRootReturn = r.into();
11042                        r._0
11043                    })
11044            }
11045        }
11046    };
11047    #[derive(serde::Serialize, serde::Deserialize)]
11048    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11049    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
11050```solidity
11051function isPermissionedProverEnabled() external view returns (bool);
11052```*/
11053    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11054    #[derive(Clone)]
11055    pub struct isPermissionedProverEnabledCall;
11056    #[derive(serde::Serialize, serde::Deserialize)]
11057    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11058    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
11059    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11060    #[derive(Clone)]
11061    pub struct isPermissionedProverEnabledReturn {
11062        #[allow(missing_docs)]
11063        pub _0: bool,
11064    }
11065    #[allow(
11066        non_camel_case_types,
11067        non_snake_case,
11068        clippy::pub_underscore_fields,
11069        clippy::style
11070    )]
11071    const _: () = {
11072        use alloy::sol_types as alloy_sol_types;
11073        {
11074            #[doc(hidden)]
11075            type UnderlyingSolTuple<'a> = ();
11076            #[doc(hidden)]
11077            type UnderlyingRustTuple<'a> = ();
11078            #[cfg(test)]
11079            #[allow(dead_code, unreachable_patterns)]
11080            fn _type_assertion(
11081                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11082            ) {
11083                match _t {
11084                    alloy_sol_types::private::AssertTypeEq::<
11085                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11086                    >(_) => {}
11087                }
11088            }
11089            #[automatically_derived]
11090            #[doc(hidden)]
11091            impl ::core::convert::From<isPermissionedProverEnabledCall>
11092            for UnderlyingRustTuple<'_> {
11093                fn from(value: isPermissionedProverEnabledCall) -> Self {
11094                    ()
11095                }
11096            }
11097            #[automatically_derived]
11098            #[doc(hidden)]
11099            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11100            for isPermissionedProverEnabledCall {
11101                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11102                    Self
11103                }
11104            }
11105        }
11106        {
11107            #[doc(hidden)]
11108            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11109            #[doc(hidden)]
11110            type UnderlyingRustTuple<'a> = (bool,);
11111            #[cfg(test)]
11112            #[allow(dead_code, unreachable_patterns)]
11113            fn _type_assertion(
11114                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11115            ) {
11116                match _t {
11117                    alloy_sol_types::private::AssertTypeEq::<
11118                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11119                    >(_) => {}
11120                }
11121            }
11122            #[automatically_derived]
11123            #[doc(hidden)]
11124            impl ::core::convert::From<isPermissionedProverEnabledReturn>
11125            for UnderlyingRustTuple<'_> {
11126                fn from(value: isPermissionedProverEnabledReturn) -> Self {
11127                    (value._0,)
11128                }
11129            }
11130            #[automatically_derived]
11131            #[doc(hidden)]
11132            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11133            for isPermissionedProverEnabledReturn {
11134                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11135                    Self { _0: tuple.0 }
11136                }
11137            }
11138        }
11139        #[automatically_derived]
11140        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
11141            type Parameters<'a> = ();
11142            type Token<'a> = <Self::Parameters<
11143                'a,
11144            > as alloy_sol_types::SolType>::Token<'a>;
11145            type Return = bool;
11146            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11147            type ReturnToken<'a> = <Self::ReturnTuple<
11148                'a,
11149            > as alloy_sol_types::SolType>::Token<'a>;
11150            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
11151            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
11152            #[inline]
11153            fn new<'a>(
11154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11155            ) -> Self {
11156                tuple.into()
11157            }
11158            #[inline]
11159            fn tokenize(&self) -> Self::Token<'_> {
11160                ()
11161            }
11162            #[inline]
11163            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11164                (
11165                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11166                        ret,
11167                    ),
11168                )
11169            }
11170            #[inline]
11171            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11172                <Self::ReturnTuple<
11173                    '_,
11174                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11175                    .map(|r| {
11176                        let r: isPermissionedProverEnabledReturn = r.into();
11177                        r._0
11178                    })
11179            }
11180            #[inline]
11181            fn abi_decode_returns_validate(
11182                data: &[u8],
11183            ) -> alloy_sol_types::Result<Self::Return> {
11184                <Self::ReturnTuple<
11185                    '_,
11186                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11187                    .map(|r| {
11188                        let r: isPermissionedProverEnabledReturn = r.into();
11189                        r._0
11190                    })
11191            }
11192        }
11193    };
11194    #[derive(serde::Serialize, serde::Deserialize)]
11195    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11196    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
11197```solidity
11198function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
11199```*/
11200    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11201    #[derive(Clone)]
11202    pub struct lagOverEscapeHatchThresholdCall {
11203        #[allow(missing_docs)]
11204        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
11205        #[allow(missing_docs)]
11206        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
11207    }
11208    #[derive(serde::Serialize, serde::Deserialize)]
11209    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11210    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
11211    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11212    #[derive(Clone)]
11213    pub struct lagOverEscapeHatchThresholdReturn {
11214        #[allow(missing_docs)]
11215        pub _0: bool,
11216    }
11217    #[allow(
11218        non_camel_case_types,
11219        non_snake_case,
11220        clippy::pub_underscore_fields,
11221        clippy::style
11222    )]
11223    const _: () = {
11224        use alloy::sol_types as alloy_sol_types;
11225        {
11226            #[doc(hidden)]
11227            type UnderlyingSolTuple<'a> = (
11228                alloy::sol_types::sol_data::Uint<256>,
11229                alloy::sol_types::sol_data::Uint<256>,
11230            );
11231            #[doc(hidden)]
11232            type UnderlyingRustTuple<'a> = (
11233                alloy::sol_types::private::primitives::aliases::U256,
11234                alloy::sol_types::private::primitives::aliases::U256,
11235            );
11236            #[cfg(test)]
11237            #[allow(dead_code, unreachable_patterns)]
11238            fn _type_assertion(
11239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11240            ) {
11241                match _t {
11242                    alloy_sol_types::private::AssertTypeEq::<
11243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11244                    >(_) => {}
11245                }
11246            }
11247            #[automatically_derived]
11248            #[doc(hidden)]
11249            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
11250            for UnderlyingRustTuple<'_> {
11251                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
11252                    (value.blockNumber, value.threshold)
11253                }
11254            }
11255            #[automatically_derived]
11256            #[doc(hidden)]
11257            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11258            for lagOverEscapeHatchThresholdCall {
11259                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11260                    Self {
11261                        blockNumber: tuple.0,
11262                        threshold: tuple.1,
11263                    }
11264                }
11265            }
11266        }
11267        {
11268            #[doc(hidden)]
11269            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11270            #[doc(hidden)]
11271            type UnderlyingRustTuple<'a> = (bool,);
11272            #[cfg(test)]
11273            #[allow(dead_code, unreachable_patterns)]
11274            fn _type_assertion(
11275                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11276            ) {
11277                match _t {
11278                    alloy_sol_types::private::AssertTypeEq::<
11279                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11280                    >(_) => {}
11281                }
11282            }
11283            #[automatically_derived]
11284            #[doc(hidden)]
11285            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
11286            for UnderlyingRustTuple<'_> {
11287                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
11288                    (value._0,)
11289                }
11290            }
11291            #[automatically_derived]
11292            #[doc(hidden)]
11293            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11294            for lagOverEscapeHatchThresholdReturn {
11295                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11296                    Self { _0: tuple.0 }
11297                }
11298            }
11299        }
11300        #[automatically_derived]
11301        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
11302            type Parameters<'a> = (
11303                alloy::sol_types::sol_data::Uint<256>,
11304                alloy::sol_types::sol_data::Uint<256>,
11305            );
11306            type Token<'a> = <Self::Parameters<
11307                'a,
11308            > as alloy_sol_types::SolType>::Token<'a>;
11309            type Return = bool;
11310            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
11311            type ReturnToken<'a> = <Self::ReturnTuple<
11312                'a,
11313            > as alloy_sol_types::SolType>::Token<'a>;
11314            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
11315            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
11316            #[inline]
11317            fn new<'a>(
11318                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11319            ) -> Self {
11320                tuple.into()
11321            }
11322            #[inline]
11323            fn tokenize(&self) -> Self::Token<'_> {
11324                (
11325                    <alloy::sol_types::sol_data::Uint<
11326                        256,
11327                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
11328                    <alloy::sol_types::sol_data::Uint<
11329                        256,
11330                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
11331                )
11332            }
11333            #[inline]
11334            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11335                (
11336                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
11337                        ret,
11338                    ),
11339                )
11340            }
11341            #[inline]
11342            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11343                <Self::ReturnTuple<
11344                    '_,
11345                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11346                    .map(|r| {
11347                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11348                        r._0
11349                    })
11350            }
11351            #[inline]
11352            fn abi_decode_returns_validate(
11353                data: &[u8],
11354            ) -> alloy_sol_types::Result<Self::Return> {
11355                <Self::ReturnTuple<
11356                    '_,
11357                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11358                    .map(|r| {
11359                        let r: lagOverEscapeHatchThresholdReturn = r.into();
11360                        r._0
11361                    })
11362            }
11363        }
11364    };
11365    #[derive(serde::Serialize, serde::Deserialize)]
11366    #[derive()]
11367    /**Function with signature `newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x2063d4f7`.
11368```solidity
11369function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
11370```*/
11371    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11372    #[derive(Clone)]
11373    pub struct newFinalizedState_0Call {
11374        #[allow(missing_docs)]
11375        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11376        #[allow(missing_docs)]
11377        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11378    }
11379    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_0Call) function.
11380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11381    #[derive(Clone)]
11382    pub struct newFinalizedState_0Return {}
11383    #[allow(
11384        non_camel_case_types,
11385        non_snake_case,
11386        clippy::pub_underscore_fields,
11387        clippy::style
11388    )]
11389    const _: () = {
11390        use alloy::sol_types as alloy_sol_types;
11391        {
11392            #[doc(hidden)]
11393            type UnderlyingSolTuple<'a> = (
11394                LightClient::LightClientState,
11395                IPlonkVerifier::PlonkProof,
11396            );
11397            #[doc(hidden)]
11398            type UnderlyingRustTuple<'a> = (
11399                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11400                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11401            );
11402            #[cfg(test)]
11403            #[allow(dead_code, unreachable_patterns)]
11404            fn _type_assertion(
11405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11406            ) {
11407                match _t {
11408                    alloy_sol_types::private::AssertTypeEq::<
11409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11410                    >(_) => {}
11411                }
11412            }
11413            #[automatically_derived]
11414            #[doc(hidden)]
11415            impl ::core::convert::From<newFinalizedState_0Call>
11416            for UnderlyingRustTuple<'_> {
11417                fn from(value: newFinalizedState_0Call) -> Self {
11418                    (value._0, value._1)
11419                }
11420            }
11421            #[automatically_derived]
11422            #[doc(hidden)]
11423            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11424            for newFinalizedState_0Call {
11425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11426                    Self { _0: tuple.0, _1: tuple.1 }
11427                }
11428            }
11429        }
11430        {
11431            #[doc(hidden)]
11432            type UnderlyingSolTuple<'a> = ();
11433            #[doc(hidden)]
11434            type UnderlyingRustTuple<'a> = ();
11435            #[cfg(test)]
11436            #[allow(dead_code, unreachable_patterns)]
11437            fn _type_assertion(
11438                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11439            ) {
11440                match _t {
11441                    alloy_sol_types::private::AssertTypeEq::<
11442                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11443                    >(_) => {}
11444                }
11445            }
11446            #[automatically_derived]
11447            #[doc(hidden)]
11448            impl ::core::convert::From<newFinalizedState_0Return>
11449            for UnderlyingRustTuple<'_> {
11450                fn from(value: newFinalizedState_0Return) -> Self {
11451                    ()
11452                }
11453            }
11454            #[automatically_derived]
11455            #[doc(hidden)]
11456            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11457            for newFinalizedState_0Return {
11458                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11459                    Self {}
11460                }
11461            }
11462        }
11463        impl newFinalizedState_0Return {
11464            fn _tokenize(
11465                &self,
11466            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11467                ()
11468            }
11469        }
11470        #[automatically_derived]
11471        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
11472            type Parameters<'a> = (
11473                LightClient::LightClientState,
11474                IPlonkVerifier::PlonkProof,
11475            );
11476            type Token<'a> = <Self::Parameters<
11477                'a,
11478            > as alloy_sol_types::SolType>::Token<'a>;
11479            type Return = newFinalizedState_0Return;
11480            type ReturnTuple<'a> = ();
11481            type ReturnToken<'a> = <Self::ReturnTuple<
11482                'a,
11483            > as alloy_sol_types::SolType>::Token<'a>;
11484            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11485            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
11486            #[inline]
11487            fn new<'a>(
11488                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11489            ) -> Self {
11490                tuple.into()
11491            }
11492            #[inline]
11493            fn tokenize(&self) -> Self::Token<'_> {
11494                (
11495                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11496                        &self._0,
11497                    ),
11498                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11499                        &self._1,
11500                    ),
11501                )
11502            }
11503            #[inline]
11504            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11505                newFinalizedState_0Return::_tokenize(ret)
11506            }
11507            #[inline]
11508            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11509                <Self::ReturnTuple<
11510                    '_,
11511                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11512                    .map(Into::into)
11513            }
11514            #[inline]
11515            fn abi_decode_returns_validate(
11516                data: &[u8],
11517            ) -> alloy_sol_types::Result<Self::Return> {
11518                <Self::ReturnTuple<
11519                    '_,
11520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11521                    .map(Into::into)
11522            }
11523        }
11524    };
11525    #[derive(serde::Serialize, serde::Deserialize)]
11526    #[derive()]
11527    /**Function with signature `newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))` and selector `0x757c37ad`.
11528```solidity
11529function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11530```*/
11531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11532    #[derive(Clone)]
11533    pub struct newFinalizedState_1Call {
11534        #[allow(missing_docs)]
11535        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11536        #[allow(missing_docs)]
11537        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11538        #[allow(missing_docs)]
11539        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11540    }
11541    ///Container type for the return parameters of the [`newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))`](newFinalizedState_1Call) function.
11542    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11543    #[derive(Clone)]
11544    pub struct newFinalizedState_1Return {}
11545    #[allow(
11546        non_camel_case_types,
11547        non_snake_case,
11548        clippy::pub_underscore_fields,
11549        clippy::style
11550    )]
11551    const _: () = {
11552        use alloy::sol_types as alloy_sol_types;
11553        {
11554            #[doc(hidden)]
11555            type UnderlyingSolTuple<'a> = (
11556                LightClient::LightClientState,
11557                LightClient::StakeTableState,
11558                IPlonkVerifier::PlonkProof,
11559            );
11560            #[doc(hidden)]
11561            type UnderlyingRustTuple<'a> = (
11562                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11563                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11564                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11565            );
11566            #[cfg(test)]
11567            #[allow(dead_code, unreachable_patterns)]
11568            fn _type_assertion(
11569                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11570            ) {
11571                match _t {
11572                    alloy_sol_types::private::AssertTypeEq::<
11573                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11574                    >(_) => {}
11575                }
11576            }
11577            #[automatically_derived]
11578            #[doc(hidden)]
11579            impl ::core::convert::From<newFinalizedState_1Call>
11580            for UnderlyingRustTuple<'_> {
11581                fn from(value: newFinalizedState_1Call) -> Self {
11582                    (value.newState, value.nextStakeTable, value.proof)
11583                }
11584            }
11585            #[automatically_derived]
11586            #[doc(hidden)]
11587            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11588            for newFinalizedState_1Call {
11589                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11590                    Self {
11591                        newState: tuple.0,
11592                        nextStakeTable: tuple.1,
11593                        proof: tuple.2,
11594                    }
11595                }
11596            }
11597        }
11598        {
11599            #[doc(hidden)]
11600            type UnderlyingSolTuple<'a> = ();
11601            #[doc(hidden)]
11602            type UnderlyingRustTuple<'a> = ();
11603            #[cfg(test)]
11604            #[allow(dead_code, unreachable_patterns)]
11605            fn _type_assertion(
11606                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11607            ) {
11608                match _t {
11609                    alloy_sol_types::private::AssertTypeEq::<
11610                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11611                    >(_) => {}
11612                }
11613            }
11614            #[automatically_derived]
11615            #[doc(hidden)]
11616            impl ::core::convert::From<newFinalizedState_1Return>
11617            for UnderlyingRustTuple<'_> {
11618                fn from(value: newFinalizedState_1Return) -> Self {
11619                    ()
11620                }
11621            }
11622            #[automatically_derived]
11623            #[doc(hidden)]
11624            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11625            for newFinalizedState_1Return {
11626                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11627                    Self {}
11628                }
11629            }
11630        }
11631        impl newFinalizedState_1Return {
11632            fn _tokenize(
11633                &self,
11634            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11635                ()
11636            }
11637        }
11638        #[automatically_derived]
11639        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11640            type Parameters<'a> = (
11641                LightClient::LightClientState,
11642                LightClient::StakeTableState,
11643                IPlonkVerifier::PlonkProof,
11644            );
11645            type Token<'a> = <Self::Parameters<
11646                'a,
11647            > as alloy_sol_types::SolType>::Token<'a>;
11648            type Return = newFinalizedState_1Return;
11649            type ReturnTuple<'a> = ();
11650            type ReturnToken<'a> = <Self::ReturnTuple<
11651                'a,
11652            > as alloy_sol_types::SolType>::Token<'a>;
11653            const SIGNATURE: &'static str = "newFinalizedState((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),((uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),(uint256,uint256),uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256,uint256))";
11654            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11655            #[inline]
11656            fn new<'a>(
11657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11658            ) -> Self {
11659                tuple.into()
11660            }
11661            #[inline]
11662            fn tokenize(&self) -> Self::Token<'_> {
11663                (
11664                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11665                        &self.newState,
11666                    ),
11667                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11668                        &self.nextStakeTable,
11669                    ),
11670                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11671                        &self.proof,
11672                    ),
11673                )
11674            }
11675            #[inline]
11676            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11677                newFinalizedState_1Return::_tokenize(ret)
11678            }
11679            #[inline]
11680            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11681                <Self::ReturnTuple<
11682                    '_,
11683                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11684                    .map(Into::into)
11685            }
11686            #[inline]
11687            fn abi_decode_returns_validate(
11688                data: &[u8],
11689            ) -> alloy_sol_types::Result<Self::Return> {
11690                <Self::ReturnTuple<
11691                    '_,
11692                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11693                    .map(Into::into)
11694            }
11695        }
11696    };
11697    #[derive(serde::Serialize, serde::Deserialize)]
11698    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11699    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11700```solidity
11701function owner() external view returns (address);
11702```*/
11703    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11704    #[derive(Clone)]
11705    pub struct ownerCall;
11706    #[derive(serde::Serialize, serde::Deserialize)]
11707    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11708    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11710    #[derive(Clone)]
11711    pub struct ownerReturn {
11712        #[allow(missing_docs)]
11713        pub _0: alloy::sol_types::private::Address,
11714    }
11715    #[allow(
11716        non_camel_case_types,
11717        non_snake_case,
11718        clippy::pub_underscore_fields,
11719        clippy::style
11720    )]
11721    const _: () = {
11722        use alloy::sol_types as alloy_sol_types;
11723        {
11724            #[doc(hidden)]
11725            type UnderlyingSolTuple<'a> = ();
11726            #[doc(hidden)]
11727            type UnderlyingRustTuple<'a> = ();
11728            #[cfg(test)]
11729            #[allow(dead_code, unreachable_patterns)]
11730            fn _type_assertion(
11731                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11732            ) {
11733                match _t {
11734                    alloy_sol_types::private::AssertTypeEq::<
11735                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11736                    >(_) => {}
11737                }
11738            }
11739            #[automatically_derived]
11740            #[doc(hidden)]
11741            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11742                fn from(value: ownerCall) -> Self {
11743                    ()
11744                }
11745            }
11746            #[automatically_derived]
11747            #[doc(hidden)]
11748            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11749                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11750                    Self
11751                }
11752            }
11753        }
11754        {
11755            #[doc(hidden)]
11756            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11757            #[doc(hidden)]
11758            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11759            #[cfg(test)]
11760            #[allow(dead_code, unreachable_patterns)]
11761            fn _type_assertion(
11762                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11763            ) {
11764                match _t {
11765                    alloy_sol_types::private::AssertTypeEq::<
11766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11767                    >(_) => {}
11768                }
11769            }
11770            #[automatically_derived]
11771            #[doc(hidden)]
11772            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11773                fn from(value: ownerReturn) -> Self {
11774                    (value._0,)
11775                }
11776            }
11777            #[automatically_derived]
11778            #[doc(hidden)]
11779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11781                    Self { _0: tuple.0 }
11782                }
11783            }
11784        }
11785        #[automatically_derived]
11786        impl alloy_sol_types::SolCall for ownerCall {
11787            type Parameters<'a> = ();
11788            type Token<'a> = <Self::Parameters<
11789                'a,
11790            > as alloy_sol_types::SolType>::Token<'a>;
11791            type Return = alloy::sol_types::private::Address;
11792            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11793            type ReturnToken<'a> = <Self::ReturnTuple<
11794                'a,
11795            > as alloy_sol_types::SolType>::Token<'a>;
11796            const SIGNATURE: &'static str = "owner()";
11797            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11798            #[inline]
11799            fn new<'a>(
11800                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11801            ) -> Self {
11802                tuple.into()
11803            }
11804            #[inline]
11805            fn tokenize(&self) -> Self::Token<'_> {
11806                ()
11807            }
11808            #[inline]
11809            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11810                (
11811                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11812                        ret,
11813                    ),
11814                )
11815            }
11816            #[inline]
11817            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11818                <Self::ReturnTuple<
11819                    '_,
11820                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11821                    .map(|r| {
11822                        let r: ownerReturn = r.into();
11823                        r._0
11824                    })
11825            }
11826            #[inline]
11827            fn abi_decode_returns_validate(
11828                data: &[u8],
11829            ) -> alloy_sol_types::Result<Self::Return> {
11830                <Self::ReturnTuple<
11831                    '_,
11832                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11833                    .map(|r| {
11834                        let r: ownerReturn = r.into();
11835                        r._0
11836                    })
11837            }
11838        }
11839    };
11840    #[derive(serde::Serialize, serde::Deserialize)]
11841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11842    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11843```solidity
11844function permissionedProver() external view returns (address);
11845```*/
11846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11847    #[derive(Clone)]
11848    pub struct permissionedProverCall;
11849    #[derive(serde::Serialize, serde::Deserialize)]
11850    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11851    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11853    #[derive(Clone)]
11854    pub struct permissionedProverReturn {
11855        #[allow(missing_docs)]
11856        pub _0: alloy::sol_types::private::Address,
11857    }
11858    #[allow(
11859        non_camel_case_types,
11860        non_snake_case,
11861        clippy::pub_underscore_fields,
11862        clippy::style
11863    )]
11864    const _: () = {
11865        use alloy::sol_types as alloy_sol_types;
11866        {
11867            #[doc(hidden)]
11868            type UnderlyingSolTuple<'a> = ();
11869            #[doc(hidden)]
11870            type UnderlyingRustTuple<'a> = ();
11871            #[cfg(test)]
11872            #[allow(dead_code, unreachable_patterns)]
11873            fn _type_assertion(
11874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11875            ) {
11876                match _t {
11877                    alloy_sol_types::private::AssertTypeEq::<
11878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11879                    >(_) => {}
11880                }
11881            }
11882            #[automatically_derived]
11883            #[doc(hidden)]
11884            impl ::core::convert::From<permissionedProverCall>
11885            for UnderlyingRustTuple<'_> {
11886                fn from(value: permissionedProverCall) -> Self {
11887                    ()
11888                }
11889            }
11890            #[automatically_derived]
11891            #[doc(hidden)]
11892            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11893            for permissionedProverCall {
11894                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11895                    Self
11896                }
11897            }
11898        }
11899        {
11900            #[doc(hidden)]
11901            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11902            #[doc(hidden)]
11903            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11904            #[cfg(test)]
11905            #[allow(dead_code, unreachable_patterns)]
11906            fn _type_assertion(
11907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11908            ) {
11909                match _t {
11910                    alloy_sol_types::private::AssertTypeEq::<
11911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11912                    >(_) => {}
11913                }
11914            }
11915            #[automatically_derived]
11916            #[doc(hidden)]
11917            impl ::core::convert::From<permissionedProverReturn>
11918            for UnderlyingRustTuple<'_> {
11919                fn from(value: permissionedProverReturn) -> Self {
11920                    (value._0,)
11921                }
11922            }
11923            #[automatically_derived]
11924            #[doc(hidden)]
11925            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11926            for permissionedProverReturn {
11927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11928                    Self { _0: tuple.0 }
11929                }
11930            }
11931        }
11932        #[automatically_derived]
11933        impl alloy_sol_types::SolCall for permissionedProverCall {
11934            type Parameters<'a> = ();
11935            type Token<'a> = <Self::Parameters<
11936                'a,
11937            > as alloy_sol_types::SolType>::Token<'a>;
11938            type Return = alloy::sol_types::private::Address;
11939            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11940            type ReturnToken<'a> = <Self::ReturnTuple<
11941                'a,
11942            > as alloy_sol_types::SolType>::Token<'a>;
11943            const SIGNATURE: &'static str = "permissionedProver()";
11944            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11945            #[inline]
11946            fn new<'a>(
11947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11948            ) -> Self {
11949                tuple.into()
11950            }
11951            #[inline]
11952            fn tokenize(&self) -> Self::Token<'_> {
11953                ()
11954            }
11955            #[inline]
11956            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11957                (
11958                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11959                        ret,
11960                    ),
11961                )
11962            }
11963            #[inline]
11964            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11965                <Self::ReturnTuple<
11966                    '_,
11967                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11968                    .map(|r| {
11969                        let r: permissionedProverReturn = r.into();
11970                        r._0
11971                    })
11972            }
11973            #[inline]
11974            fn abi_decode_returns_validate(
11975                data: &[u8],
11976            ) -> alloy_sol_types::Result<Self::Return> {
11977                <Self::ReturnTuple<
11978                    '_,
11979                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11980                    .map(|r| {
11981                        let r: permissionedProverReturn = r.into();
11982                        r._0
11983                    })
11984            }
11985        }
11986    };
11987    #[derive(serde::Serialize, serde::Deserialize)]
11988    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11989    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11990```solidity
11991function proxiableUUID() external view returns (bytes32);
11992```*/
11993    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11994    #[derive(Clone)]
11995    pub struct proxiableUUIDCall;
11996    #[derive(serde::Serialize, serde::Deserialize)]
11997    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11998    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12000    #[derive(Clone)]
12001    pub struct proxiableUUIDReturn {
12002        #[allow(missing_docs)]
12003        pub _0: alloy::sol_types::private::FixedBytes<32>,
12004    }
12005    #[allow(
12006        non_camel_case_types,
12007        non_snake_case,
12008        clippy::pub_underscore_fields,
12009        clippy::style
12010    )]
12011    const _: () = {
12012        use alloy::sol_types as alloy_sol_types;
12013        {
12014            #[doc(hidden)]
12015            type UnderlyingSolTuple<'a> = ();
12016            #[doc(hidden)]
12017            type UnderlyingRustTuple<'a> = ();
12018            #[cfg(test)]
12019            #[allow(dead_code, unreachable_patterns)]
12020            fn _type_assertion(
12021                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12022            ) {
12023                match _t {
12024                    alloy_sol_types::private::AssertTypeEq::<
12025                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12026                    >(_) => {}
12027                }
12028            }
12029            #[automatically_derived]
12030            #[doc(hidden)]
12031            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
12032                fn from(value: proxiableUUIDCall) -> Self {
12033                    ()
12034                }
12035            }
12036            #[automatically_derived]
12037            #[doc(hidden)]
12038            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
12039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12040                    Self
12041                }
12042            }
12043        }
12044        {
12045            #[doc(hidden)]
12046            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12047            #[doc(hidden)]
12048            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
12049            #[cfg(test)]
12050            #[allow(dead_code, unreachable_patterns)]
12051            fn _type_assertion(
12052                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12053            ) {
12054                match _t {
12055                    alloy_sol_types::private::AssertTypeEq::<
12056                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12057                    >(_) => {}
12058                }
12059            }
12060            #[automatically_derived]
12061            #[doc(hidden)]
12062            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
12063                fn from(value: proxiableUUIDReturn) -> Self {
12064                    (value._0,)
12065                }
12066            }
12067            #[automatically_derived]
12068            #[doc(hidden)]
12069            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
12070                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12071                    Self { _0: tuple.0 }
12072                }
12073            }
12074        }
12075        #[automatically_derived]
12076        impl alloy_sol_types::SolCall for proxiableUUIDCall {
12077            type Parameters<'a> = ();
12078            type Token<'a> = <Self::Parameters<
12079                'a,
12080            > as alloy_sol_types::SolType>::Token<'a>;
12081            type Return = alloy::sol_types::private::FixedBytes<32>;
12082            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
12083            type ReturnToken<'a> = <Self::ReturnTuple<
12084                'a,
12085            > as alloy_sol_types::SolType>::Token<'a>;
12086            const SIGNATURE: &'static str = "proxiableUUID()";
12087            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
12088            #[inline]
12089            fn new<'a>(
12090                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12091            ) -> Self {
12092                tuple.into()
12093            }
12094            #[inline]
12095            fn tokenize(&self) -> Self::Token<'_> {
12096                ()
12097            }
12098            #[inline]
12099            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12100                (
12101                    <alloy::sol_types::sol_data::FixedBytes<
12102                        32,
12103                    > as alloy_sol_types::SolType>::tokenize(ret),
12104                )
12105            }
12106            #[inline]
12107            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12108                <Self::ReturnTuple<
12109                    '_,
12110                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12111                    .map(|r| {
12112                        let r: proxiableUUIDReturn = r.into();
12113                        r._0
12114                    })
12115            }
12116            #[inline]
12117            fn abi_decode_returns_validate(
12118                data: &[u8],
12119            ) -> alloy_sol_types::Result<Self::Return> {
12120                <Self::ReturnTuple<
12121                    '_,
12122                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12123                    .map(|r| {
12124                        let r: proxiableUUIDReturn = r.into();
12125                        r._0
12126                    })
12127            }
12128        }
12129    };
12130    #[derive(serde::Serialize, serde::Deserialize)]
12131    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12132    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
12133```solidity
12134function renounceOwnership() external;
12135```*/
12136    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12137    #[derive(Clone)]
12138    pub struct renounceOwnershipCall;
12139    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
12140    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12141    #[derive(Clone)]
12142    pub struct renounceOwnershipReturn {}
12143    #[allow(
12144        non_camel_case_types,
12145        non_snake_case,
12146        clippy::pub_underscore_fields,
12147        clippy::style
12148    )]
12149    const _: () = {
12150        use alloy::sol_types as alloy_sol_types;
12151        {
12152            #[doc(hidden)]
12153            type UnderlyingSolTuple<'a> = ();
12154            #[doc(hidden)]
12155            type UnderlyingRustTuple<'a> = ();
12156            #[cfg(test)]
12157            #[allow(dead_code, unreachable_patterns)]
12158            fn _type_assertion(
12159                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12160            ) {
12161                match _t {
12162                    alloy_sol_types::private::AssertTypeEq::<
12163                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12164                    >(_) => {}
12165                }
12166            }
12167            #[automatically_derived]
12168            #[doc(hidden)]
12169            impl ::core::convert::From<renounceOwnershipCall>
12170            for UnderlyingRustTuple<'_> {
12171                fn from(value: renounceOwnershipCall) -> Self {
12172                    ()
12173                }
12174            }
12175            #[automatically_derived]
12176            #[doc(hidden)]
12177            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12178            for renounceOwnershipCall {
12179                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12180                    Self
12181                }
12182            }
12183        }
12184        {
12185            #[doc(hidden)]
12186            type UnderlyingSolTuple<'a> = ();
12187            #[doc(hidden)]
12188            type UnderlyingRustTuple<'a> = ();
12189            #[cfg(test)]
12190            #[allow(dead_code, unreachable_patterns)]
12191            fn _type_assertion(
12192                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12193            ) {
12194                match _t {
12195                    alloy_sol_types::private::AssertTypeEq::<
12196                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12197                    >(_) => {}
12198                }
12199            }
12200            #[automatically_derived]
12201            #[doc(hidden)]
12202            impl ::core::convert::From<renounceOwnershipReturn>
12203            for UnderlyingRustTuple<'_> {
12204                fn from(value: renounceOwnershipReturn) -> Self {
12205                    ()
12206                }
12207            }
12208            #[automatically_derived]
12209            #[doc(hidden)]
12210            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12211            for renounceOwnershipReturn {
12212                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12213                    Self {}
12214                }
12215            }
12216        }
12217        impl renounceOwnershipReturn {
12218            fn _tokenize(
12219                &self,
12220            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12221                ()
12222            }
12223        }
12224        #[automatically_derived]
12225        impl alloy_sol_types::SolCall for renounceOwnershipCall {
12226            type Parameters<'a> = ();
12227            type Token<'a> = <Self::Parameters<
12228                'a,
12229            > as alloy_sol_types::SolType>::Token<'a>;
12230            type Return = renounceOwnershipReturn;
12231            type ReturnTuple<'a> = ();
12232            type ReturnToken<'a> = <Self::ReturnTuple<
12233                'a,
12234            > as alloy_sol_types::SolType>::Token<'a>;
12235            const SIGNATURE: &'static str = "renounceOwnership()";
12236            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
12237            #[inline]
12238            fn new<'a>(
12239                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12240            ) -> Self {
12241                tuple.into()
12242            }
12243            #[inline]
12244            fn tokenize(&self) -> Self::Token<'_> {
12245                ()
12246            }
12247            #[inline]
12248            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12249                renounceOwnershipReturn::_tokenize(ret)
12250            }
12251            #[inline]
12252            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12253                <Self::ReturnTuple<
12254                    '_,
12255                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12256                    .map(Into::into)
12257            }
12258            #[inline]
12259            fn abi_decode_returns_validate(
12260                data: &[u8],
12261            ) -> alloy_sol_types::Result<Self::Return> {
12262                <Self::ReturnTuple<
12263                    '_,
12264                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12265                    .map(Into::into)
12266            }
12267        }
12268    };
12269    #[derive(serde::Serialize, serde::Deserialize)]
12270    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12271    /**Function with signature `setBlocksPerEpoch(uint64)` and selector `0x3c23b6db`.
12272```solidity
12273function setBlocksPerEpoch(uint64 newBlocksPerEpoch) external;
12274```*/
12275    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12276    #[derive(Clone)]
12277    pub struct setBlocksPerEpochCall {
12278        #[allow(missing_docs)]
12279        pub newBlocksPerEpoch: u64,
12280    }
12281    ///Container type for the return parameters of the [`setBlocksPerEpoch(uint64)`](setBlocksPerEpochCall) function.
12282    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12283    #[derive(Clone)]
12284    pub struct setBlocksPerEpochReturn {}
12285    #[allow(
12286        non_camel_case_types,
12287        non_snake_case,
12288        clippy::pub_underscore_fields,
12289        clippy::style
12290    )]
12291    const _: () = {
12292        use alloy::sol_types as alloy_sol_types;
12293        {
12294            #[doc(hidden)]
12295            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12296            #[doc(hidden)]
12297            type UnderlyingRustTuple<'a> = (u64,);
12298            #[cfg(test)]
12299            #[allow(dead_code, unreachable_patterns)]
12300            fn _type_assertion(
12301                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12302            ) {
12303                match _t {
12304                    alloy_sol_types::private::AssertTypeEq::<
12305                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12306                    >(_) => {}
12307                }
12308            }
12309            #[automatically_derived]
12310            #[doc(hidden)]
12311            impl ::core::convert::From<setBlocksPerEpochCall>
12312            for UnderlyingRustTuple<'_> {
12313                fn from(value: setBlocksPerEpochCall) -> Self {
12314                    (value.newBlocksPerEpoch,)
12315                }
12316            }
12317            #[automatically_derived]
12318            #[doc(hidden)]
12319            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12320            for setBlocksPerEpochCall {
12321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12322                    Self { newBlocksPerEpoch: tuple.0 }
12323                }
12324            }
12325        }
12326        {
12327            #[doc(hidden)]
12328            type UnderlyingSolTuple<'a> = ();
12329            #[doc(hidden)]
12330            type UnderlyingRustTuple<'a> = ();
12331            #[cfg(test)]
12332            #[allow(dead_code, unreachable_patterns)]
12333            fn _type_assertion(
12334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12335            ) {
12336                match _t {
12337                    alloy_sol_types::private::AssertTypeEq::<
12338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12339                    >(_) => {}
12340                }
12341            }
12342            #[automatically_derived]
12343            #[doc(hidden)]
12344            impl ::core::convert::From<setBlocksPerEpochReturn>
12345            for UnderlyingRustTuple<'_> {
12346                fn from(value: setBlocksPerEpochReturn) -> Self {
12347                    ()
12348                }
12349            }
12350            #[automatically_derived]
12351            #[doc(hidden)]
12352            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12353            for setBlocksPerEpochReturn {
12354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12355                    Self {}
12356                }
12357            }
12358        }
12359        impl setBlocksPerEpochReturn {
12360            fn _tokenize(
12361                &self,
12362            ) -> <setBlocksPerEpochCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12363                ()
12364            }
12365        }
12366        #[automatically_derived]
12367        impl alloy_sol_types::SolCall for setBlocksPerEpochCall {
12368            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12369            type Token<'a> = <Self::Parameters<
12370                'a,
12371            > as alloy_sol_types::SolType>::Token<'a>;
12372            type Return = setBlocksPerEpochReturn;
12373            type ReturnTuple<'a> = ();
12374            type ReturnToken<'a> = <Self::ReturnTuple<
12375                'a,
12376            > as alloy_sol_types::SolType>::Token<'a>;
12377            const SIGNATURE: &'static str = "setBlocksPerEpoch(uint64)";
12378            const SELECTOR: [u8; 4] = [60u8, 35u8, 182u8, 219u8];
12379            #[inline]
12380            fn new<'a>(
12381                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12382            ) -> Self {
12383                tuple.into()
12384            }
12385            #[inline]
12386            fn tokenize(&self) -> Self::Token<'_> {
12387                (
12388                    <alloy::sol_types::sol_data::Uint<
12389                        64,
12390                    > as alloy_sol_types::SolType>::tokenize(&self.newBlocksPerEpoch),
12391                )
12392            }
12393            #[inline]
12394            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12395                setBlocksPerEpochReturn::_tokenize(ret)
12396            }
12397            #[inline]
12398            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12399                <Self::ReturnTuple<
12400                    '_,
12401                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12402                    .map(Into::into)
12403            }
12404            #[inline]
12405            fn abi_decode_returns_validate(
12406                data: &[u8],
12407            ) -> alloy_sol_types::Result<Self::Return> {
12408                <Self::ReturnTuple<
12409                    '_,
12410                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12411                    .map(Into::into)
12412            }
12413        }
12414    };
12415    #[derive(serde::Serialize, serde::Deserialize)]
12416    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12417    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
12418```solidity
12419function setFinalizedState(LightClient.LightClientState memory state) external;
12420```*/
12421    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12422    #[derive(Clone)]
12423    pub struct setFinalizedStateCall {
12424        #[allow(missing_docs)]
12425        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12426    }
12427    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
12428    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12429    #[derive(Clone)]
12430    pub struct setFinalizedStateReturn {}
12431    #[allow(
12432        non_camel_case_types,
12433        non_snake_case,
12434        clippy::pub_underscore_fields,
12435        clippy::style
12436    )]
12437    const _: () = {
12438        use alloy::sol_types as alloy_sol_types;
12439        {
12440            #[doc(hidden)]
12441            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
12442            #[doc(hidden)]
12443            type UnderlyingRustTuple<'a> = (
12444                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
12445            );
12446            #[cfg(test)]
12447            #[allow(dead_code, unreachable_patterns)]
12448            fn _type_assertion(
12449                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12450            ) {
12451                match _t {
12452                    alloy_sol_types::private::AssertTypeEq::<
12453                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12454                    >(_) => {}
12455                }
12456            }
12457            #[automatically_derived]
12458            #[doc(hidden)]
12459            impl ::core::convert::From<setFinalizedStateCall>
12460            for UnderlyingRustTuple<'_> {
12461                fn from(value: setFinalizedStateCall) -> Self {
12462                    (value.state,)
12463                }
12464            }
12465            #[automatically_derived]
12466            #[doc(hidden)]
12467            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12468            for setFinalizedStateCall {
12469                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12470                    Self { state: tuple.0 }
12471                }
12472            }
12473        }
12474        {
12475            #[doc(hidden)]
12476            type UnderlyingSolTuple<'a> = ();
12477            #[doc(hidden)]
12478            type UnderlyingRustTuple<'a> = ();
12479            #[cfg(test)]
12480            #[allow(dead_code, unreachable_patterns)]
12481            fn _type_assertion(
12482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12483            ) {
12484                match _t {
12485                    alloy_sol_types::private::AssertTypeEq::<
12486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12487                    >(_) => {}
12488                }
12489            }
12490            #[automatically_derived]
12491            #[doc(hidden)]
12492            impl ::core::convert::From<setFinalizedStateReturn>
12493            for UnderlyingRustTuple<'_> {
12494                fn from(value: setFinalizedStateReturn) -> Self {
12495                    ()
12496                }
12497            }
12498            #[automatically_derived]
12499            #[doc(hidden)]
12500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12501            for setFinalizedStateReturn {
12502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12503                    Self {}
12504                }
12505            }
12506        }
12507        impl setFinalizedStateReturn {
12508            fn _tokenize(
12509                &self,
12510            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12511                ()
12512            }
12513        }
12514        #[automatically_derived]
12515        impl alloy_sol_types::SolCall for setFinalizedStateCall {
12516            type Parameters<'a> = (LightClient::LightClientState,);
12517            type Token<'a> = <Self::Parameters<
12518                'a,
12519            > as alloy_sol_types::SolType>::Token<'a>;
12520            type Return = setFinalizedStateReturn;
12521            type ReturnTuple<'a> = ();
12522            type ReturnToken<'a> = <Self::ReturnTuple<
12523                'a,
12524            > as alloy_sol_types::SolType>::Token<'a>;
12525            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
12526            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
12527            #[inline]
12528            fn new<'a>(
12529                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12530            ) -> Self {
12531                tuple.into()
12532            }
12533            #[inline]
12534            fn tokenize(&self) -> Self::Token<'_> {
12535                (
12536                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
12537                        &self.state,
12538                    ),
12539                )
12540            }
12541            #[inline]
12542            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12543                setFinalizedStateReturn::_tokenize(ret)
12544            }
12545            #[inline]
12546            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12547                <Self::ReturnTuple<
12548                    '_,
12549                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12550                    .map(Into::into)
12551            }
12552            #[inline]
12553            fn abi_decode_returns_validate(
12554                data: &[u8],
12555            ) -> alloy_sol_types::Result<Self::Return> {
12556                <Self::ReturnTuple<
12557                    '_,
12558                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12559                    .map(Into::into)
12560            }
12561        }
12562    };
12563    #[derive(serde::Serialize, serde::Deserialize)]
12564    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12565    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
12566```solidity
12567function setHotShotDownSince(uint256 l1Height) external;
12568```*/
12569    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12570    #[derive(Clone)]
12571    pub struct setHotShotDownSinceCall {
12572        #[allow(missing_docs)]
12573        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
12574    }
12575    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
12576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12577    #[derive(Clone)]
12578    pub struct setHotShotDownSinceReturn {}
12579    #[allow(
12580        non_camel_case_types,
12581        non_snake_case,
12582        clippy::pub_underscore_fields,
12583        clippy::style
12584    )]
12585    const _: () = {
12586        use alloy::sol_types as alloy_sol_types;
12587        {
12588            #[doc(hidden)]
12589            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12590            #[doc(hidden)]
12591            type UnderlyingRustTuple<'a> = (
12592                alloy::sol_types::private::primitives::aliases::U256,
12593            );
12594            #[cfg(test)]
12595            #[allow(dead_code, unreachable_patterns)]
12596            fn _type_assertion(
12597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12598            ) {
12599                match _t {
12600                    alloy_sol_types::private::AssertTypeEq::<
12601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12602                    >(_) => {}
12603                }
12604            }
12605            #[automatically_derived]
12606            #[doc(hidden)]
12607            impl ::core::convert::From<setHotShotDownSinceCall>
12608            for UnderlyingRustTuple<'_> {
12609                fn from(value: setHotShotDownSinceCall) -> Self {
12610                    (value.l1Height,)
12611                }
12612            }
12613            #[automatically_derived]
12614            #[doc(hidden)]
12615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12616            for setHotShotDownSinceCall {
12617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12618                    Self { l1Height: tuple.0 }
12619                }
12620            }
12621        }
12622        {
12623            #[doc(hidden)]
12624            type UnderlyingSolTuple<'a> = ();
12625            #[doc(hidden)]
12626            type UnderlyingRustTuple<'a> = ();
12627            #[cfg(test)]
12628            #[allow(dead_code, unreachable_patterns)]
12629            fn _type_assertion(
12630                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12631            ) {
12632                match _t {
12633                    alloy_sol_types::private::AssertTypeEq::<
12634                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12635                    >(_) => {}
12636                }
12637            }
12638            #[automatically_derived]
12639            #[doc(hidden)]
12640            impl ::core::convert::From<setHotShotDownSinceReturn>
12641            for UnderlyingRustTuple<'_> {
12642                fn from(value: setHotShotDownSinceReturn) -> Self {
12643                    ()
12644                }
12645            }
12646            #[automatically_derived]
12647            #[doc(hidden)]
12648            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12649            for setHotShotDownSinceReturn {
12650                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12651                    Self {}
12652                }
12653            }
12654        }
12655        impl setHotShotDownSinceReturn {
12656            fn _tokenize(
12657                &self,
12658            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12659                ()
12660            }
12661        }
12662        #[automatically_derived]
12663        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
12664            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12665            type Token<'a> = <Self::Parameters<
12666                'a,
12667            > as alloy_sol_types::SolType>::Token<'a>;
12668            type Return = setHotShotDownSinceReturn;
12669            type ReturnTuple<'a> = ();
12670            type ReturnToken<'a> = <Self::ReturnTuple<
12671                'a,
12672            > as alloy_sol_types::SolType>::Token<'a>;
12673            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
12674            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
12675            #[inline]
12676            fn new<'a>(
12677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12678            ) -> Self {
12679                tuple.into()
12680            }
12681            #[inline]
12682            fn tokenize(&self) -> Self::Token<'_> {
12683                (
12684                    <alloy::sol_types::sol_data::Uint<
12685                        256,
12686                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
12687                )
12688            }
12689            #[inline]
12690            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12691                setHotShotDownSinceReturn::_tokenize(ret)
12692            }
12693            #[inline]
12694            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12695                <Self::ReturnTuple<
12696                    '_,
12697                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12698                    .map(Into::into)
12699            }
12700            #[inline]
12701            fn abi_decode_returns_validate(
12702                data: &[u8],
12703            ) -> alloy_sol_types::Result<Self::Return> {
12704                <Self::ReturnTuple<
12705                    '_,
12706                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12707                    .map(Into::into)
12708            }
12709        }
12710    };
12711    #[derive(serde::Serialize, serde::Deserialize)]
12712    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12713    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
12714```solidity
12715function setHotShotUp() external;
12716```*/
12717    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12718    #[derive(Clone)]
12719    pub struct setHotShotUpCall;
12720    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
12721    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12722    #[derive(Clone)]
12723    pub struct setHotShotUpReturn {}
12724    #[allow(
12725        non_camel_case_types,
12726        non_snake_case,
12727        clippy::pub_underscore_fields,
12728        clippy::style
12729    )]
12730    const _: () = {
12731        use alloy::sol_types as alloy_sol_types;
12732        {
12733            #[doc(hidden)]
12734            type UnderlyingSolTuple<'a> = ();
12735            #[doc(hidden)]
12736            type UnderlyingRustTuple<'a> = ();
12737            #[cfg(test)]
12738            #[allow(dead_code, unreachable_patterns)]
12739            fn _type_assertion(
12740                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12741            ) {
12742                match _t {
12743                    alloy_sol_types::private::AssertTypeEq::<
12744                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12745                    >(_) => {}
12746                }
12747            }
12748            #[automatically_derived]
12749            #[doc(hidden)]
12750            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
12751                fn from(value: setHotShotUpCall) -> Self {
12752                    ()
12753                }
12754            }
12755            #[automatically_derived]
12756            #[doc(hidden)]
12757            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
12758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12759                    Self
12760                }
12761            }
12762        }
12763        {
12764            #[doc(hidden)]
12765            type UnderlyingSolTuple<'a> = ();
12766            #[doc(hidden)]
12767            type UnderlyingRustTuple<'a> = ();
12768            #[cfg(test)]
12769            #[allow(dead_code, unreachable_patterns)]
12770            fn _type_assertion(
12771                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12772            ) {
12773                match _t {
12774                    alloy_sol_types::private::AssertTypeEq::<
12775                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12776                    >(_) => {}
12777                }
12778            }
12779            #[automatically_derived]
12780            #[doc(hidden)]
12781            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
12782                fn from(value: setHotShotUpReturn) -> Self {
12783                    ()
12784                }
12785            }
12786            #[automatically_derived]
12787            #[doc(hidden)]
12788            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
12789                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12790                    Self {}
12791                }
12792            }
12793        }
12794        impl setHotShotUpReturn {
12795            fn _tokenize(
12796                &self,
12797            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12798                ()
12799            }
12800        }
12801        #[automatically_derived]
12802        impl alloy_sol_types::SolCall for setHotShotUpCall {
12803            type Parameters<'a> = ();
12804            type Token<'a> = <Self::Parameters<
12805                'a,
12806            > as alloy_sol_types::SolType>::Token<'a>;
12807            type Return = setHotShotUpReturn;
12808            type ReturnTuple<'a> = ();
12809            type ReturnToken<'a> = <Self::ReturnTuple<
12810                'a,
12811            > as alloy_sol_types::SolType>::Token<'a>;
12812            const SIGNATURE: &'static str = "setHotShotUp()";
12813            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
12814            #[inline]
12815            fn new<'a>(
12816                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12817            ) -> Self {
12818                tuple.into()
12819            }
12820            #[inline]
12821            fn tokenize(&self) -> Self::Token<'_> {
12822                ()
12823            }
12824            #[inline]
12825            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12826                setHotShotUpReturn::_tokenize(ret)
12827            }
12828            #[inline]
12829            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12830                <Self::ReturnTuple<
12831                    '_,
12832                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12833                    .map(Into::into)
12834            }
12835            #[inline]
12836            fn abi_decode_returns_validate(
12837                data: &[u8],
12838            ) -> alloy_sol_types::Result<Self::Return> {
12839                <Self::ReturnTuple<
12840                    '_,
12841                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12842                    .map(Into::into)
12843            }
12844        }
12845    };
12846    #[derive(serde::Serialize, serde::Deserialize)]
12847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12848    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
12849```solidity
12850function setPermissionedProver(address prover) external;
12851```*/
12852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12853    #[derive(Clone)]
12854    pub struct setPermissionedProverCall {
12855        #[allow(missing_docs)]
12856        pub prover: alloy::sol_types::private::Address,
12857    }
12858    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
12859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12860    #[derive(Clone)]
12861    pub struct setPermissionedProverReturn {}
12862    #[allow(
12863        non_camel_case_types,
12864        non_snake_case,
12865        clippy::pub_underscore_fields,
12866        clippy::style
12867    )]
12868    const _: () = {
12869        use alloy::sol_types as alloy_sol_types;
12870        {
12871            #[doc(hidden)]
12872            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12873            #[doc(hidden)]
12874            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12875            #[cfg(test)]
12876            #[allow(dead_code, unreachable_patterns)]
12877            fn _type_assertion(
12878                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12879            ) {
12880                match _t {
12881                    alloy_sol_types::private::AssertTypeEq::<
12882                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12883                    >(_) => {}
12884                }
12885            }
12886            #[automatically_derived]
12887            #[doc(hidden)]
12888            impl ::core::convert::From<setPermissionedProverCall>
12889            for UnderlyingRustTuple<'_> {
12890                fn from(value: setPermissionedProverCall) -> Self {
12891                    (value.prover,)
12892                }
12893            }
12894            #[automatically_derived]
12895            #[doc(hidden)]
12896            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12897            for setPermissionedProverCall {
12898                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12899                    Self { prover: tuple.0 }
12900                }
12901            }
12902        }
12903        {
12904            #[doc(hidden)]
12905            type UnderlyingSolTuple<'a> = ();
12906            #[doc(hidden)]
12907            type UnderlyingRustTuple<'a> = ();
12908            #[cfg(test)]
12909            #[allow(dead_code, unreachable_patterns)]
12910            fn _type_assertion(
12911                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12912            ) {
12913                match _t {
12914                    alloy_sol_types::private::AssertTypeEq::<
12915                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12916                    >(_) => {}
12917                }
12918            }
12919            #[automatically_derived]
12920            #[doc(hidden)]
12921            impl ::core::convert::From<setPermissionedProverReturn>
12922            for UnderlyingRustTuple<'_> {
12923                fn from(value: setPermissionedProverReturn) -> Self {
12924                    ()
12925                }
12926            }
12927            #[automatically_derived]
12928            #[doc(hidden)]
12929            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12930            for setPermissionedProverReturn {
12931                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12932                    Self {}
12933                }
12934            }
12935        }
12936        impl setPermissionedProverReturn {
12937            fn _tokenize(
12938                &self,
12939            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
12940                '_,
12941            > {
12942                ()
12943            }
12944        }
12945        #[automatically_derived]
12946        impl alloy_sol_types::SolCall for setPermissionedProverCall {
12947            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12948            type Token<'a> = <Self::Parameters<
12949                'a,
12950            > as alloy_sol_types::SolType>::Token<'a>;
12951            type Return = setPermissionedProverReturn;
12952            type ReturnTuple<'a> = ();
12953            type ReturnToken<'a> = <Self::ReturnTuple<
12954                'a,
12955            > as alloy_sol_types::SolType>::Token<'a>;
12956            const SIGNATURE: &'static str = "setPermissionedProver(address)";
12957            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
12958            #[inline]
12959            fn new<'a>(
12960                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12961            ) -> Self {
12962                tuple.into()
12963            }
12964            #[inline]
12965            fn tokenize(&self) -> Self::Token<'_> {
12966                (
12967                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12968                        &self.prover,
12969                    ),
12970                )
12971            }
12972            #[inline]
12973            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12974                setPermissionedProverReturn::_tokenize(ret)
12975            }
12976            #[inline]
12977            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12978                <Self::ReturnTuple<
12979                    '_,
12980                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12981                    .map(Into::into)
12982            }
12983            #[inline]
12984            fn abi_decode_returns_validate(
12985                data: &[u8],
12986            ) -> alloy_sol_types::Result<Self::Return> {
12987                <Self::ReturnTuple<
12988                    '_,
12989                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12990                    .map(Into::into)
12991            }
12992        }
12993    };
12994    #[derive(serde::Serialize, serde::Deserialize)]
12995    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12996    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
12997```solidity
12998function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
12999```*/
13000    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13001    #[derive(Clone)]
13002    pub struct setStateHistoryCall {
13003        #[allow(missing_docs)]
13004        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
13005            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13006        >,
13007    }
13008    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
13009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13010    #[derive(Clone)]
13011    pub struct setStateHistoryReturn {}
13012    #[allow(
13013        non_camel_case_types,
13014        non_snake_case,
13015        clippy::pub_underscore_fields,
13016        clippy::style
13017    )]
13018    const _: () = {
13019        use alloy::sol_types as alloy_sol_types;
13020        {
13021            #[doc(hidden)]
13022            type UnderlyingSolTuple<'a> = (
13023                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13024            );
13025            #[doc(hidden)]
13026            type UnderlyingRustTuple<'a> = (
13027                alloy::sol_types::private::Vec<
13028                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
13029                >,
13030            );
13031            #[cfg(test)]
13032            #[allow(dead_code, unreachable_patterns)]
13033            fn _type_assertion(
13034                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13035            ) {
13036                match _t {
13037                    alloy_sol_types::private::AssertTypeEq::<
13038                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13039                    >(_) => {}
13040                }
13041            }
13042            #[automatically_derived]
13043            #[doc(hidden)]
13044            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
13045                fn from(value: setStateHistoryCall) -> Self {
13046                    (value._stateHistoryCommitments,)
13047                }
13048            }
13049            #[automatically_derived]
13050            #[doc(hidden)]
13051            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
13052                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13053                    Self {
13054                        _stateHistoryCommitments: tuple.0,
13055                    }
13056                }
13057            }
13058        }
13059        {
13060            #[doc(hidden)]
13061            type UnderlyingSolTuple<'a> = ();
13062            #[doc(hidden)]
13063            type UnderlyingRustTuple<'a> = ();
13064            #[cfg(test)]
13065            #[allow(dead_code, unreachable_patterns)]
13066            fn _type_assertion(
13067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13068            ) {
13069                match _t {
13070                    alloy_sol_types::private::AssertTypeEq::<
13071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13072                    >(_) => {}
13073                }
13074            }
13075            #[automatically_derived]
13076            #[doc(hidden)]
13077            impl ::core::convert::From<setStateHistoryReturn>
13078            for UnderlyingRustTuple<'_> {
13079                fn from(value: setStateHistoryReturn) -> Self {
13080                    ()
13081                }
13082            }
13083            #[automatically_derived]
13084            #[doc(hidden)]
13085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13086            for setStateHistoryReturn {
13087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13088                    Self {}
13089                }
13090            }
13091        }
13092        impl setStateHistoryReturn {
13093            fn _tokenize(
13094                &self,
13095            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13096                ()
13097            }
13098        }
13099        #[automatically_derived]
13100        impl alloy_sol_types::SolCall for setStateHistoryCall {
13101            type Parameters<'a> = (
13102                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
13103            );
13104            type Token<'a> = <Self::Parameters<
13105                'a,
13106            > as alloy_sol_types::SolType>::Token<'a>;
13107            type Return = setStateHistoryReturn;
13108            type ReturnTuple<'a> = ();
13109            type ReturnToken<'a> = <Self::ReturnTuple<
13110                'a,
13111            > as alloy_sol_types::SolType>::Token<'a>;
13112            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
13113            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
13114            #[inline]
13115            fn new<'a>(
13116                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13117            ) -> Self {
13118                tuple.into()
13119            }
13120            #[inline]
13121            fn tokenize(&self) -> Self::Token<'_> {
13122                (
13123                    <alloy::sol_types::sol_data::Array<
13124                        LightClient::StateHistoryCommitment,
13125                    > as alloy_sol_types::SolType>::tokenize(
13126                        &self._stateHistoryCommitments,
13127                    ),
13128                )
13129            }
13130            #[inline]
13131            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13132                setStateHistoryReturn::_tokenize(ret)
13133            }
13134            #[inline]
13135            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13136                <Self::ReturnTuple<
13137                    '_,
13138                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13139                    .map(Into::into)
13140            }
13141            #[inline]
13142            fn abi_decode_returns_validate(
13143                data: &[u8],
13144            ) -> alloy_sol_types::Result<Self::Return> {
13145                <Self::ReturnTuple<
13146                    '_,
13147                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13148                    .map(Into::into)
13149            }
13150        }
13151    };
13152    #[derive(serde::Serialize, serde::Deserialize)]
13153    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13154    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
13155```solidity
13156function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
13157```*/
13158    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13159    #[derive(Clone)]
13160    pub struct setStateHistoryRetentionPeriodCall {
13161        #[allow(missing_docs)]
13162        pub historySeconds: u32,
13163    }
13164    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
13165    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13166    #[derive(Clone)]
13167    pub struct setStateHistoryRetentionPeriodReturn {}
13168    #[allow(
13169        non_camel_case_types,
13170        non_snake_case,
13171        clippy::pub_underscore_fields,
13172        clippy::style
13173    )]
13174    const _: () = {
13175        use alloy::sol_types as alloy_sol_types;
13176        {
13177            #[doc(hidden)]
13178            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13179            #[doc(hidden)]
13180            type UnderlyingRustTuple<'a> = (u32,);
13181            #[cfg(test)]
13182            #[allow(dead_code, unreachable_patterns)]
13183            fn _type_assertion(
13184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13185            ) {
13186                match _t {
13187                    alloy_sol_types::private::AssertTypeEq::<
13188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13189                    >(_) => {}
13190                }
13191            }
13192            #[automatically_derived]
13193            #[doc(hidden)]
13194            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
13195            for UnderlyingRustTuple<'_> {
13196                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
13197                    (value.historySeconds,)
13198                }
13199            }
13200            #[automatically_derived]
13201            #[doc(hidden)]
13202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13203            for setStateHistoryRetentionPeriodCall {
13204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13205                    Self { historySeconds: tuple.0 }
13206                }
13207            }
13208        }
13209        {
13210            #[doc(hidden)]
13211            type UnderlyingSolTuple<'a> = ();
13212            #[doc(hidden)]
13213            type UnderlyingRustTuple<'a> = ();
13214            #[cfg(test)]
13215            #[allow(dead_code, unreachable_patterns)]
13216            fn _type_assertion(
13217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13218            ) {
13219                match _t {
13220                    alloy_sol_types::private::AssertTypeEq::<
13221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13222                    >(_) => {}
13223                }
13224            }
13225            #[automatically_derived]
13226            #[doc(hidden)]
13227            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
13228            for UnderlyingRustTuple<'_> {
13229                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
13230                    ()
13231                }
13232            }
13233            #[automatically_derived]
13234            #[doc(hidden)]
13235            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13236            for setStateHistoryRetentionPeriodReturn {
13237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13238                    Self {}
13239                }
13240            }
13241        }
13242        impl setStateHistoryRetentionPeriodReturn {
13243            fn _tokenize(
13244                &self,
13245            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13246                '_,
13247            > {
13248                ()
13249            }
13250        }
13251        #[automatically_derived]
13252        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
13253            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13254            type Token<'a> = <Self::Parameters<
13255                'a,
13256            > as alloy_sol_types::SolType>::Token<'a>;
13257            type Return = setStateHistoryRetentionPeriodReturn;
13258            type ReturnTuple<'a> = ();
13259            type ReturnToken<'a> = <Self::ReturnTuple<
13260                'a,
13261            > as alloy_sol_types::SolType>::Token<'a>;
13262            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
13263            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
13264            #[inline]
13265            fn new<'a>(
13266                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13267            ) -> Self {
13268                tuple.into()
13269            }
13270            #[inline]
13271            fn tokenize(&self) -> Self::Token<'_> {
13272                (
13273                    <alloy::sol_types::sol_data::Uint<
13274                        32,
13275                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13276                )
13277            }
13278            #[inline]
13279            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13280                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
13281            }
13282            #[inline]
13283            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13284                <Self::ReturnTuple<
13285                    '_,
13286                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13287                    .map(Into::into)
13288            }
13289            #[inline]
13290            fn abi_decode_returns_validate(
13291                data: &[u8],
13292            ) -> alloy_sol_types::Result<Self::Return> {
13293                <Self::ReturnTuple<
13294                    '_,
13295                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13296                    .map(Into::into)
13297            }
13298        }
13299    };
13300    #[derive(serde::Serialize, serde::Deserialize)]
13301    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13302    /**Function with signature `setVotingStakeTableState((uint256,uint256,uint256,uint256))` and selector `0x623a1338`.
13303```solidity
13304function setVotingStakeTableState(LightClient.StakeTableState memory stake) external;
13305```*/
13306    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13307    #[derive(Clone)]
13308    pub struct setVotingStakeTableStateCall {
13309        #[allow(missing_docs)]
13310        pub stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13311    }
13312    ///Container type for the return parameters of the [`setVotingStakeTableState((uint256,uint256,uint256,uint256))`](setVotingStakeTableStateCall) function.
13313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13314    #[derive(Clone)]
13315    pub struct setVotingStakeTableStateReturn {}
13316    #[allow(
13317        non_camel_case_types,
13318        non_snake_case,
13319        clippy::pub_underscore_fields,
13320        clippy::style
13321    )]
13322    const _: () = {
13323        use alloy::sol_types as alloy_sol_types;
13324        {
13325            #[doc(hidden)]
13326            type UnderlyingSolTuple<'a> = (LightClient::StakeTableState,);
13327            #[doc(hidden)]
13328            type UnderlyingRustTuple<'a> = (
13329                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
13330            );
13331            #[cfg(test)]
13332            #[allow(dead_code, unreachable_patterns)]
13333            fn _type_assertion(
13334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13335            ) {
13336                match _t {
13337                    alloy_sol_types::private::AssertTypeEq::<
13338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13339                    >(_) => {}
13340                }
13341            }
13342            #[automatically_derived]
13343            #[doc(hidden)]
13344            impl ::core::convert::From<setVotingStakeTableStateCall>
13345            for UnderlyingRustTuple<'_> {
13346                fn from(value: setVotingStakeTableStateCall) -> Self {
13347                    (value.stake,)
13348                }
13349            }
13350            #[automatically_derived]
13351            #[doc(hidden)]
13352            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13353            for setVotingStakeTableStateCall {
13354                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13355                    Self { stake: tuple.0 }
13356                }
13357            }
13358        }
13359        {
13360            #[doc(hidden)]
13361            type UnderlyingSolTuple<'a> = ();
13362            #[doc(hidden)]
13363            type UnderlyingRustTuple<'a> = ();
13364            #[cfg(test)]
13365            #[allow(dead_code, unreachable_patterns)]
13366            fn _type_assertion(
13367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13368            ) {
13369                match _t {
13370                    alloy_sol_types::private::AssertTypeEq::<
13371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13372                    >(_) => {}
13373                }
13374            }
13375            #[automatically_derived]
13376            #[doc(hidden)]
13377            impl ::core::convert::From<setVotingStakeTableStateReturn>
13378            for UnderlyingRustTuple<'_> {
13379                fn from(value: setVotingStakeTableStateReturn) -> Self {
13380                    ()
13381                }
13382            }
13383            #[automatically_derived]
13384            #[doc(hidden)]
13385            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13386            for setVotingStakeTableStateReturn {
13387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13388                    Self {}
13389                }
13390            }
13391        }
13392        impl setVotingStakeTableStateReturn {
13393            fn _tokenize(
13394                &self,
13395            ) -> <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13396                '_,
13397            > {
13398                ()
13399            }
13400        }
13401        #[automatically_derived]
13402        impl alloy_sol_types::SolCall for setVotingStakeTableStateCall {
13403            type Parameters<'a> = (LightClient::StakeTableState,);
13404            type Token<'a> = <Self::Parameters<
13405                'a,
13406            > as alloy_sol_types::SolType>::Token<'a>;
13407            type Return = setVotingStakeTableStateReturn;
13408            type ReturnTuple<'a> = ();
13409            type ReturnToken<'a> = <Self::ReturnTuple<
13410                'a,
13411            > as alloy_sol_types::SolType>::Token<'a>;
13412            const SIGNATURE: &'static str = "setVotingStakeTableState((uint256,uint256,uint256,uint256))";
13413            const SELECTOR: [u8; 4] = [98u8, 58u8, 19u8, 56u8];
13414            #[inline]
13415            fn new<'a>(
13416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13417            ) -> Self {
13418                tuple.into()
13419            }
13420            #[inline]
13421            fn tokenize(&self) -> Self::Token<'_> {
13422                (
13423                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
13424                        &self.stake,
13425                    ),
13426                )
13427            }
13428            #[inline]
13429            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13430                setVotingStakeTableStateReturn::_tokenize(ret)
13431            }
13432            #[inline]
13433            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13434                <Self::ReturnTuple<
13435                    '_,
13436                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13437                    .map(Into::into)
13438            }
13439            #[inline]
13440            fn abi_decode_returns_validate(
13441                data: &[u8],
13442            ) -> alloy_sol_types::Result<Self::Return> {
13443                <Self::ReturnTuple<
13444                    '_,
13445                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13446                    .map(Into::into)
13447            }
13448        }
13449    };
13450    #[derive(serde::Serialize, serde::Deserialize)]
13451    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13452    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
13453```solidity
13454function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
13455```*/
13456    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13457    #[derive(Clone)]
13458    pub struct setstateHistoryRetentionPeriodCall {
13459        #[allow(missing_docs)]
13460        pub historySeconds: u32,
13461    }
13462    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
13463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13464    #[derive(Clone)]
13465    pub struct setstateHistoryRetentionPeriodReturn {}
13466    #[allow(
13467        non_camel_case_types,
13468        non_snake_case,
13469        clippy::pub_underscore_fields,
13470        clippy::style
13471    )]
13472    const _: () = {
13473        use alloy::sol_types as alloy_sol_types;
13474        {
13475            #[doc(hidden)]
13476            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13477            #[doc(hidden)]
13478            type UnderlyingRustTuple<'a> = (u32,);
13479            #[cfg(test)]
13480            #[allow(dead_code, unreachable_patterns)]
13481            fn _type_assertion(
13482                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13483            ) {
13484                match _t {
13485                    alloy_sol_types::private::AssertTypeEq::<
13486                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13487                    >(_) => {}
13488                }
13489            }
13490            #[automatically_derived]
13491            #[doc(hidden)]
13492            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
13493            for UnderlyingRustTuple<'_> {
13494                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
13495                    (value.historySeconds,)
13496                }
13497            }
13498            #[automatically_derived]
13499            #[doc(hidden)]
13500            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13501            for setstateHistoryRetentionPeriodCall {
13502                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13503                    Self { historySeconds: tuple.0 }
13504                }
13505            }
13506        }
13507        {
13508            #[doc(hidden)]
13509            type UnderlyingSolTuple<'a> = ();
13510            #[doc(hidden)]
13511            type UnderlyingRustTuple<'a> = ();
13512            #[cfg(test)]
13513            #[allow(dead_code, unreachable_patterns)]
13514            fn _type_assertion(
13515                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13516            ) {
13517                match _t {
13518                    alloy_sol_types::private::AssertTypeEq::<
13519                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13520                    >(_) => {}
13521                }
13522            }
13523            #[automatically_derived]
13524            #[doc(hidden)]
13525            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
13526            for UnderlyingRustTuple<'_> {
13527                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
13528                    ()
13529                }
13530            }
13531            #[automatically_derived]
13532            #[doc(hidden)]
13533            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13534            for setstateHistoryRetentionPeriodReturn {
13535                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13536                    Self {}
13537                }
13538            }
13539        }
13540        impl setstateHistoryRetentionPeriodReturn {
13541            fn _tokenize(
13542                &self,
13543            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
13544                '_,
13545            > {
13546                ()
13547            }
13548        }
13549        #[automatically_derived]
13550        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
13551            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
13552            type Token<'a> = <Self::Parameters<
13553                'a,
13554            > as alloy_sol_types::SolType>::Token<'a>;
13555            type Return = setstateHistoryRetentionPeriodReturn;
13556            type ReturnTuple<'a> = ();
13557            type ReturnToken<'a> = <Self::ReturnTuple<
13558                'a,
13559            > as alloy_sol_types::SolType>::Token<'a>;
13560            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
13561            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
13562            #[inline]
13563            fn new<'a>(
13564                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13565            ) -> Self {
13566                tuple.into()
13567            }
13568            #[inline]
13569            fn tokenize(&self) -> Self::Token<'_> {
13570                (
13571                    <alloy::sol_types::sol_data::Uint<
13572                        32,
13573                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
13574                )
13575            }
13576            #[inline]
13577            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13578                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
13579            }
13580            #[inline]
13581            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13582                <Self::ReturnTuple<
13583                    '_,
13584                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13585                    .map(Into::into)
13586            }
13587            #[inline]
13588            fn abi_decode_returns_validate(
13589                data: &[u8],
13590            ) -> alloy_sol_types::Result<Self::Return> {
13591                <Self::ReturnTuple<
13592                    '_,
13593                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13594                    .map(Into::into)
13595            }
13596        }
13597    };
13598    #[derive(serde::Serialize, serde::Deserialize)]
13599    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13600    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
13601```solidity
13602function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
13603```*/
13604    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13605    #[derive(Clone)]
13606    pub struct stateHistoryCommitmentsCall(
13607        pub alloy::sol_types::private::primitives::aliases::U256,
13608    );
13609    #[derive(serde::Serialize, serde::Deserialize)]
13610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13611    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
13612    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13613    #[derive(Clone)]
13614    pub struct stateHistoryCommitmentsReturn {
13615        #[allow(missing_docs)]
13616        pub l1BlockHeight: u64,
13617        #[allow(missing_docs)]
13618        pub l1BlockTimestamp: u64,
13619        #[allow(missing_docs)]
13620        pub hotShotBlockHeight: u64,
13621        #[allow(missing_docs)]
13622        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13623    }
13624    #[allow(
13625        non_camel_case_types,
13626        non_snake_case,
13627        clippy::pub_underscore_fields,
13628        clippy::style
13629    )]
13630    const _: () = {
13631        use alloy::sol_types as alloy_sol_types;
13632        {
13633            #[doc(hidden)]
13634            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13635            #[doc(hidden)]
13636            type UnderlyingRustTuple<'a> = (
13637                alloy::sol_types::private::primitives::aliases::U256,
13638            );
13639            #[cfg(test)]
13640            #[allow(dead_code, unreachable_patterns)]
13641            fn _type_assertion(
13642                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13643            ) {
13644                match _t {
13645                    alloy_sol_types::private::AssertTypeEq::<
13646                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13647                    >(_) => {}
13648                }
13649            }
13650            #[automatically_derived]
13651            #[doc(hidden)]
13652            impl ::core::convert::From<stateHistoryCommitmentsCall>
13653            for UnderlyingRustTuple<'_> {
13654                fn from(value: stateHistoryCommitmentsCall) -> Self {
13655                    (value.0,)
13656                }
13657            }
13658            #[automatically_derived]
13659            #[doc(hidden)]
13660            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13661            for stateHistoryCommitmentsCall {
13662                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13663                    Self(tuple.0)
13664                }
13665            }
13666        }
13667        {
13668            #[doc(hidden)]
13669            type UnderlyingSolTuple<'a> = (
13670                alloy::sol_types::sol_data::Uint<64>,
13671                alloy::sol_types::sol_data::Uint<64>,
13672                alloy::sol_types::sol_data::Uint<64>,
13673                BN254::ScalarField,
13674            );
13675            #[doc(hidden)]
13676            type UnderlyingRustTuple<'a> = (
13677                u64,
13678                u64,
13679                u64,
13680                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13681            );
13682            #[cfg(test)]
13683            #[allow(dead_code, unreachable_patterns)]
13684            fn _type_assertion(
13685                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13686            ) {
13687                match _t {
13688                    alloy_sol_types::private::AssertTypeEq::<
13689                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13690                    >(_) => {}
13691                }
13692            }
13693            #[automatically_derived]
13694            #[doc(hidden)]
13695            impl ::core::convert::From<stateHistoryCommitmentsReturn>
13696            for UnderlyingRustTuple<'_> {
13697                fn from(value: stateHistoryCommitmentsReturn) -> Self {
13698                    (
13699                        value.l1BlockHeight,
13700                        value.l1BlockTimestamp,
13701                        value.hotShotBlockHeight,
13702                        value.hotShotBlockCommRoot,
13703                    )
13704                }
13705            }
13706            #[automatically_derived]
13707            #[doc(hidden)]
13708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13709            for stateHistoryCommitmentsReturn {
13710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13711                    Self {
13712                        l1BlockHeight: tuple.0,
13713                        l1BlockTimestamp: tuple.1,
13714                        hotShotBlockHeight: tuple.2,
13715                        hotShotBlockCommRoot: tuple.3,
13716                    }
13717                }
13718            }
13719        }
13720        impl stateHistoryCommitmentsReturn {
13721            fn _tokenize(
13722                &self,
13723            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
13724                '_,
13725            > {
13726                (
13727                    <alloy::sol_types::sol_data::Uint<
13728                        64,
13729                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
13730                    <alloy::sol_types::sol_data::Uint<
13731                        64,
13732                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
13733                    <alloy::sol_types::sol_data::Uint<
13734                        64,
13735                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
13736                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13737                        &self.hotShotBlockCommRoot,
13738                    ),
13739                )
13740            }
13741        }
13742        #[automatically_derived]
13743        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
13744            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
13745            type Token<'a> = <Self::Parameters<
13746                'a,
13747            > as alloy_sol_types::SolType>::Token<'a>;
13748            type Return = stateHistoryCommitmentsReturn;
13749            type ReturnTuple<'a> = (
13750                alloy::sol_types::sol_data::Uint<64>,
13751                alloy::sol_types::sol_data::Uint<64>,
13752                alloy::sol_types::sol_data::Uint<64>,
13753                BN254::ScalarField,
13754            );
13755            type ReturnToken<'a> = <Self::ReturnTuple<
13756                'a,
13757            > as alloy_sol_types::SolType>::Token<'a>;
13758            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
13759            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
13760            #[inline]
13761            fn new<'a>(
13762                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13763            ) -> Self {
13764                tuple.into()
13765            }
13766            #[inline]
13767            fn tokenize(&self) -> Self::Token<'_> {
13768                (
13769                    <alloy::sol_types::sol_data::Uint<
13770                        256,
13771                    > as alloy_sol_types::SolType>::tokenize(&self.0),
13772                )
13773            }
13774            #[inline]
13775            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13776                stateHistoryCommitmentsReturn::_tokenize(ret)
13777            }
13778            #[inline]
13779            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13780                <Self::ReturnTuple<
13781                    '_,
13782                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13783                    .map(Into::into)
13784            }
13785            #[inline]
13786            fn abi_decode_returns_validate(
13787                data: &[u8],
13788            ) -> alloy_sol_types::Result<Self::Return> {
13789                <Self::ReturnTuple<
13790                    '_,
13791                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13792                    .map(Into::into)
13793            }
13794        }
13795    };
13796    #[derive(serde::Serialize, serde::Deserialize)]
13797    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13798    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
13799```solidity
13800function stateHistoryFirstIndex() external view returns (uint64);
13801```*/
13802    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13803    #[derive(Clone)]
13804    pub struct stateHistoryFirstIndexCall;
13805    #[derive(serde::Serialize, serde::Deserialize)]
13806    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13807    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
13808    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13809    #[derive(Clone)]
13810    pub struct stateHistoryFirstIndexReturn {
13811        #[allow(missing_docs)]
13812        pub _0: u64,
13813    }
13814    #[allow(
13815        non_camel_case_types,
13816        non_snake_case,
13817        clippy::pub_underscore_fields,
13818        clippy::style
13819    )]
13820    const _: () = {
13821        use alloy::sol_types as alloy_sol_types;
13822        {
13823            #[doc(hidden)]
13824            type UnderlyingSolTuple<'a> = ();
13825            #[doc(hidden)]
13826            type UnderlyingRustTuple<'a> = ();
13827            #[cfg(test)]
13828            #[allow(dead_code, unreachable_patterns)]
13829            fn _type_assertion(
13830                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13831            ) {
13832                match _t {
13833                    alloy_sol_types::private::AssertTypeEq::<
13834                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13835                    >(_) => {}
13836                }
13837            }
13838            #[automatically_derived]
13839            #[doc(hidden)]
13840            impl ::core::convert::From<stateHistoryFirstIndexCall>
13841            for UnderlyingRustTuple<'_> {
13842                fn from(value: stateHistoryFirstIndexCall) -> Self {
13843                    ()
13844                }
13845            }
13846            #[automatically_derived]
13847            #[doc(hidden)]
13848            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13849            for stateHistoryFirstIndexCall {
13850                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13851                    Self
13852                }
13853            }
13854        }
13855        {
13856            #[doc(hidden)]
13857            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13858            #[doc(hidden)]
13859            type UnderlyingRustTuple<'a> = (u64,);
13860            #[cfg(test)]
13861            #[allow(dead_code, unreachable_patterns)]
13862            fn _type_assertion(
13863                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13864            ) {
13865                match _t {
13866                    alloy_sol_types::private::AssertTypeEq::<
13867                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13868                    >(_) => {}
13869                }
13870            }
13871            #[automatically_derived]
13872            #[doc(hidden)]
13873            impl ::core::convert::From<stateHistoryFirstIndexReturn>
13874            for UnderlyingRustTuple<'_> {
13875                fn from(value: stateHistoryFirstIndexReturn) -> Self {
13876                    (value._0,)
13877                }
13878            }
13879            #[automatically_derived]
13880            #[doc(hidden)]
13881            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13882            for stateHistoryFirstIndexReturn {
13883                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13884                    Self { _0: tuple.0 }
13885                }
13886            }
13887        }
13888        #[automatically_derived]
13889        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
13890            type Parameters<'a> = ();
13891            type Token<'a> = <Self::Parameters<
13892                'a,
13893            > as alloy_sol_types::SolType>::Token<'a>;
13894            type Return = u64;
13895            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
13896            type ReturnToken<'a> = <Self::ReturnTuple<
13897                'a,
13898            > as alloy_sol_types::SolType>::Token<'a>;
13899            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
13900            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
13901            #[inline]
13902            fn new<'a>(
13903                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13904            ) -> Self {
13905                tuple.into()
13906            }
13907            #[inline]
13908            fn tokenize(&self) -> Self::Token<'_> {
13909                ()
13910            }
13911            #[inline]
13912            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13913                (
13914                    <alloy::sol_types::sol_data::Uint<
13915                        64,
13916                    > as alloy_sol_types::SolType>::tokenize(ret),
13917                )
13918            }
13919            #[inline]
13920            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13921                <Self::ReturnTuple<
13922                    '_,
13923                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13924                    .map(|r| {
13925                        let r: stateHistoryFirstIndexReturn = r.into();
13926                        r._0
13927                    })
13928            }
13929            #[inline]
13930            fn abi_decode_returns_validate(
13931                data: &[u8],
13932            ) -> alloy_sol_types::Result<Self::Return> {
13933                <Self::ReturnTuple<
13934                    '_,
13935                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13936                    .map(|r| {
13937                        let r: stateHistoryFirstIndexReturn = r.into();
13938                        r._0
13939                    })
13940            }
13941        }
13942    };
13943    #[derive(serde::Serialize, serde::Deserialize)]
13944    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13945    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
13946```solidity
13947function stateHistoryRetentionPeriod() external view returns (uint32);
13948```*/
13949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13950    #[derive(Clone)]
13951    pub struct stateHistoryRetentionPeriodCall;
13952    #[derive(serde::Serialize, serde::Deserialize)]
13953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13954    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
13955    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13956    #[derive(Clone)]
13957    pub struct stateHistoryRetentionPeriodReturn {
13958        #[allow(missing_docs)]
13959        pub _0: u32,
13960    }
13961    #[allow(
13962        non_camel_case_types,
13963        non_snake_case,
13964        clippy::pub_underscore_fields,
13965        clippy::style
13966    )]
13967    const _: () = {
13968        use alloy::sol_types as alloy_sol_types;
13969        {
13970            #[doc(hidden)]
13971            type UnderlyingSolTuple<'a> = ();
13972            #[doc(hidden)]
13973            type UnderlyingRustTuple<'a> = ();
13974            #[cfg(test)]
13975            #[allow(dead_code, unreachable_patterns)]
13976            fn _type_assertion(
13977                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13978            ) {
13979                match _t {
13980                    alloy_sol_types::private::AssertTypeEq::<
13981                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13982                    >(_) => {}
13983                }
13984            }
13985            #[automatically_derived]
13986            #[doc(hidden)]
13987            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
13988            for UnderlyingRustTuple<'_> {
13989                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
13990                    ()
13991                }
13992            }
13993            #[automatically_derived]
13994            #[doc(hidden)]
13995            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13996            for stateHistoryRetentionPeriodCall {
13997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13998                    Self
13999                }
14000            }
14001        }
14002        {
14003            #[doc(hidden)]
14004            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14005            #[doc(hidden)]
14006            type UnderlyingRustTuple<'a> = (u32,);
14007            #[cfg(test)]
14008            #[allow(dead_code, unreachable_patterns)]
14009            fn _type_assertion(
14010                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14011            ) {
14012                match _t {
14013                    alloy_sol_types::private::AssertTypeEq::<
14014                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14015                    >(_) => {}
14016                }
14017            }
14018            #[automatically_derived]
14019            #[doc(hidden)]
14020            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
14021            for UnderlyingRustTuple<'_> {
14022                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
14023                    (value._0,)
14024                }
14025            }
14026            #[automatically_derived]
14027            #[doc(hidden)]
14028            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14029            for stateHistoryRetentionPeriodReturn {
14030                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14031                    Self { _0: tuple.0 }
14032                }
14033            }
14034        }
14035        #[automatically_derived]
14036        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
14037            type Parameters<'a> = ();
14038            type Token<'a> = <Self::Parameters<
14039                'a,
14040            > as alloy_sol_types::SolType>::Token<'a>;
14041            type Return = u32;
14042            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
14043            type ReturnToken<'a> = <Self::ReturnTuple<
14044                'a,
14045            > as alloy_sol_types::SolType>::Token<'a>;
14046            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
14047            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
14048            #[inline]
14049            fn new<'a>(
14050                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14051            ) -> Self {
14052                tuple.into()
14053            }
14054            #[inline]
14055            fn tokenize(&self) -> Self::Token<'_> {
14056                ()
14057            }
14058            #[inline]
14059            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14060                (
14061                    <alloy::sol_types::sol_data::Uint<
14062                        32,
14063                    > as alloy_sol_types::SolType>::tokenize(ret),
14064                )
14065            }
14066            #[inline]
14067            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14068                <Self::ReturnTuple<
14069                    '_,
14070                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14071                    .map(|r| {
14072                        let r: stateHistoryRetentionPeriodReturn = r.into();
14073                        r._0
14074                    })
14075            }
14076            #[inline]
14077            fn abi_decode_returns_validate(
14078                data: &[u8],
14079            ) -> alloy_sol_types::Result<Self::Return> {
14080                <Self::ReturnTuple<
14081                    '_,
14082                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14083                    .map(|r| {
14084                        let r: stateHistoryRetentionPeriodReturn = r.into();
14085                        r._0
14086                    })
14087            }
14088        }
14089    };
14090    #[derive(serde::Serialize, serde::Deserialize)]
14091    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14092    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
14093```solidity
14094function transferOwnership(address newOwner) external;
14095```*/
14096    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14097    #[derive(Clone)]
14098    pub struct transferOwnershipCall {
14099        #[allow(missing_docs)]
14100        pub newOwner: alloy::sol_types::private::Address,
14101    }
14102    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
14103    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14104    #[derive(Clone)]
14105    pub struct transferOwnershipReturn {}
14106    #[allow(
14107        non_camel_case_types,
14108        non_snake_case,
14109        clippy::pub_underscore_fields,
14110        clippy::style
14111    )]
14112    const _: () = {
14113        use alloy::sol_types as alloy_sol_types;
14114        {
14115            #[doc(hidden)]
14116            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
14117            #[doc(hidden)]
14118            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
14119            #[cfg(test)]
14120            #[allow(dead_code, unreachable_patterns)]
14121            fn _type_assertion(
14122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14123            ) {
14124                match _t {
14125                    alloy_sol_types::private::AssertTypeEq::<
14126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14127                    >(_) => {}
14128                }
14129            }
14130            #[automatically_derived]
14131            #[doc(hidden)]
14132            impl ::core::convert::From<transferOwnershipCall>
14133            for UnderlyingRustTuple<'_> {
14134                fn from(value: transferOwnershipCall) -> Self {
14135                    (value.newOwner,)
14136                }
14137            }
14138            #[automatically_derived]
14139            #[doc(hidden)]
14140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14141            for transferOwnershipCall {
14142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14143                    Self { newOwner: tuple.0 }
14144                }
14145            }
14146        }
14147        {
14148            #[doc(hidden)]
14149            type UnderlyingSolTuple<'a> = ();
14150            #[doc(hidden)]
14151            type UnderlyingRustTuple<'a> = ();
14152            #[cfg(test)]
14153            #[allow(dead_code, unreachable_patterns)]
14154            fn _type_assertion(
14155                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14156            ) {
14157                match _t {
14158                    alloy_sol_types::private::AssertTypeEq::<
14159                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14160                    >(_) => {}
14161                }
14162            }
14163            #[automatically_derived]
14164            #[doc(hidden)]
14165            impl ::core::convert::From<transferOwnershipReturn>
14166            for UnderlyingRustTuple<'_> {
14167                fn from(value: transferOwnershipReturn) -> Self {
14168                    ()
14169                }
14170            }
14171            #[automatically_derived]
14172            #[doc(hidden)]
14173            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14174            for transferOwnershipReturn {
14175                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14176                    Self {}
14177                }
14178            }
14179        }
14180        impl transferOwnershipReturn {
14181            fn _tokenize(
14182                &self,
14183            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14184                ()
14185            }
14186        }
14187        #[automatically_derived]
14188        impl alloy_sol_types::SolCall for transferOwnershipCall {
14189            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
14190            type Token<'a> = <Self::Parameters<
14191                'a,
14192            > as alloy_sol_types::SolType>::Token<'a>;
14193            type Return = transferOwnershipReturn;
14194            type ReturnTuple<'a> = ();
14195            type ReturnToken<'a> = <Self::ReturnTuple<
14196                'a,
14197            > as alloy_sol_types::SolType>::Token<'a>;
14198            const SIGNATURE: &'static str = "transferOwnership(address)";
14199            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
14200            #[inline]
14201            fn new<'a>(
14202                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14203            ) -> Self {
14204                tuple.into()
14205            }
14206            #[inline]
14207            fn tokenize(&self) -> Self::Token<'_> {
14208                (
14209                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14210                        &self.newOwner,
14211                    ),
14212                )
14213            }
14214            #[inline]
14215            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14216                transferOwnershipReturn::_tokenize(ret)
14217            }
14218            #[inline]
14219            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14220                <Self::ReturnTuple<
14221                    '_,
14222                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14223                    .map(Into::into)
14224            }
14225            #[inline]
14226            fn abi_decode_returns_validate(
14227                data: &[u8],
14228            ) -> alloy_sol_types::Result<Self::Return> {
14229                <Self::ReturnTuple<
14230                    '_,
14231                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14232                    .map(Into::into)
14233            }
14234        }
14235    };
14236    #[derive(serde::Serialize, serde::Deserialize)]
14237    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14238    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
14239```solidity
14240function updateEpochStartBlock(uint64 newEpochStartBlock) external;
14241```*/
14242    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14243    #[derive(Clone)]
14244    pub struct updateEpochStartBlockCall {
14245        #[allow(missing_docs)]
14246        pub newEpochStartBlock: u64,
14247    }
14248    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
14249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14250    #[derive(Clone)]
14251    pub struct updateEpochStartBlockReturn {}
14252    #[allow(
14253        non_camel_case_types,
14254        non_snake_case,
14255        clippy::pub_underscore_fields,
14256        clippy::style
14257    )]
14258    const _: () = {
14259        use alloy::sol_types as alloy_sol_types;
14260        {
14261            #[doc(hidden)]
14262            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14263            #[doc(hidden)]
14264            type UnderlyingRustTuple<'a> = (u64,);
14265            #[cfg(test)]
14266            #[allow(dead_code, unreachable_patterns)]
14267            fn _type_assertion(
14268                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14269            ) {
14270                match _t {
14271                    alloy_sol_types::private::AssertTypeEq::<
14272                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14273                    >(_) => {}
14274                }
14275            }
14276            #[automatically_derived]
14277            #[doc(hidden)]
14278            impl ::core::convert::From<updateEpochStartBlockCall>
14279            for UnderlyingRustTuple<'_> {
14280                fn from(value: updateEpochStartBlockCall) -> Self {
14281                    (value.newEpochStartBlock,)
14282                }
14283            }
14284            #[automatically_derived]
14285            #[doc(hidden)]
14286            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14287            for updateEpochStartBlockCall {
14288                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14289                    Self {
14290                        newEpochStartBlock: tuple.0,
14291                    }
14292                }
14293            }
14294        }
14295        {
14296            #[doc(hidden)]
14297            type UnderlyingSolTuple<'a> = ();
14298            #[doc(hidden)]
14299            type UnderlyingRustTuple<'a> = ();
14300            #[cfg(test)]
14301            #[allow(dead_code, unreachable_patterns)]
14302            fn _type_assertion(
14303                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14304            ) {
14305                match _t {
14306                    alloy_sol_types::private::AssertTypeEq::<
14307                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14308                    >(_) => {}
14309                }
14310            }
14311            #[automatically_derived]
14312            #[doc(hidden)]
14313            impl ::core::convert::From<updateEpochStartBlockReturn>
14314            for UnderlyingRustTuple<'_> {
14315                fn from(value: updateEpochStartBlockReturn) -> Self {
14316                    ()
14317                }
14318            }
14319            #[automatically_derived]
14320            #[doc(hidden)]
14321            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14322            for updateEpochStartBlockReturn {
14323                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14324                    Self {}
14325                }
14326            }
14327        }
14328        impl updateEpochStartBlockReturn {
14329            fn _tokenize(
14330                &self,
14331            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
14332                '_,
14333            > {
14334                ()
14335            }
14336        }
14337        #[automatically_derived]
14338        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
14339            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
14340            type Token<'a> = <Self::Parameters<
14341                'a,
14342            > as alloy_sol_types::SolType>::Token<'a>;
14343            type Return = updateEpochStartBlockReturn;
14344            type ReturnTuple<'a> = ();
14345            type ReturnToken<'a> = <Self::ReturnTuple<
14346                'a,
14347            > as alloy_sol_types::SolType>::Token<'a>;
14348            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
14349            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
14350            #[inline]
14351            fn new<'a>(
14352                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14353            ) -> Self {
14354                tuple.into()
14355            }
14356            #[inline]
14357            fn tokenize(&self) -> Self::Token<'_> {
14358                (
14359                    <alloy::sol_types::sol_data::Uint<
14360                        64,
14361                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
14362                )
14363            }
14364            #[inline]
14365            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14366                updateEpochStartBlockReturn::_tokenize(ret)
14367            }
14368            #[inline]
14369            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14370                <Self::ReturnTuple<
14371                    '_,
14372                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14373                    .map(Into::into)
14374            }
14375            #[inline]
14376            fn abi_decode_returns_validate(
14377                data: &[u8],
14378            ) -> alloy_sol_types::Result<Self::Return> {
14379                <Self::ReturnTuple<
14380                    '_,
14381                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14382                    .map(Into::into)
14383            }
14384        }
14385    };
14386    #[derive(serde::Serialize, serde::Deserialize)]
14387    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14388    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
14389```solidity
14390function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
14391```*/
14392    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14393    #[derive(Clone)]
14394    pub struct upgradeToAndCallCall {
14395        #[allow(missing_docs)]
14396        pub newImplementation: alloy::sol_types::private::Address,
14397        #[allow(missing_docs)]
14398        pub data: alloy::sol_types::private::Bytes,
14399    }
14400    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
14401    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14402    #[derive(Clone)]
14403    pub struct upgradeToAndCallReturn {}
14404    #[allow(
14405        non_camel_case_types,
14406        non_snake_case,
14407        clippy::pub_underscore_fields,
14408        clippy::style
14409    )]
14410    const _: () = {
14411        use alloy::sol_types as alloy_sol_types;
14412        {
14413            #[doc(hidden)]
14414            type UnderlyingSolTuple<'a> = (
14415                alloy::sol_types::sol_data::Address,
14416                alloy::sol_types::sol_data::Bytes,
14417            );
14418            #[doc(hidden)]
14419            type UnderlyingRustTuple<'a> = (
14420                alloy::sol_types::private::Address,
14421                alloy::sol_types::private::Bytes,
14422            );
14423            #[cfg(test)]
14424            #[allow(dead_code, unreachable_patterns)]
14425            fn _type_assertion(
14426                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14427            ) {
14428                match _t {
14429                    alloy_sol_types::private::AssertTypeEq::<
14430                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14431                    >(_) => {}
14432                }
14433            }
14434            #[automatically_derived]
14435            #[doc(hidden)]
14436            impl ::core::convert::From<upgradeToAndCallCall>
14437            for UnderlyingRustTuple<'_> {
14438                fn from(value: upgradeToAndCallCall) -> Self {
14439                    (value.newImplementation, value.data)
14440                }
14441            }
14442            #[automatically_derived]
14443            #[doc(hidden)]
14444            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14445            for upgradeToAndCallCall {
14446                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14447                    Self {
14448                        newImplementation: tuple.0,
14449                        data: tuple.1,
14450                    }
14451                }
14452            }
14453        }
14454        {
14455            #[doc(hidden)]
14456            type UnderlyingSolTuple<'a> = ();
14457            #[doc(hidden)]
14458            type UnderlyingRustTuple<'a> = ();
14459            #[cfg(test)]
14460            #[allow(dead_code, unreachable_patterns)]
14461            fn _type_assertion(
14462                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14463            ) {
14464                match _t {
14465                    alloy_sol_types::private::AssertTypeEq::<
14466                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14467                    >(_) => {}
14468                }
14469            }
14470            #[automatically_derived]
14471            #[doc(hidden)]
14472            impl ::core::convert::From<upgradeToAndCallReturn>
14473            for UnderlyingRustTuple<'_> {
14474                fn from(value: upgradeToAndCallReturn) -> Self {
14475                    ()
14476                }
14477            }
14478            #[automatically_derived]
14479            #[doc(hidden)]
14480            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14481            for upgradeToAndCallReturn {
14482                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14483                    Self {}
14484                }
14485            }
14486        }
14487        impl upgradeToAndCallReturn {
14488            fn _tokenize(
14489                &self,
14490            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
14491                ()
14492            }
14493        }
14494        #[automatically_derived]
14495        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
14496            type Parameters<'a> = (
14497                alloy::sol_types::sol_data::Address,
14498                alloy::sol_types::sol_data::Bytes,
14499            );
14500            type Token<'a> = <Self::Parameters<
14501                'a,
14502            > as alloy_sol_types::SolType>::Token<'a>;
14503            type Return = upgradeToAndCallReturn;
14504            type ReturnTuple<'a> = ();
14505            type ReturnToken<'a> = <Self::ReturnTuple<
14506                'a,
14507            > as alloy_sol_types::SolType>::Token<'a>;
14508            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
14509            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
14510            #[inline]
14511            fn new<'a>(
14512                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14513            ) -> Self {
14514                tuple.into()
14515            }
14516            #[inline]
14517            fn tokenize(&self) -> Self::Token<'_> {
14518                (
14519                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
14520                        &self.newImplementation,
14521                    ),
14522                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
14523                        &self.data,
14524                    ),
14525                )
14526            }
14527            #[inline]
14528            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14529                upgradeToAndCallReturn::_tokenize(ret)
14530            }
14531            #[inline]
14532            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14533                <Self::ReturnTuple<
14534                    '_,
14535                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14536                    .map(Into::into)
14537            }
14538            #[inline]
14539            fn abi_decode_returns_validate(
14540                data: &[u8],
14541            ) -> alloy_sol_types::Result<Self::Return> {
14542                <Self::ReturnTuple<
14543                    '_,
14544                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14545                    .map(Into::into)
14546            }
14547        }
14548    };
14549    #[derive(serde::Serialize, serde::Deserialize)]
14550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14551    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
14552```solidity
14553function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
14554```*/
14555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14556    #[derive(Clone)]
14557    pub struct votingStakeTableStateCall;
14558    #[derive(serde::Serialize, serde::Deserialize)]
14559    #[derive(Default, Debug, PartialEq, Eq, Hash)]
14560    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
14561    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
14562    #[derive(Clone)]
14563    pub struct votingStakeTableStateReturn {
14564        #[allow(missing_docs)]
14565        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
14566        #[allow(missing_docs)]
14567        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14568        #[allow(missing_docs)]
14569        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14570        #[allow(missing_docs)]
14571        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14572    }
14573    #[allow(
14574        non_camel_case_types,
14575        non_snake_case,
14576        clippy::pub_underscore_fields,
14577        clippy::style
14578    )]
14579    const _: () = {
14580        use alloy::sol_types as alloy_sol_types;
14581        {
14582            #[doc(hidden)]
14583            type UnderlyingSolTuple<'a> = ();
14584            #[doc(hidden)]
14585            type UnderlyingRustTuple<'a> = ();
14586            #[cfg(test)]
14587            #[allow(dead_code, unreachable_patterns)]
14588            fn _type_assertion(
14589                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14590            ) {
14591                match _t {
14592                    alloy_sol_types::private::AssertTypeEq::<
14593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14594                    >(_) => {}
14595                }
14596            }
14597            #[automatically_derived]
14598            #[doc(hidden)]
14599            impl ::core::convert::From<votingStakeTableStateCall>
14600            for UnderlyingRustTuple<'_> {
14601                fn from(value: votingStakeTableStateCall) -> Self {
14602                    ()
14603                }
14604            }
14605            #[automatically_derived]
14606            #[doc(hidden)]
14607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14608            for votingStakeTableStateCall {
14609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14610                    Self
14611                }
14612            }
14613        }
14614        {
14615            #[doc(hidden)]
14616            type UnderlyingSolTuple<'a> = (
14617                alloy::sol_types::sol_data::Uint<256>,
14618                BN254::ScalarField,
14619                BN254::ScalarField,
14620                BN254::ScalarField,
14621            );
14622            #[doc(hidden)]
14623            type UnderlyingRustTuple<'a> = (
14624                alloy::sol_types::private::primitives::aliases::U256,
14625                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14626                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14627                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
14628            );
14629            #[cfg(test)]
14630            #[allow(dead_code, unreachable_patterns)]
14631            fn _type_assertion(
14632                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
14633            ) {
14634                match _t {
14635                    alloy_sol_types::private::AssertTypeEq::<
14636                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
14637                    >(_) => {}
14638                }
14639            }
14640            #[automatically_derived]
14641            #[doc(hidden)]
14642            impl ::core::convert::From<votingStakeTableStateReturn>
14643            for UnderlyingRustTuple<'_> {
14644                fn from(value: votingStakeTableStateReturn) -> Self {
14645                    (
14646                        value.threshold,
14647                        value.blsKeyComm,
14648                        value.schnorrKeyComm,
14649                        value.amountComm,
14650                    )
14651                }
14652            }
14653            #[automatically_derived]
14654            #[doc(hidden)]
14655            impl ::core::convert::From<UnderlyingRustTuple<'_>>
14656            for votingStakeTableStateReturn {
14657                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
14658                    Self {
14659                        threshold: tuple.0,
14660                        blsKeyComm: tuple.1,
14661                        schnorrKeyComm: tuple.2,
14662                        amountComm: tuple.3,
14663                    }
14664                }
14665            }
14666        }
14667        impl votingStakeTableStateReturn {
14668            fn _tokenize(
14669                &self,
14670            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
14671                '_,
14672            > {
14673                (
14674                    <alloy::sol_types::sol_data::Uint<
14675                        256,
14676                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
14677                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14678                        &self.blsKeyComm,
14679                    ),
14680                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14681                        &self.schnorrKeyComm,
14682                    ),
14683                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
14684                        &self.amountComm,
14685                    ),
14686                )
14687            }
14688        }
14689        #[automatically_derived]
14690        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
14691            type Parameters<'a> = ();
14692            type Token<'a> = <Self::Parameters<
14693                'a,
14694            > as alloy_sol_types::SolType>::Token<'a>;
14695            type Return = votingStakeTableStateReturn;
14696            type ReturnTuple<'a> = (
14697                alloy::sol_types::sol_data::Uint<256>,
14698                BN254::ScalarField,
14699                BN254::ScalarField,
14700                BN254::ScalarField,
14701            );
14702            type ReturnToken<'a> = <Self::ReturnTuple<
14703                'a,
14704            > as alloy_sol_types::SolType>::Token<'a>;
14705            const SIGNATURE: &'static str = "votingStakeTableState()";
14706            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
14707            #[inline]
14708            fn new<'a>(
14709                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
14710            ) -> Self {
14711                tuple.into()
14712            }
14713            #[inline]
14714            fn tokenize(&self) -> Self::Token<'_> {
14715                ()
14716            }
14717            #[inline]
14718            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
14719                votingStakeTableStateReturn::_tokenize(ret)
14720            }
14721            #[inline]
14722            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
14723                <Self::ReturnTuple<
14724                    '_,
14725                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
14726                    .map(Into::into)
14727            }
14728            #[inline]
14729            fn abi_decode_returns_validate(
14730                data: &[u8],
14731            ) -> alloy_sol_types::Result<Self::Return> {
14732                <Self::ReturnTuple<
14733                    '_,
14734                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
14735                    .map(Into::into)
14736            }
14737        }
14738    };
14739    ///Container for all the [`LightClientV2Mock`](self) function calls.
14740    #[derive(serde::Serialize, serde::Deserialize)]
14741    #[derive()]
14742    pub enum LightClientV2MockCalls {
14743        #[allow(missing_docs)]
14744        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
14745        #[allow(missing_docs)]
14746        _getVk(_getVkCall),
14747        #[allow(missing_docs)]
14748        blocksPerEpoch(blocksPerEpochCall),
14749        #[allow(missing_docs)]
14750        currentBlockNumber(currentBlockNumberCall),
14751        #[allow(missing_docs)]
14752        currentEpoch(currentEpochCall),
14753        #[allow(missing_docs)]
14754        disablePermissionedProverMode(disablePermissionedProverModeCall),
14755        #[allow(missing_docs)]
14756        epochFromBlockNumber(epochFromBlockNumberCall),
14757        #[allow(missing_docs)]
14758        epochStartBlock(epochStartBlockCall),
14759        #[allow(missing_docs)]
14760        finalizedState(finalizedStateCall),
14761        #[allow(missing_docs)]
14762        genesisStakeTableState(genesisStakeTableStateCall),
14763        #[allow(missing_docs)]
14764        genesisState(genesisStateCall),
14765        #[allow(missing_docs)]
14766        getFirstEpoch(getFirstEpochCall),
14767        #[allow(missing_docs)]
14768        getHotShotCommitment(getHotShotCommitmentCall),
14769        #[allow(missing_docs)]
14770        getStateHistoryCount(getStateHistoryCountCall),
14771        #[allow(missing_docs)]
14772        getVersion(getVersionCall),
14773        #[allow(missing_docs)]
14774        initialize(initializeCall),
14775        #[allow(missing_docs)]
14776        initializeV2(initializeV2Call),
14777        #[allow(missing_docs)]
14778        isEpochRoot(isEpochRootCall),
14779        #[allow(missing_docs)]
14780        isGtEpochRoot(isGtEpochRootCall),
14781        #[allow(missing_docs)]
14782        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
14783        #[allow(missing_docs)]
14784        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
14785        #[allow(missing_docs)]
14786        newFinalizedState_0(newFinalizedState_0Call),
14787        #[allow(missing_docs)]
14788        newFinalizedState_1(newFinalizedState_1Call),
14789        #[allow(missing_docs)]
14790        owner(ownerCall),
14791        #[allow(missing_docs)]
14792        permissionedProver(permissionedProverCall),
14793        #[allow(missing_docs)]
14794        proxiableUUID(proxiableUUIDCall),
14795        #[allow(missing_docs)]
14796        renounceOwnership(renounceOwnershipCall),
14797        #[allow(missing_docs)]
14798        setBlocksPerEpoch(setBlocksPerEpochCall),
14799        #[allow(missing_docs)]
14800        setFinalizedState(setFinalizedStateCall),
14801        #[allow(missing_docs)]
14802        setHotShotDownSince(setHotShotDownSinceCall),
14803        #[allow(missing_docs)]
14804        setHotShotUp(setHotShotUpCall),
14805        #[allow(missing_docs)]
14806        setPermissionedProver(setPermissionedProverCall),
14807        #[allow(missing_docs)]
14808        setStateHistory(setStateHistoryCall),
14809        #[allow(missing_docs)]
14810        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
14811        #[allow(missing_docs)]
14812        setVotingStakeTableState(setVotingStakeTableStateCall),
14813        #[allow(missing_docs)]
14814        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
14815        #[allow(missing_docs)]
14816        stateHistoryCommitments(stateHistoryCommitmentsCall),
14817        #[allow(missing_docs)]
14818        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
14819        #[allow(missing_docs)]
14820        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
14821        #[allow(missing_docs)]
14822        transferOwnership(transferOwnershipCall),
14823        #[allow(missing_docs)]
14824        updateEpochStartBlock(updateEpochStartBlockCall),
14825        #[allow(missing_docs)]
14826        upgradeToAndCall(upgradeToAndCallCall),
14827        #[allow(missing_docs)]
14828        votingStakeTableState(votingStakeTableStateCall),
14829    }
14830    #[automatically_derived]
14831    impl LightClientV2MockCalls {
14832        /// All the selectors of this enum.
14833        ///
14834        /// Note that the selectors might not be in the same order as the variants.
14835        /// No guarantees are made about the order of the selectors.
14836        ///
14837        /// Prefer using `SolInterface` methods instead.
14838        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14839            [1u8, 63u8, 165u8, 252u8],
14840            [2u8, 181u8, 146u8, 243u8],
14841            [6u8, 37u8, 225u8, 155u8],
14842            [13u8, 142u8, 110u8, 44u8],
14843            [18u8, 23u8, 60u8, 44u8],
14844            [22u8, 122u8, 198u8, 24u8],
14845            [32u8, 99u8, 212u8, 247u8],
14846            [37u8, 41u8, 116u8, 39u8],
14847            [45u8, 82u8, 170u8, 214u8],
14848            [47u8, 121u8, 136u8, 157u8],
14849            [48u8, 12u8, 137u8, 221u8],
14850            [49u8, 61u8, 247u8, 177u8],
14851            [55u8, 142u8, 194u8, 59u8],
14852            [60u8, 35u8, 182u8, 219u8],
14853            [62u8, 213u8, 91u8, 123u8],
14854            [66u8, 109u8, 49u8, 148u8],
14855            [67u8, 61u8, 186u8, 159u8],
14856            [79u8, 30u8, 242u8, 134u8],
14857            [82u8, 209u8, 144u8, 45u8],
14858            [98u8, 58u8, 19u8, 56u8],
14859            [105u8, 204u8, 106u8, 4u8],
14860            [113u8, 80u8, 24u8, 166u8],
14861            [117u8, 124u8, 55u8, 173u8],
14862            [118u8, 103u8, 24u8, 8u8],
14863            [130u8, 110u8, 65u8, 252u8],
14864            [133u8, 132u8, 210u8, 63u8],
14865            [141u8, 165u8, 203u8, 91u8],
14866            [144u8, 193u8, 67u8, 144u8],
14867            [150u8, 193u8, 202u8, 97u8],
14868            [155u8, 170u8, 60u8, 201u8],
14869            [159u8, 219u8, 84u8, 167u8],
14870            [173u8, 60u8, 177u8, 204u8],
14871            [179u8, 59u8, 196u8, 145u8],
14872            [179u8, 218u8, 242u8, 84u8],
14873            [181u8, 173u8, 234u8, 60u8],
14874            [194u8, 59u8, 158u8, 158u8],
14875            [200u8, 229u8, 228u8, 152u8],
14876            [210u8, 77u8, 147u8, 61u8],
14877            [224u8, 48u8, 51u8, 1u8],
14878            [240u8, 104u8, 32u8, 84u8],
14879            [242u8, 253u8, 227u8, 139u8],
14880            [245u8, 103u8, 97u8, 96u8],
14881            [249u8, 229u8, 13u8, 25u8],
14882        ];
14883    }
14884    #[automatically_derived]
14885    impl alloy_sol_types::SolInterface for LightClientV2MockCalls {
14886        const NAME: &'static str = "LightClientV2MockCalls";
14887        const MIN_DATA_LENGTH: usize = 0usize;
14888        const COUNT: usize = 43usize;
14889        #[inline]
14890        fn selector(&self) -> [u8; 4] {
14891            match self {
14892                Self::UPGRADE_INTERFACE_VERSION(_) => {
14893                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
14894                }
14895                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
14896                Self::blocksPerEpoch(_) => {
14897                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14898                }
14899                Self::currentBlockNumber(_) => {
14900                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14901                }
14902                Self::currentEpoch(_) => {
14903                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
14904                }
14905                Self::disablePermissionedProverMode(_) => {
14906                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
14907                }
14908                Self::epochFromBlockNumber(_) => {
14909                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
14910                }
14911                Self::epochStartBlock(_) => {
14912                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
14913                }
14914                Self::finalizedState(_) => {
14915                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14916                }
14917                Self::genesisStakeTableState(_) => {
14918                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14919                }
14920                Self::genesisState(_) => {
14921                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
14922                }
14923                Self::getFirstEpoch(_) => {
14924                    <getFirstEpochCall as alloy_sol_types::SolCall>::SELECTOR
14925                }
14926                Self::getHotShotCommitment(_) => {
14927                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
14928                }
14929                Self::getStateHistoryCount(_) => {
14930                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
14931                }
14932                Self::getVersion(_) => {
14933                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
14934                }
14935                Self::initialize(_) => {
14936                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
14937                }
14938                Self::initializeV2(_) => {
14939                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
14940                }
14941                Self::isEpochRoot(_) => {
14942                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14943                }
14944                Self::isGtEpochRoot(_) => {
14945                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
14946                }
14947                Self::isPermissionedProverEnabled(_) => {
14948                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
14949                }
14950                Self::lagOverEscapeHatchThreshold(_) => {
14951                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
14952                }
14953                Self::newFinalizedState_0(_) => {
14954                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
14955                }
14956                Self::newFinalizedState_1(_) => {
14957                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
14958                }
14959                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
14960                Self::permissionedProver(_) => {
14961                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14962                }
14963                Self::proxiableUUID(_) => {
14964                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
14965                }
14966                Self::renounceOwnership(_) => {
14967                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
14968                }
14969                Self::setBlocksPerEpoch(_) => {
14970                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
14971                }
14972                Self::setFinalizedState(_) => {
14973                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
14974                }
14975                Self::setHotShotDownSince(_) => {
14976                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
14977                }
14978                Self::setHotShotUp(_) => {
14979                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
14980                }
14981                Self::setPermissionedProver(_) => {
14982                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
14983                }
14984                Self::setStateHistory(_) => {
14985                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
14986                }
14987                Self::setStateHistoryRetentionPeriod(_) => {
14988                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14989                }
14990                Self::setVotingStakeTableState(_) => {
14991                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
14992                }
14993                Self::setstateHistoryRetentionPeriod(_) => {
14994                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
14995                }
14996                Self::stateHistoryCommitments(_) => {
14997                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
14998                }
14999                Self::stateHistoryFirstIndex(_) => {
15000                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
15001                }
15002                Self::stateHistoryRetentionPeriod(_) => {
15003                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
15004                }
15005                Self::transferOwnership(_) => {
15006                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
15007                }
15008                Self::updateEpochStartBlock(_) => {
15009                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
15010                }
15011                Self::upgradeToAndCall(_) => {
15012                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
15013                }
15014                Self::votingStakeTableState(_) => {
15015                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
15016                }
15017            }
15018        }
15019        #[inline]
15020        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15021            Self::SELECTORS.get(i).copied()
15022        }
15023        #[inline]
15024        fn valid_selector(selector: [u8; 4]) -> bool {
15025            Self::SELECTORS.binary_search(&selector).is_ok()
15026        }
15027        #[inline]
15028        #[allow(non_snake_case)]
15029        fn abi_decode_raw(
15030            selector: [u8; 4],
15031            data: &[u8],
15032        ) -> alloy_sol_types::Result<Self> {
15033            static DECODE_SHIMS: &[fn(
15034                &[u8],
15035            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15036                {
15037                    fn setPermissionedProver(
15038                        data: &[u8],
15039                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15040                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15041                                data,
15042                            )
15043                            .map(LightClientV2MockCalls::setPermissionedProver)
15044                    }
15045                    setPermissionedProver
15046                },
15047                {
15048                    fn stateHistoryCommitments(
15049                        data: &[u8],
15050                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15051                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
15052                                data,
15053                            )
15054                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15055                    }
15056                    stateHistoryCommitments
15057                },
15058                {
15059                    fn votingStakeTableState(
15060                        data: &[u8],
15061                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15062                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15063                                data,
15064                            )
15065                            .map(LightClientV2MockCalls::votingStakeTableState)
15066                    }
15067                    votingStakeTableState
15068                },
15069                {
15070                    fn getVersion(
15071                        data: &[u8],
15072                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15073                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
15074                                data,
15075                            )
15076                            .map(LightClientV2MockCalls::getVersion)
15077                    }
15078                    getVersion
15079                },
15080                {
15081                    fn _getVk(
15082                        data: &[u8],
15083                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15084                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15085                            .map(LightClientV2MockCalls::_getVk)
15086                    }
15087                    _getVk
15088                },
15089                {
15090                    fn updateEpochStartBlock(
15091                        data: &[u8],
15092                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15093                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15094                                data,
15095                            )
15096                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15097                    }
15098                    updateEpochStartBlock
15099                },
15100                {
15101                    fn newFinalizedState_0(
15102                        data: &[u8],
15103                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15104                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
15105                                data,
15106                            )
15107                            .map(LightClientV2MockCalls::newFinalizedState_0)
15108                    }
15109                    newFinalizedState_0
15110                },
15111                {
15112                    fn isEpochRoot(
15113                        data: &[u8],
15114                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15115                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15116                                data,
15117                            )
15118                            .map(LightClientV2MockCalls::isEpochRoot)
15119                    }
15120                    isEpochRoot
15121                },
15122                {
15123                    fn setHotShotDownSince(
15124                        data: &[u8],
15125                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15126                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
15127                                data,
15128                            )
15129                            .map(LightClientV2MockCalls::setHotShotDownSince)
15130                    }
15131                    setHotShotDownSince
15132                },
15133                {
15134                    fn stateHistoryFirstIndex(
15135                        data: &[u8],
15136                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15137                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
15138                                data,
15139                            )
15140                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15141                    }
15142                    stateHistoryFirstIndex
15143                },
15144                {
15145                    fn isGtEpochRoot(
15146                        data: &[u8],
15147                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15148                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
15149                                data,
15150                            )
15151                            .map(LightClientV2MockCalls::isGtEpochRoot)
15152                    }
15153                    isGtEpochRoot
15154                },
15155                {
15156                    fn permissionedProver(
15157                        data: &[u8],
15158                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15159                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
15160                                data,
15161                            )
15162                            .map(LightClientV2MockCalls::permissionedProver)
15163                    }
15164                    permissionedProver
15165                },
15166                {
15167                    fn currentBlockNumber(
15168                        data: &[u8],
15169                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15170                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15171                                data,
15172                            )
15173                            .map(LightClientV2MockCalls::currentBlockNumber)
15174                    }
15175                    currentBlockNumber
15176                },
15177                {
15178                    fn setBlocksPerEpoch(
15179                        data: &[u8],
15180                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15181                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15182                                data,
15183                            )
15184                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15185                    }
15186                    setBlocksPerEpoch
15187                },
15188                {
15189                    fn epochStartBlock(
15190                        data: &[u8],
15191                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15192                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
15193                                data,
15194                            )
15195                            .map(LightClientV2MockCalls::epochStartBlock)
15196                    }
15197                    epochStartBlock
15198                },
15199                {
15200                    fn genesisStakeTableState(
15201                        data: &[u8],
15202                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15203                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15204                                data,
15205                            )
15206                            .map(LightClientV2MockCalls::genesisStakeTableState)
15207                    }
15208                    genesisStakeTableState
15209                },
15210                {
15211                    fn setStateHistoryRetentionPeriod(
15212                        data: &[u8],
15213                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15214                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15215                                data,
15216                            )
15217                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15218                    }
15219                    setStateHistoryRetentionPeriod
15220                },
15221                {
15222                    fn upgradeToAndCall(
15223                        data: &[u8],
15224                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15225                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
15226                                data,
15227                            )
15228                            .map(LightClientV2MockCalls::upgradeToAndCall)
15229                    }
15230                    upgradeToAndCall
15231                },
15232                {
15233                    fn proxiableUUID(
15234                        data: &[u8],
15235                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15236                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
15237                                data,
15238                            )
15239                            .map(LightClientV2MockCalls::proxiableUUID)
15240                    }
15241                    proxiableUUID
15242                },
15243                {
15244                    fn setVotingStakeTableState(
15245                        data: &[u8],
15246                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15247                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15248                                data,
15249                            )
15250                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15251                    }
15252                    setVotingStakeTableState
15253                },
15254                {
15255                    fn disablePermissionedProverMode(
15256                        data: &[u8],
15257                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15258                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15259                                data,
15260                            )
15261                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15262                    }
15263                    disablePermissionedProverMode
15264                },
15265                {
15266                    fn renounceOwnership(
15267                        data: &[u8],
15268                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15269                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15270                                data,
15271                            )
15272                            .map(LightClientV2MockCalls::renounceOwnership)
15273                    }
15274                    renounceOwnership
15275                },
15276                {
15277                    fn newFinalizedState_1(
15278                        data: &[u8],
15279                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15280                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
15281                                data,
15282                            )
15283                            .map(LightClientV2MockCalls::newFinalizedState_1)
15284                    }
15285                    newFinalizedState_1
15286                },
15287                {
15288                    fn currentEpoch(
15289                        data: &[u8],
15290                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15291                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15292                                data,
15293                            )
15294                            .map(LightClientV2MockCalls::currentEpoch)
15295                    }
15296                    currentEpoch
15297                },
15298                {
15299                    fn isPermissionedProverEnabled(
15300                        data: &[u8],
15301                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15302                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
15303                                data,
15304                            )
15305                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
15306                    }
15307                    isPermissionedProverEnabled
15308                },
15309                {
15310                    fn getHotShotCommitment(
15311                        data: &[u8],
15312                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15313                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
15314                                data,
15315                            )
15316                            .map(LightClientV2MockCalls::getHotShotCommitment)
15317                    }
15318                    getHotShotCommitment
15319                },
15320                {
15321                    fn owner(
15322                        data: &[u8],
15323                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15324                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
15325                            .map(LightClientV2MockCalls::owner)
15326                    }
15327                    owner
15328                },
15329                {
15330                    fn epochFromBlockNumber(
15331                        data: &[u8],
15332                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15333                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
15334                                data,
15335                            )
15336                            .map(LightClientV2MockCalls::epochFromBlockNumber)
15337                    }
15338                    epochFromBlockNumber
15339                },
15340                {
15341                    fn setstateHistoryRetentionPeriod(
15342                        data: &[u8],
15343                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15344                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15345                                data,
15346                            )
15347                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
15348                    }
15349                    setstateHistoryRetentionPeriod
15350                },
15351                {
15352                    fn initialize(
15353                        data: &[u8],
15354                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15355                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
15356                                data,
15357                            )
15358                            .map(LightClientV2MockCalls::initialize)
15359                    }
15360                    initialize
15361                },
15362                {
15363                    fn finalizedState(
15364                        data: &[u8],
15365                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15366                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15367                                data,
15368                            )
15369                            .map(LightClientV2MockCalls::finalizedState)
15370                    }
15371                    finalizedState
15372                },
15373                {
15374                    fn UPGRADE_INTERFACE_VERSION(
15375                        data: &[u8],
15376                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15377                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
15378                                data,
15379                            )
15380                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
15381                    }
15382                    UPGRADE_INTERFACE_VERSION
15383                },
15384                {
15385                    fn initializeV2(
15386                        data: &[u8],
15387                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15388                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
15389                                data,
15390                            )
15391                            .map(LightClientV2MockCalls::initializeV2)
15392                    }
15393                    initializeV2
15394                },
15395                {
15396                    fn getFirstEpoch(
15397                        data: &[u8],
15398                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15399                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15400                                data,
15401                            )
15402                            .map(LightClientV2MockCalls::getFirstEpoch)
15403                    }
15404                    getFirstEpoch
15405                },
15406                {
15407                    fn setFinalizedState(
15408                        data: &[u8],
15409                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15410                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15411                                data,
15412                            )
15413                            .map(LightClientV2MockCalls::setFinalizedState)
15414                    }
15415                    setFinalizedState
15416                },
15417                {
15418                    fn stateHistoryRetentionPeriod(
15419                        data: &[u8],
15420                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15421                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
15422                                data,
15423                            )
15424                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
15425                    }
15426                    stateHistoryRetentionPeriod
15427                },
15428                {
15429                    fn setHotShotUp(
15430                        data: &[u8],
15431                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15432                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
15433                                data,
15434                            )
15435                            .map(LightClientV2MockCalls::setHotShotUp)
15436                    }
15437                    setHotShotUp
15438                },
15439                {
15440                    fn genesisState(
15441                        data: &[u8],
15442                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15443                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
15444                                data,
15445                            )
15446                            .map(LightClientV2MockCalls::genesisState)
15447                    }
15448                    genesisState
15449                },
15450                {
15451                    fn lagOverEscapeHatchThreshold(
15452                        data: &[u8],
15453                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15454                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
15455                                data,
15456                            )
15457                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
15458                    }
15459                    lagOverEscapeHatchThreshold
15460                },
15461                {
15462                    fn blocksPerEpoch(
15463                        data: &[u8],
15464                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15465                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
15466                                data,
15467                            )
15468                            .map(LightClientV2MockCalls::blocksPerEpoch)
15469                    }
15470                    blocksPerEpoch
15471                },
15472                {
15473                    fn transferOwnership(
15474                        data: &[u8],
15475                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15476                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
15477                                data,
15478                            )
15479                            .map(LightClientV2MockCalls::transferOwnership)
15480                    }
15481                    transferOwnership
15482                },
15483                {
15484                    fn setStateHistory(
15485                        data: &[u8],
15486                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15487                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
15488                                data,
15489                            )
15490                            .map(LightClientV2MockCalls::setStateHistory)
15491                    }
15492                    setStateHistory
15493                },
15494                {
15495                    fn getStateHistoryCount(
15496                        data: &[u8],
15497                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15498                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
15499                                data,
15500                            )
15501                            .map(LightClientV2MockCalls::getStateHistoryCount)
15502                    }
15503                    getStateHistoryCount
15504                },
15505            ];
15506            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15507                return Err(
15508                    alloy_sol_types::Error::unknown_selector(
15509                        <Self as alloy_sol_types::SolInterface>::NAME,
15510                        selector,
15511                    ),
15512                );
15513            };
15514            DECODE_SHIMS[idx](data)
15515        }
15516        #[inline]
15517        #[allow(non_snake_case)]
15518        fn abi_decode_raw_validate(
15519            selector: [u8; 4],
15520            data: &[u8],
15521        ) -> alloy_sol_types::Result<Self> {
15522            static DECODE_VALIDATE_SHIMS: &[fn(
15523                &[u8],
15524            ) -> alloy_sol_types::Result<LightClientV2MockCalls>] = &[
15525                {
15526                    fn setPermissionedProver(
15527                        data: &[u8],
15528                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15529                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15530                                data,
15531                            )
15532                            .map(LightClientV2MockCalls::setPermissionedProver)
15533                    }
15534                    setPermissionedProver
15535                },
15536                {
15537                    fn stateHistoryCommitments(
15538                        data: &[u8],
15539                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15540                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15541                                data,
15542                            )
15543                            .map(LightClientV2MockCalls::stateHistoryCommitments)
15544                    }
15545                    stateHistoryCommitments
15546                },
15547                {
15548                    fn votingStakeTableState(
15549                        data: &[u8],
15550                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15551                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15552                                data,
15553                            )
15554                            .map(LightClientV2MockCalls::votingStakeTableState)
15555                    }
15556                    votingStakeTableState
15557                },
15558                {
15559                    fn getVersion(
15560                        data: &[u8],
15561                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15562                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15563                                data,
15564                            )
15565                            .map(LightClientV2MockCalls::getVersion)
15566                    }
15567                    getVersion
15568                },
15569                {
15570                    fn _getVk(
15571                        data: &[u8],
15572                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15573                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15574                                data,
15575                            )
15576                            .map(LightClientV2MockCalls::_getVk)
15577                    }
15578                    _getVk
15579                },
15580                {
15581                    fn updateEpochStartBlock(
15582                        data: &[u8],
15583                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15584                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15585                                data,
15586                            )
15587                            .map(LightClientV2MockCalls::updateEpochStartBlock)
15588                    }
15589                    updateEpochStartBlock
15590                },
15591                {
15592                    fn newFinalizedState_0(
15593                        data: &[u8],
15594                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15595                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15596                                data,
15597                            )
15598                            .map(LightClientV2MockCalls::newFinalizedState_0)
15599                    }
15600                    newFinalizedState_0
15601                },
15602                {
15603                    fn isEpochRoot(
15604                        data: &[u8],
15605                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15606                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15607                                data,
15608                            )
15609                            .map(LightClientV2MockCalls::isEpochRoot)
15610                    }
15611                    isEpochRoot
15612                },
15613                {
15614                    fn setHotShotDownSince(
15615                        data: &[u8],
15616                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15617                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15618                                data,
15619                            )
15620                            .map(LightClientV2MockCalls::setHotShotDownSince)
15621                    }
15622                    setHotShotDownSince
15623                },
15624                {
15625                    fn stateHistoryFirstIndex(
15626                        data: &[u8],
15627                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15628                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15629                                data,
15630                            )
15631                            .map(LightClientV2MockCalls::stateHistoryFirstIndex)
15632                    }
15633                    stateHistoryFirstIndex
15634                },
15635                {
15636                    fn isGtEpochRoot(
15637                        data: &[u8],
15638                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15639                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15640                                data,
15641                            )
15642                            .map(LightClientV2MockCalls::isGtEpochRoot)
15643                    }
15644                    isGtEpochRoot
15645                },
15646                {
15647                    fn permissionedProver(
15648                        data: &[u8],
15649                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15650                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15651                                data,
15652                            )
15653                            .map(LightClientV2MockCalls::permissionedProver)
15654                    }
15655                    permissionedProver
15656                },
15657                {
15658                    fn currentBlockNumber(
15659                        data: &[u8],
15660                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15661                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15662                                data,
15663                            )
15664                            .map(LightClientV2MockCalls::currentBlockNumber)
15665                    }
15666                    currentBlockNumber
15667                },
15668                {
15669                    fn setBlocksPerEpoch(
15670                        data: &[u8],
15671                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15672                        <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15673                                data,
15674                            )
15675                            .map(LightClientV2MockCalls::setBlocksPerEpoch)
15676                    }
15677                    setBlocksPerEpoch
15678                },
15679                {
15680                    fn epochStartBlock(
15681                        data: &[u8],
15682                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15683                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15684                                data,
15685                            )
15686                            .map(LightClientV2MockCalls::epochStartBlock)
15687                    }
15688                    epochStartBlock
15689                },
15690                {
15691                    fn genesisStakeTableState(
15692                        data: &[u8],
15693                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15694                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15695                                data,
15696                            )
15697                            .map(LightClientV2MockCalls::genesisStakeTableState)
15698                    }
15699                    genesisStakeTableState
15700                },
15701                {
15702                    fn setStateHistoryRetentionPeriod(
15703                        data: &[u8],
15704                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15705                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15706                                data,
15707                            )
15708                            .map(LightClientV2MockCalls::setStateHistoryRetentionPeriod)
15709                    }
15710                    setStateHistoryRetentionPeriod
15711                },
15712                {
15713                    fn upgradeToAndCall(
15714                        data: &[u8],
15715                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15716                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15717                                data,
15718                            )
15719                            .map(LightClientV2MockCalls::upgradeToAndCall)
15720                    }
15721                    upgradeToAndCall
15722                },
15723                {
15724                    fn proxiableUUID(
15725                        data: &[u8],
15726                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15727                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15728                                data,
15729                            )
15730                            .map(LightClientV2MockCalls::proxiableUUID)
15731                    }
15732                    proxiableUUID
15733                },
15734                {
15735                    fn setVotingStakeTableState(
15736                        data: &[u8],
15737                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15738                        <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15739                                data,
15740                            )
15741                            .map(LightClientV2MockCalls::setVotingStakeTableState)
15742                    }
15743                    setVotingStakeTableState
15744                },
15745                {
15746                    fn disablePermissionedProverMode(
15747                        data: &[u8],
15748                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15749                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15750                                data,
15751                            )
15752                            .map(LightClientV2MockCalls::disablePermissionedProverMode)
15753                    }
15754                    disablePermissionedProverMode
15755                },
15756                {
15757                    fn renounceOwnership(
15758                        data: &[u8],
15759                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15760                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15761                                data,
15762                            )
15763                            .map(LightClientV2MockCalls::renounceOwnership)
15764                    }
15765                    renounceOwnership
15766                },
15767                {
15768                    fn newFinalizedState_1(
15769                        data: &[u8],
15770                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15771                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15772                                data,
15773                            )
15774                            .map(LightClientV2MockCalls::newFinalizedState_1)
15775                    }
15776                    newFinalizedState_1
15777                },
15778                {
15779                    fn currentEpoch(
15780                        data: &[u8],
15781                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15782                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15783                                data,
15784                            )
15785                            .map(LightClientV2MockCalls::currentEpoch)
15786                    }
15787                    currentEpoch
15788                },
15789                {
15790                    fn isPermissionedProverEnabled(
15791                        data: &[u8],
15792                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15793                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15794                                data,
15795                            )
15796                            .map(LightClientV2MockCalls::isPermissionedProverEnabled)
15797                    }
15798                    isPermissionedProverEnabled
15799                },
15800                {
15801                    fn getHotShotCommitment(
15802                        data: &[u8],
15803                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15804                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15805                                data,
15806                            )
15807                            .map(LightClientV2MockCalls::getHotShotCommitment)
15808                    }
15809                    getHotShotCommitment
15810                },
15811                {
15812                    fn owner(
15813                        data: &[u8],
15814                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15815                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15816                                data,
15817                            )
15818                            .map(LightClientV2MockCalls::owner)
15819                    }
15820                    owner
15821                },
15822                {
15823                    fn epochFromBlockNumber(
15824                        data: &[u8],
15825                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15826                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15827                                data,
15828                            )
15829                            .map(LightClientV2MockCalls::epochFromBlockNumber)
15830                    }
15831                    epochFromBlockNumber
15832                },
15833                {
15834                    fn setstateHistoryRetentionPeriod(
15835                        data: &[u8],
15836                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15837                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15838                                data,
15839                            )
15840                            .map(LightClientV2MockCalls::setstateHistoryRetentionPeriod)
15841                    }
15842                    setstateHistoryRetentionPeriod
15843                },
15844                {
15845                    fn initialize(
15846                        data: &[u8],
15847                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15848                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15849                                data,
15850                            )
15851                            .map(LightClientV2MockCalls::initialize)
15852                    }
15853                    initialize
15854                },
15855                {
15856                    fn finalizedState(
15857                        data: &[u8],
15858                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15859                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15860                                data,
15861                            )
15862                            .map(LightClientV2MockCalls::finalizedState)
15863                    }
15864                    finalizedState
15865                },
15866                {
15867                    fn UPGRADE_INTERFACE_VERSION(
15868                        data: &[u8],
15869                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15870                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15871                                data,
15872                            )
15873                            .map(LightClientV2MockCalls::UPGRADE_INTERFACE_VERSION)
15874                    }
15875                    UPGRADE_INTERFACE_VERSION
15876                },
15877                {
15878                    fn initializeV2(
15879                        data: &[u8],
15880                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15881                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15882                                data,
15883                            )
15884                            .map(LightClientV2MockCalls::initializeV2)
15885                    }
15886                    initializeV2
15887                },
15888                {
15889                    fn getFirstEpoch(
15890                        data: &[u8],
15891                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15892                        <getFirstEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15893                                data,
15894                            )
15895                            .map(LightClientV2MockCalls::getFirstEpoch)
15896                    }
15897                    getFirstEpoch
15898                },
15899                {
15900                    fn setFinalizedState(
15901                        data: &[u8],
15902                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15903                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15904                                data,
15905                            )
15906                            .map(LightClientV2MockCalls::setFinalizedState)
15907                    }
15908                    setFinalizedState
15909                },
15910                {
15911                    fn stateHistoryRetentionPeriod(
15912                        data: &[u8],
15913                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15914                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15915                                data,
15916                            )
15917                            .map(LightClientV2MockCalls::stateHistoryRetentionPeriod)
15918                    }
15919                    stateHistoryRetentionPeriod
15920                },
15921                {
15922                    fn setHotShotUp(
15923                        data: &[u8],
15924                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15925                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15926                                data,
15927                            )
15928                            .map(LightClientV2MockCalls::setHotShotUp)
15929                    }
15930                    setHotShotUp
15931                },
15932                {
15933                    fn genesisState(
15934                        data: &[u8],
15935                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15936                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15937                                data,
15938                            )
15939                            .map(LightClientV2MockCalls::genesisState)
15940                    }
15941                    genesisState
15942                },
15943                {
15944                    fn lagOverEscapeHatchThreshold(
15945                        data: &[u8],
15946                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15947                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15948                                data,
15949                            )
15950                            .map(LightClientV2MockCalls::lagOverEscapeHatchThreshold)
15951                    }
15952                    lagOverEscapeHatchThreshold
15953                },
15954                {
15955                    fn blocksPerEpoch(
15956                        data: &[u8],
15957                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15958                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15959                                data,
15960                            )
15961                            .map(LightClientV2MockCalls::blocksPerEpoch)
15962                    }
15963                    blocksPerEpoch
15964                },
15965                {
15966                    fn transferOwnership(
15967                        data: &[u8],
15968                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15969                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15970                                data,
15971                            )
15972                            .map(LightClientV2MockCalls::transferOwnership)
15973                    }
15974                    transferOwnership
15975                },
15976                {
15977                    fn setStateHistory(
15978                        data: &[u8],
15979                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15980                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15981                                data,
15982                            )
15983                            .map(LightClientV2MockCalls::setStateHistory)
15984                    }
15985                    setStateHistory
15986                },
15987                {
15988                    fn getStateHistoryCount(
15989                        data: &[u8],
15990                    ) -> alloy_sol_types::Result<LightClientV2MockCalls> {
15991                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
15992                                data,
15993                            )
15994                            .map(LightClientV2MockCalls::getStateHistoryCount)
15995                    }
15996                    getStateHistoryCount
15997                },
15998            ];
15999            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16000                return Err(
16001                    alloy_sol_types::Error::unknown_selector(
16002                        <Self as alloy_sol_types::SolInterface>::NAME,
16003                        selector,
16004                    ),
16005                );
16006            };
16007            DECODE_VALIDATE_SHIMS[idx](data)
16008        }
16009        #[inline]
16010        fn abi_encoded_size(&self) -> usize {
16011            match self {
16012                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16013                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
16014                        inner,
16015                    )
16016                }
16017                Self::_getVk(inner) => {
16018                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16019                }
16020                Self::blocksPerEpoch(inner) => {
16021                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16022                        inner,
16023                    )
16024                }
16025                Self::currentBlockNumber(inner) => {
16026                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16027                        inner,
16028                    )
16029                }
16030                Self::currentEpoch(inner) => {
16031                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16032                        inner,
16033                    )
16034                }
16035                Self::disablePermissionedProverMode(inner) => {
16036                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
16037                        inner,
16038                    )
16039                }
16040                Self::epochFromBlockNumber(inner) => {
16041                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
16042                        inner,
16043                    )
16044                }
16045                Self::epochStartBlock(inner) => {
16046                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16047                        inner,
16048                    )
16049                }
16050                Self::finalizedState(inner) => {
16051                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16052                        inner,
16053                    )
16054                }
16055                Self::genesisStakeTableState(inner) => {
16056                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16057                        inner,
16058                    )
16059                }
16060                Self::genesisState(inner) => {
16061                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16062                        inner,
16063                    )
16064                }
16065                Self::getFirstEpoch(inner) => {
16066                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16067                        inner,
16068                    )
16069                }
16070                Self::getHotShotCommitment(inner) => {
16071                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
16072                        inner,
16073                    )
16074                }
16075                Self::getStateHistoryCount(inner) => {
16076                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
16077                        inner,
16078                    )
16079                }
16080                Self::getVersion(inner) => {
16081                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16082                }
16083                Self::initialize(inner) => {
16084                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16085                }
16086                Self::initializeV2(inner) => {
16087                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
16088                        inner,
16089                    )
16090                }
16091                Self::isEpochRoot(inner) => {
16092                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16093                        inner,
16094                    )
16095                }
16096                Self::isGtEpochRoot(inner) => {
16097                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
16098                        inner,
16099                    )
16100                }
16101                Self::isPermissionedProverEnabled(inner) => {
16102                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
16103                        inner,
16104                    )
16105                }
16106                Self::lagOverEscapeHatchThreshold(inner) => {
16107                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
16108                        inner,
16109                    )
16110                }
16111                Self::newFinalizedState_0(inner) => {
16112                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
16113                        inner,
16114                    )
16115                }
16116                Self::newFinalizedState_1(inner) => {
16117                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
16118                        inner,
16119                    )
16120                }
16121                Self::owner(inner) => {
16122                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
16123                }
16124                Self::permissionedProver(inner) => {
16125                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16126                        inner,
16127                    )
16128                }
16129                Self::proxiableUUID(inner) => {
16130                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
16131                        inner,
16132                    )
16133                }
16134                Self::renounceOwnership(inner) => {
16135                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16136                        inner,
16137                    )
16138                }
16139                Self::setBlocksPerEpoch(inner) => {
16140                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
16141                        inner,
16142                    )
16143                }
16144                Self::setFinalizedState(inner) => {
16145                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16146                        inner,
16147                    )
16148                }
16149                Self::setHotShotDownSince(inner) => {
16150                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
16151                        inner,
16152                    )
16153                }
16154                Self::setHotShotUp(inner) => {
16155                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
16156                        inner,
16157                    )
16158                }
16159                Self::setPermissionedProver(inner) => {
16160                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
16161                        inner,
16162                    )
16163                }
16164                Self::setStateHistory(inner) => {
16165                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
16166                        inner,
16167                    )
16168                }
16169                Self::setStateHistoryRetentionPeriod(inner) => {
16170                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16171                        inner,
16172                    )
16173                }
16174                Self::setVotingStakeTableState(inner) => {
16175                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16176                        inner,
16177                    )
16178                }
16179                Self::setstateHistoryRetentionPeriod(inner) => {
16180                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16181                        inner,
16182                    )
16183                }
16184                Self::stateHistoryCommitments(inner) => {
16185                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
16186                        inner,
16187                    )
16188                }
16189                Self::stateHistoryFirstIndex(inner) => {
16190                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
16191                        inner,
16192                    )
16193                }
16194                Self::stateHistoryRetentionPeriod(inner) => {
16195                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
16196                        inner,
16197                    )
16198                }
16199                Self::transferOwnership(inner) => {
16200                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
16201                        inner,
16202                    )
16203                }
16204                Self::updateEpochStartBlock(inner) => {
16205                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
16206                        inner,
16207                    )
16208                }
16209                Self::upgradeToAndCall(inner) => {
16210                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
16211                        inner,
16212                    )
16213                }
16214                Self::votingStakeTableState(inner) => {
16215                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
16216                        inner,
16217                    )
16218                }
16219            }
16220        }
16221        #[inline]
16222        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
16223            match self {
16224                Self::UPGRADE_INTERFACE_VERSION(inner) => {
16225                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
16226                        inner,
16227                        out,
16228                    )
16229                }
16230                Self::_getVk(inner) => {
16231                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16232                }
16233                Self::blocksPerEpoch(inner) => {
16234                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16235                        inner,
16236                        out,
16237                    )
16238                }
16239                Self::currentBlockNumber(inner) => {
16240                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16241                        inner,
16242                        out,
16243                    )
16244                }
16245                Self::currentEpoch(inner) => {
16246                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16247                        inner,
16248                        out,
16249                    )
16250                }
16251                Self::disablePermissionedProverMode(inner) => {
16252                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16253                        inner,
16254                        out,
16255                    )
16256                }
16257                Self::epochFromBlockNumber(inner) => {
16258                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
16259                        inner,
16260                        out,
16261                    )
16262                }
16263                Self::epochStartBlock(inner) => {
16264                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16265                        inner,
16266                        out,
16267                    )
16268                }
16269                Self::finalizedState(inner) => {
16270                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16271                        inner,
16272                        out,
16273                    )
16274                }
16275                Self::genesisStakeTableState(inner) => {
16276                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16277                        inner,
16278                        out,
16279                    )
16280                }
16281                Self::genesisState(inner) => {
16282                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16283                        inner,
16284                        out,
16285                    )
16286                }
16287                Self::getFirstEpoch(inner) => {
16288                    <getFirstEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16289                        inner,
16290                        out,
16291                    )
16292                }
16293                Self::getHotShotCommitment(inner) => {
16294                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
16295                        inner,
16296                        out,
16297                    )
16298                }
16299                Self::getStateHistoryCount(inner) => {
16300                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
16301                        inner,
16302                        out,
16303                    )
16304                }
16305                Self::getVersion(inner) => {
16306                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
16307                        inner,
16308                        out,
16309                    )
16310                }
16311                Self::initialize(inner) => {
16312                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
16313                        inner,
16314                        out,
16315                    )
16316                }
16317                Self::initializeV2(inner) => {
16318                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
16319                        inner,
16320                        out,
16321                    )
16322                }
16323                Self::isEpochRoot(inner) => {
16324                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16325                        inner,
16326                        out,
16327                    )
16328                }
16329                Self::isGtEpochRoot(inner) => {
16330                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
16331                        inner,
16332                        out,
16333                    )
16334                }
16335                Self::isPermissionedProverEnabled(inner) => {
16336                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
16337                        inner,
16338                        out,
16339                    )
16340                }
16341                Self::lagOverEscapeHatchThreshold(inner) => {
16342                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
16343                        inner,
16344                        out,
16345                    )
16346                }
16347                Self::newFinalizedState_0(inner) => {
16348                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
16349                        inner,
16350                        out,
16351                    )
16352                }
16353                Self::newFinalizedState_1(inner) => {
16354                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
16355                        inner,
16356                        out,
16357                    )
16358                }
16359                Self::owner(inner) => {
16360                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
16361                }
16362                Self::permissionedProver(inner) => {
16363                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16364                        inner,
16365                        out,
16366                    )
16367                }
16368                Self::proxiableUUID(inner) => {
16369                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
16370                        inner,
16371                        out,
16372                    )
16373                }
16374                Self::renounceOwnership(inner) => {
16375                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16376                        inner,
16377                        out,
16378                    )
16379                }
16380                Self::setBlocksPerEpoch(inner) => {
16381                    <setBlocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
16382                        inner,
16383                        out,
16384                    )
16385                }
16386                Self::setFinalizedState(inner) => {
16387                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16388                        inner,
16389                        out,
16390                    )
16391                }
16392                Self::setHotShotDownSince(inner) => {
16393                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
16394                        inner,
16395                        out,
16396                    )
16397                }
16398                Self::setHotShotUp(inner) => {
16399                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
16400                        inner,
16401                        out,
16402                    )
16403                }
16404                Self::setPermissionedProver(inner) => {
16405                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
16406                        inner,
16407                        out,
16408                    )
16409                }
16410                Self::setStateHistory(inner) => {
16411                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
16412                        inner,
16413                        out,
16414                    )
16415                }
16416                Self::setStateHistoryRetentionPeriod(inner) => {
16417                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16418                        inner,
16419                        out,
16420                    )
16421                }
16422                Self::setVotingStakeTableState(inner) => {
16423                    <setVotingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16424                        inner,
16425                        out,
16426                    )
16427                }
16428                Self::setstateHistoryRetentionPeriod(inner) => {
16429                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16430                        inner,
16431                        out,
16432                    )
16433                }
16434                Self::stateHistoryCommitments(inner) => {
16435                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
16436                        inner,
16437                        out,
16438                    )
16439                }
16440                Self::stateHistoryFirstIndex(inner) => {
16441                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
16442                        inner,
16443                        out,
16444                    )
16445                }
16446                Self::stateHistoryRetentionPeriod(inner) => {
16447                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
16448                        inner,
16449                        out,
16450                    )
16451                }
16452                Self::transferOwnership(inner) => {
16453                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
16454                        inner,
16455                        out,
16456                    )
16457                }
16458                Self::updateEpochStartBlock(inner) => {
16459                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
16460                        inner,
16461                        out,
16462                    )
16463                }
16464                Self::upgradeToAndCall(inner) => {
16465                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
16466                        inner,
16467                        out,
16468                    )
16469                }
16470                Self::votingStakeTableState(inner) => {
16471                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
16472                        inner,
16473                        out,
16474                    )
16475                }
16476            }
16477        }
16478    }
16479    ///Container for all the [`LightClientV2Mock`](self) custom errors.
16480    #[derive(serde::Serialize, serde::Deserialize)]
16481    #[derive(Debug, PartialEq, Eq, Hash)]
16482    pub enum LightClientV2MockErrors {
16483        #[allow(missing_docs)]
16484        AddressEmptyCode(AddressEmptyCode),
16485        #[allow(missing_docs)]
16486        DeprecatedApi(DeprecatedApi),
16487        #[allow(missing_docs)]
16488        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
16489        #[allow(missing_docs)]
16490        ERC1967NonPayable(ERC1967NonPayable),
16491        #[allow(missing_docs)]
16492        FailedInnerCall(FailedInnerCall),
16493        #[allow(missing_docs)]
16494        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
16495        #[allow(missing_docs)]
16496        InvalidAddress(InvalidAddress),
16497        #[allow(missing_docs)]
16498        InvalidArgs(InvalidArgs),
16499        #[allow(missing_docs)]
16500        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
16501        #[allow(missing_docs)]
16502        InvalidInitialization(InvalidInitialization),
16503        #[allow(missing_docs)]
16504        InvalidMaxStateHistory(InvalidMaxStateHistory),
16505        #[allow(missing_docs)]
16506        InvalidProof(InvalidProof),
16507        #[allow(missing_docs)]
16508        InvalidScalar(InvalidScalar),
16509        #[allow(missing_docs)]
16510        MissingEpochRootUpdate(MissingEpochRootUpdate),
16511        #[allow(missing_docs)]
16512        NoChangeRequired(NoChangeRequired),
16513        #[allow(missing_docs)]
16514        NotInitializing(NotInitializing),
16515        #[allow(missing_docs)]
16516        OutdatedState(OutdatedState),
16517        #[allow(missing_docs)]
16518        OwnableInvalidOwner(OwnableInvalidOwner),
16519        #[allow(missing_docs)]
16520        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
16521        #[allow(missing_docs)]
16522        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
16523        #[allow(missing_docs)]
16524        ProverNotPermissioned(ProverNotPermissioned),
16525        #[allow(missing_docs)]
16526        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
16527        #[allow(missing_docs)]
16528        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
16529        #[allow(missing_docs)]
16530        WrongStakeTableUsed(WrongStakeTableUsed),
16531    }
16532    #[automatically_derived]
16533    impl LightClientV2MockErrors {
16534        /// All the selectors of this enum.
16535        ///
16536        /// Note that the selectors might not be in the same order as the variants.
16537        /// No guarantees are made about the order of the selectors.
16538        ///
16539        /// Prefer using `SolInterface` methods instead.
16540        pub const SELECTORS: &'static [[u8; 4usize]] = &[
16541            [5u8, 28u8, 70u8, 239u8],
16542            [5u8, 176u8, 92u8, 204u8],
16543            [8u8, 10u8, 232u8, 217u8],
16544            [9u8, 189u8, 227u8, 57u8],
16545            [17u8, 140u8, 218u8, 167u8],
16546            [20u8, 37u8, 234u8, 66u8],
16547            [30u8, 79u8, 189u8, 247u8],
16548            [47u8, 171u8, 146u8, 202u8],
16549            [76u8, 156u8, 140u8, 227u8],
16550            [78u8, 64u8, 92u8, 141u8],
16551            [81u8, 97u8, 128u8, 137u8],
16552            [97u8, 90u8, 146u8, 100u8],
16553            [153u8, 150u8, 179u8, 21u8],
16554            [161u8, 186u8, 7u8, 238u8],
16555            [163u8, 166u8, 71u8, 128u8],
16556            [168u8, 99u8, 174u8, 201u8],
16557            [170u8, 29u8, 73u8, 164u8],
16558            [176u8, 180u8, 56u8, 119u8],
16559            [179u8, 152u8, 151u8, 159u8],
16560            [215u8, 230u8, 188u8, 248u8],
16561            [224u8, 124u8, 141u8, 186u8],
16562            [230u8, 196u8, 36u8, 123u8],
16563            [244u8, 160u8, 238u8, 224u8],
16564            [249u8, 46u8, 232u8, 169u8],
16565        ];
16566    }
16567    #[automatically_derived]
16568    impl alloy_sol_types::SolInterface for LightClientV2MockErrors {
16569        const NAME: &'static str = "LightClientV2MockErrors";
16570        const MIN_DATA_LENGTH: usize = 0usize;
16571        const COUNT: usize = 24usize;
16572        #[inline]
16573        fn selector(&self) -> [u8; 4] {
16574            match self {
16575                Self::AddressEmptyCode(_) => {
16576                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
16577                }
16578                Self::DeprecatedApi(_) => {
16579                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
16580                }
16581                Self::ERC1967InvalidImplementation(_) => {
16582                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
16583                }
16584                Self::ERC1967NonPayable(_) => {
16585                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
16586                }
16587                Self::FailedInnerCall(_) => {
16588                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
16589                }
16590                Self::InsufficientSnapshotHistory(_) => {
16591                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
16592                }
16593                Self::InvalidAddress(_) => {
16594                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
16595                }
16596                Self::InvalidArgs(_) => {
16597                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
16598                }
16599                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
16600                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
16601                }
16602                Self::InvalidInitialization(_) => {
16603                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
16604                }
16605                Self::InvalidMaxStateHistory(_) => {
16606                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
16607                }
16608                Self::InvalidProof(_) => {
16609                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
16610                }
16611                Self::InvalidScalar(_) => {
16612                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
16613                }
16614                Self::MissingEpochRootUpdate(_) => {
16615                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
16616                }
16617                Self::NoChangeRequired(_) => {
16618                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
16619                }
16620                Self::NotInitializing(_) => {
16621                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
16622                }
16623                Self::OutdatedState(_) => {
16624                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
16625                }
16626                Self::OwnableInvalidOwner(_) => {
16627                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
16628                }
16629                Self::OwnableUnauthorizedAccount(_) => {
16630                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
16631                }
16632                Self::OwnershipCannotBeRenounced(_) => {
16633                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
16634                }
16635                Self::ProverNotPermissioned(_) => {
16636                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
16637                }
16638                Self::UUPSUnauthorizedCallContext(_) => {
16639                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
16640                }
16641                Self::UUPSUnsupportedProxiableUUID(_) => {
16642                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
16643                }
16644                Self::WrongStakeTableUsed(_) => {
16645                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
16646                }
16647            }
16648        }
16649        #[inline]
16650        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
16651            Self::SELECTORS.get(i).copied()
16652        }
16653        #[inline]
16654        fn valid_selector(selector: [u8; 4]) -> bool {
16655            Self::SELECTORS.binary_search(&selector).is_ok()
16656        }
16657        #[inline]
16658        #[allow(non_snake_case)]
16659        fn abi_decode_raw(
16660            selector: [u8; 4],
16661            data: &[u8],
16662        ) -> alloy_sol_types::Result<Self> {
16663            static DECODE_SHIMS: &[fn(
16664                &[u8],
16665            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
16666                {
16667                    fn OutdatedState(
16668                        data: &[u8],
16669                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16670                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
16671                                data,
16672                            )
16673                            .map(LightClientV2MockErrors::OutdatedState)
16674                    }
16675                    OutdatedState
16676                },
16677                {
16678                    fn InvalidScalar(
16679                        data: &[u8],
16680                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16681                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
16682                                data,
16683                            )
16684                            .map(LightClientV2MockErrors::InvalidScalar)
16685                    }
16686                    InvalidScalar
16687                },
16688                {
16689                    fn MissingEpochRootUpdate(
16690                        data: &[u8],
16691                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16692                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
16693                                data,
16694                            )
16695                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
16696                    }
16697                    MissingEpochRootUpdate
16698                },
16699                {
16700                    fn InvalidProof(
16701                        data: &[u8],
16702                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16703                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
16704                            .map(LightClientV2MockErrors::InvalidProof)
16705                    }
16706                    InvalidProof
16707                },
16708                {
16709                    fn OwnableUnauthorizedAccount(
16710                        data: &[u8],
16711                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16712                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
16713                                data,
16714                            )
16715                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
16716                    }
16717                    OwnableUnauthorizedAccount
16718                },
16719                {
16720                    fn FailedInnerCall(
16721                        data: &[u8],
16722                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16723                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
16724                                data,
16725                            )
16726                            .map(LightClientV2MockErrors::FailedInnerCall)
16727                    }
16728                    FailedInnerCall
16729                },
16730                {
16731                    fn OwnableInvalidOwner(
16732                        data: &[u8],
16733                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16734                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
16735                                data,
16736                            )
16737                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
16738                    }
16739                    OwnableInvalidOwner
16740                },
16741                {
16742                    fn OwnershipCannotBeRenounced(
16743                        data: &[u8],
16744                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16745                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
16746                                data,
16747                            )
16748                            .map(LightClientV2MockErrors::OwnershipCannotBeRenounced)
16749                    }
16750                    OwnershipCannotBeRenounced
16751                },
16752                {
16753                    fn ERC1967InvalidImplementation(
16754                        data: &[u8],
16755                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16756                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
16757                                data,
16758                            )
16759                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
16760                    }
16761                    ERC1967InvalidImplementation
16762                },
16763                {
16764                    fn DeprecatedApi(
16765                        data: &[u8],
16766                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16767                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
16768                                data,
16769                            )
16770                            .map(LightClientV2MockErrors::DeprecatedApi)
16771                    }
16772                    DeprecatedApi
16773                },
16774                {
16775                    fn WrongStakeTableUsed(
16776                        data: &[u8],
16777                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16778                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
16779                                data,
16780                            )
16781                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
16782                    }
16783                    WrongStakeTableUsed
16784                },
16785                {
16786                    fn InvalidHotShotBlockForCommitmentCheck(
16787                        data: &[u8],
16788                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16789                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
16790                                data,
16791                            )
16792                            .map(
16793                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
16794                            )
16795                    }
16796                    InvalidHotShotBlockForCommitmentCheck
16797                },
16798                {
16799                    fn AddressEmptyCode(
16800                        data: &[u8],
16801                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16802                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
16803                                data,
16804                            )
16805                            .map(LightClientV2MockErrors::AddressEmptyCode)
16806                    }
16807                    AddressEmptyCode
16808                },
16809                {
16810                    fn InvalidArgs(
16811                        data: &[u8],
16812                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16813                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
16814                            .map(LightClientV2MockErrors::InvalidArgs)
16815                    }
16816                    InvalidArgs
16817                },
16818                {
16819                    fn ProverNotPermissioned(
16820                        data: &[u8],
16821                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16822                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
16823                                data,
16824                            )
16825                            .map(LightClientV2MockErrors::ProverNotPermissioned)
16826                    }
16827                    ProverNotPermissioned
16828                },
16829                {
16830                    fn NoChangeRequired(
16831                        data: &[u8],
16832                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16833                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
16834                                data,
16835                            )
16836                            .map(LightClientV2MockErrors::NoChangeRequired)
16837                    }
16838                    NoChangeRequired
16839                },
16840                {
16841                    fn UUPSUnsupportedProxiableUUID(
16842                        data: &[u8],
16843                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16844                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
16845                                data,
16846                            )
16847                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
16848                    }
16849                    UUPSUnsupportedProxiableUUID
16850                },
16851                {
16852                    fn InsufficientSnapshotHistory(
16853                        data: &[u8],
16854                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16855                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
16856                                data,
16857                            )
16858                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
16859                    }
16860                    InsufficientSnapshotHistory
16861                },
16862                {
16863                    fn ERC1967NonPayable(
16864                        data: &[u8],
16865                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16866                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
16867                                data,
16868                            )
16869                            .map(LightClientV2MockErrors::ERC1967NonPayable)
16870                    }
16871                    ERC1967NonPayable
16872                },
16873                {
16874                    fn NotInitializing(
16875                        data: &[u8],
16876                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16877                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
16878                                data,
16879                            )
16880                            .map(LightClientV2MockErrors::NotInitializing)
16881                    }
16882                    NotInitializing
16883                },
16884                {
16885                    fn UUPSUnauthorizedCallContext(
16886                        data: &[u8],
16887                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16888                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
16889                                data,
16890                            )
16891                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
16892                    }
16893                    UUPSUnauthorizedCallContext
16894                },
16895                {
16896                    fn InvalidAddress(
16897                        data: &[u8],
16898                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16899                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
16900                                data,
16901                            )
16902                            .map(LightClientV2MockErrors::InvalidAddress)
16903                    }
16904                    InvalidAddress
16905                },
16906                {
16907                    fn InvalidMaxStateHistory(
16908                        data: &[u8],
16909                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16910                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
16911                                data,
16912                            )
16913                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
16914                    }
16915                    InvalidMaxStateHistory
16916                },
16917                {
16918                    fn InvalidInitialization(
16919                        data: &[u8],
16920                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16921                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
16922                                data,
16923                            )
16924                            .map(LightClientV2MockErrors::InvalidInitialization)
16925                    }
16926                    InvalidInitialization
16927                },
16928            ];
16929            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
16930                return Err(
16931                    alloy_sol_types::Error::unknown_selector(
16932                        <Self as alloy_sol_types::SolInterface>::NAME,
16933                        selector,
16934                    ),
16935                );
16936            };
16937            DECODE_SHIMS[idx](data)
16938        }
16939        #[inline]
16940        #[allow(non_snake_case)]
16941        fn abi_decode_raw_validate(
16942            selector: [u8; 4],
16943            data: &[u8],
16944        ) -> alloy_sol_types::Result<Self> {
16945            static DECODE_VALIDATE_SHIMS: &[fn(
16946                &[u8],
16947            ) -> alloy_sol_types::Result<LightClientV2MockErrors>] = &[
16948                {
16949                    fn OutdatedState(
16950                        data: &[u8],
16951                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16952                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
16953                                data,
16954                            )
16955                            .map(LightClientV2MockErrors::OutdatedState)
16956                    }
16957                    OutdatedState
16958                },
16959                {
16960                    fn InvalidScalar(
16961                        data: &[u8],
16962                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16963                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
16964                                data,
16965                            )
16966                            .map(LightClientV2MockErrors::InvalidScalar)
16967                    }
16968                    InvalidScalar
16969                },
16970                {
16971                    fn MissingEpochRootUpdate(
16972                        data: &[u8],
16973                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16974                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
16975                                data,
16976                            )
16977                            .map(LightClientV2MockErrors::MissingEpochRootUpdate)
16978                    }
16979                    MissingEpochRootUpdate
16980                },
16981                {
16982                    fn InvalidProof(
16983                        data: &[u8],
16984                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16985                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
16986                                data,
16987                            )
16988                            .map(LightClientV2MockErrors::InvalidProof)
16989                    }
16990                    InvalidProof
16991                },
16992                {
16993                    fn OwnableUnauthorizedAccount(
16994                        data: &[u8],
16995                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
16996                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
16997                                data,
16998                            )
16999                            .map(LightClientV2MockErrors::OwnableUnauthorizedAccount)
17000                    }
17001                    OwnableUnauthorizedAccount
17002                },
17003                {
17004                    fn FailedInnerCall(
17005                        data: &[u8],
17006                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17007                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
17008                                data,
17009                            )
17010                            .map(LightClientV2MockErrors::FailedInnerCall)
17011                    }
17012                    FailedInnerCall
17013                },
17014                {
17015                    fn OwnableInvalidOwner(
17016                        data: &[u8],
17017                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17018                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
17019                                data,
17020                            )
17021                            .map(LightClientV2MockErrors::OwnableInvalidOwner)
17022                    }
17023                    OwnableInvalidOwner
17024                },
17025                {
17026                    fn OwnershipCannotBeRenounced(
17027                        data: &[u8],
17028                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17029                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
17030                                data,
17031                            )
17032                            .map(LightClientV2MockErrors::OwnershipCannotBeRenounced)
17033                    }
17034                    OwnershipCannotBeRenounced
17035                },
17036                {
17037                    fn ERC1967InvalidImplementation(
17038                        data: &[u8],
17039                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17040                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
17041                                data,
17042                            )
17043                            .map(LightClientV2MockErrors::ERC1967InvalidImplementation)
17044                    }
17045                    ERC1967InvalidImplementation
17046                },
17047                {
17048                    fn DeprecatedApi(
17049                        data: &[u8],
17050                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17051                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
17052                                data,
17053                            )
17054                            .map(LightClientV2MockErrors::DeprecatedApi)
17055                    }
17056                    DeprecatedApi
17057                },
17058                {
17059                    fn WrongStakeTableUsed(
17060                        data: &[u8],
17061                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17062                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
17063                                data,
17064                            )
17065                            .map(LightClientV2MockErrors::WrongStakeTableUsed)
17066                    }
17067                    WrongStakeTableUsed
17068                },
17069                {
17070                    fn InvalidHotShotBlockForCommitmentCheck(
17071                        data: &[u8],
17072                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17073                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
17074                                data,
17075                            )
17076                            .map(
17077                                LightClientV2MockErrors::InvalidHotShotBlockForCommitmentCheck,
17078                            )
17079                    }
17080                    InvalidHotShotBlockForCommitmentCheck
17081                },
17082                {
17083                    fn AddressEmptyCode(
17084                        data: &[u8],
17085                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17086                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
17087                                data,
17088                            )
17089                            .map(LightClientV2MockErrors::AddressEmptyCode)
17090                    }
17091                    AddressEmptyCode
17092                },
17093                {
17094                    fn InvalidArgs(
17095                        data: &[u8],
17096                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17097                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
17098                                data,
17099                            )
17100                            .map(LightClientV2MockErrors::InvalidArgs)
17101                    }
17102                    InvalidArgs
17103                },
17104                {
17105                    fn ProverNotPermissioned(
17106                        data: &[u8],
17107                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17108                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
17109                                data,
17110                            )
17111                            .map(LightClientV2MockErrors::ProverNotPermissioned)
17112                    }
17113                    ProverNotPermissioned
17114                },
17115                {
17116                    fn NoChangeRequired(
17117                        data: &[u8],
17118                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17119                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
17120                                data,
17121                            )
17122                            .map(LightClientV2MockErrors::NoChangeRequired)
17123                    }
17124                    NoChangeRequired
17125                },
17126                {
17127                    fn UUPSUnsupportedProxiableUUID(
17128                        data: &[u8],
17129                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17130                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
17131                                data,
17132                            )
17133                            .map(LightClientV2MockErrors::UUPSUnsupportedProxiableUUID)
17134                    }
17135                    UUPSUnsupportedProxiableUUID
17136                },
17137                {
17138                    fn InsufficientSnapshotHistory(
17139                        data: &[u8],
17140                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17141                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17142                                data,
17143                            )
17144                            .map(LightClientV2MockErrors::InsufficientSnapshotHistory)
17145                    }
17146                    InsufficientSnapshotHistory
17147                },
17148                {
17149                    fn ERC1967NonPayable(
17150                        data: &[u8],
17151                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17152                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
17153                                data,
17154                            )
17155                            .map(LightClientV2MockErrors::ERC1967NonPayable)
17156                    }
17157                    ERC1967NonPayable
17158                },
17159                {
17160                    fn NotInitializing(
17161                        data: &[u8],
17162                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17163                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
17164                                data,
17165                            )
17166                            .map(LightClientV2MockErrors::NotInitializing)
17167                    }
17168                    NotInitializing
17169                },
17170                {
17171                    fn UUPSUnauthorizedCallContext(
17172                        data: &[u8],
17173                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17174                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
17175                                data,
17176                            )
17177                            .map(LightClientV2MockErrors::UUPSUnauthorizedCallContext)
17178                    }
17179                    UUPSUnauthorizedCallContext
17180                },
17181                {
17182                    fn InvalidAddress(
17183                        data: &[u8],
17184                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17185                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
17186                                data,
17187                            )
17188                            .map(LightClientV2MockErrors::InvalidAddress)
17189                    }
17190                    InvalidAddress
17191                },
17192                {
17193                    fn InvalidMaxStateHistory(
17194                        data: &[u8],
17195                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17196                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
17197                                data,
17198                            )
17199                            .map(LightClientV2MockErrors::InvalidMaxStateHistory)
17200                    }
17201                    InvalidMaxStateHistory
17202                },
17203                {
17204                    fn InvalidInitialization(
17205                        data: &[u8],
17206                    ) -> alloy_sol_types::Result<LightClientV2MockErrors> {
17207                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
17208                                data,
17209                            )
17210                            .map(LightClientV2MockErrors::InvalidInitialization)
17211                    }
17212                    InvalidInitialization
17213                },
17214            ];
17215            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
17216                return Err(
17217                    alloy_sol_types::Error::unknown_selector(
17218                        <Self as alloy_sol_types::SolInterface>::NAME,
17219                        selector,
17220                    ),
17221                );
17222            };
17223            DECODE_VALIDATE_SHIMS[idx](data)
17224        }
17225        #[inline]
17226        fn abi_encoded_size(&self) -> usize {
17227            match self {
17228                Self::AddressEmptyCode(inner) => {
17229                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
17230                        inner,
17231                    )
17232                }
17233                Self::DeprecatedApi(inner) => {
17234                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
17235                }
17236                Self::ERC1967InvalidImplementation(inner) => {
17237                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
17238                        inner,
17239                    )
17240                }
17241                Self::ERC1967NonPayable(inner) => {
17242                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
17243                        inner,
17244                    )
17245                }
17246                Self::FailedInnerCall(inner) => {
17247                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
17248                        inner,
17249                    )
17250                }
17251                Self::InsufficientSnapshotHistory(inner) => {
17252                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
17253                        inner,
17254                    )
17255                }
17256                Self::InvalidAddress(inner) => {
17257                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
17258                        inner,
17259                    )
17260                }
17261                Self::InvalidArgs(inner) => {
17262                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
17263                }
17264                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17265                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
17266                        inner,
17267                    )
17268                }
17269                Self::InvalidInitialization(inner) => {
17270                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
17271                        inner,
17272                    )
17273                }
17274                Self::InvalidMaxStateHistory(inner) => {
17275                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
17276                        inner,
17277                    )
17278                }
17279                Self::InvalidProof(inner) => {
17280                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
17281                }
17282                Self::InvalidScalar(inner) => {
17283                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
17284                }
17285                Self::MissingEpochRootUpdate(inner) => {
17286                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
17287                        inner,
17288                    )
17289                }
17290                Self::NoChangeRequired(inner) => {
17291                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
17292                        inner,
17293                    )
17294                }
17295                Self::NotInitializing(inner) => {
17296                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
17297                        inner,
17298                    )
17299                }
17300                Self::OutdatedState(inner) => {
17301                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
17302                }
17303                Self::OwnableInvalidOwner(inner) => {
17304                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
17305                        inner,
17306                    )
17307                }
17308                Self::OwnableUnauthorizedAccount(inner) => {
17309                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
17310                        inner,
17311                    )
17312                }
17313                Self::OwnershipCannotBeRenounced(inner) => {
17314                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
17315                        inner,
17316                    )
17317                }
17318                Self::ProverNotPermissioned(inner) => {
17319                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
17320                        inner,
17321                    )
17322                }
17323                Self::UUPSUnauthorizedCallContext(inner) => {
17324                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
17325                        inner,
17326                    )
17327                }
17328                Self::UUPSUnsupportedProxiableUUID(inner) => {
17329                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
17330                        inner,
17331                    )
17332                }
17333                Self::WrongStakeTableUsed(inner) => {
17334                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
17335                        inner,
17336                    )
17337                }
17338            }
17339        }
17340        #[inline]
17341        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
17342            match self {
17343                Self::AddressEmptyCode(inner) => {
17344                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
17345                        inner,
17346                        out,
17347                    )
17348                }
17349                Self::DeprecatedApi(inner) => {
17350                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
17351                        inner,
17352                        out,
17353                    )
17354                }
17355                Self::ERC1967InvalidImplementation(inner) => {
17356                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
17357                        inner,
17358                        out,
17359                    )
17360                }
17361                Self::ERC1967NonPayable(inner) => {
17362                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
17363                        inner,
17364                        out,
17365                    )
17366                }
17367                Self::FailedInnerCall(inner) => {
17368                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
17369                        inner,
17370                        out,
17371                    )
17372                }
17373                Self::InsufficientSnapshotHistory(inner) => {
17374                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
17375                        inner,
17376                        out,
17377                    )
17378                }
17379                Self::InvalidAddress(inner) => {
17380                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
17381                        inner,
17382                        out,
17383                    )
17384                }
17385                Self::InvalidArgs(inner) => {
17386                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
17387                        inner,
17388                        out,
17389                    )
17390                }
17391                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
17392                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
17393                        inner,
17394                        out,
17395                    )
17396                }
17397                Self::InvalidInitialization(inner) => {
17398                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
17399                        inner,
17400                        out,
17401                    )
17402                }
17403                Self::InvalidMaxStateHistory(inner) => {
17404                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
17405                        inner,
17406                        out,
17407                    )
17408                }
17409                Self::InvalidProof(inner) => {
17410                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
17411                        inner,
17412                        out,
17413                    )
17414                }
17415                Self::InvalidScalar(inner) => {
17416                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
17417                        inner,
17418                        out,
17419                    )
17420                }
17421                Self::MissingEpochRootUpdate(inner) => {
17422                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
17423                        inner,
17424                        out,
17425                    )
17426                }
17427                Self::NoChangeRequired(inner) => {
17428                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
17429                        inner,
17430                        out,
17431                    )
17432                }
17433                Self::NotInitializing(inner) => {
17434                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
17435                        inner,
17436                        out,
17437                    )
17438                }
17439                Self::OutdatedState(inner) => {
17440                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
17441                        inner,
17442                        out,
17443                    )
17444                }
17445                Self::OwnableInvalidOwner(inner) => {
17446                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
17447                        inner,
17448                        out,
17449                    )
17450                }
17451                Self::OwnableUnauthorizedAccount(inner) => {
17452                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
17453                        inner,
17454                        out,
17455                    )
17456                }
17457                Self::OwnershipCannotBeRenounced(inner) => {
17458                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
17459                        inner,
17460                        out,
17461                    )
17462                }
17463                Self::ProverNotPermissioned(inner) => {
17464                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
17465                        inner,
17466                        out,
17467                    )
17468                }
17469                Self::UUPSUnauthorizedCallContext(inner) => {
17470                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
17471                        inner,
17472                        out,
17473                    )
17474                }
17475                Self::UUPSUnsupportedProxiableUUID(inner) => {
17476                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
17477                        inner,
17478                        out,
17479                    )
17480                }
17481                Self::WrongStakeTableUsed(inner) => {
17482                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
17483                        inner,
17484                        out,
17485                    )
17486                }
17487            }
17488        }
17489    }
17490    ///Container for all the [`LightClientV2Mock`](self) events.
17491    #[derive(serde::Serialize, serde::Deserialize)]
17492    #[derive(Debug, PartialEq, Eq, Hash)]
17493    pub enum LightClientV2MockEvents {
17494        #[allow(missing_docs)]
17495        Initialized(Initialized),
17496        #[allow(missing_docs)]
17497        NewEpoch(NewEpoch),
17498        #[allow(missing_docs)]
17499        NewState(NewState),
17500        #[allow(missing_docs)]
17501        OwnershipTransferred(OwnershipTransferred),
17502        #[allow(missing_docs)]
17503        PermissionedProverNotRequired(PermissionedProverNotRequired),
17504        #[allow(missing_docs)]
17505        PermissionedProverRequired(PermissionedProverRequired),
17506        #[allow(missing_docs)]
17507        Upgrade(Upgrade),
17508        #[allow(missing_docs)]
17509        Upgraded(Upgraded),
17510    }
17511    #[automatically_derived]
17512    impl LightClientV2MockEvents {
17513        /// All the selectors of this enum.
17514        ///
17515        /// Note that the selectors might not be in the same order as the variants.
17516        /// No guarantees are made about the order of the selectors.
17517        ///
17518        /// Prefer using `SolInterface` methods instead.
17519        pub const SELECTORS: &'static [[u8; 32usize]] = &[
17520            [
17521                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
17522                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
17523                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
17524            ],
17525            [
17526                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
17527                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
17528                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
17529            ],
17530            [
17531                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
17532                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
17533                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
17534            ],
17535            [
17536                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
17537                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
17538                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
17539            ],
17540            [
17541                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
17542                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
17543                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
17544            ],
17545            [
17546                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
17547                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
17548                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
17549            ],
17550            [
17551                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
17552                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
17553                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
17554            ],
17555            [
17556                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
17557                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
17558                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
17559            ],
17560        ];
17561    }
17562    #[automatically_derived]
17563    impl alloy_sol_types::SolEventInterface for LightClientV2MockEvents {
17564        const NAME: &'static str = "LightClientV2MockEvents";
17565        const COUNT: usize = 8usize;
17566        fn decode_raw_log(
17567            topics: &[alloy_sol_types::Word],
17568            data: &[u8],
17569        ) -> alloy_sol_types::Result<Self> {
17570            match topics.first().copied() {
17571                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17572                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
17573                            topics,
17574                            data,
17575                        )
17576                        .map(Self::Initialized)
17577                }
17578                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17579                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17580                        .map(Self::NewEpoch)
17581                }
17582                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17583                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17584                        .map(Self::NewState)
17585                }
17586                Some(
17587                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17588                ) => {
17589                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
17590                            topics,
17591                            data,
17592                        )
17593                        .map(Self::OwnershipTransferred)
17594                }
17595                Some(
17596                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17597                ) => {
17598                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17599                            topics,
17600                            data,
17601                        )
17602                        .map(Self::PermissionedProverNotRequired)
17603                }
17604                Some(
17605                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
17606                ) => {
17607                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
17608                            topics,
17609                            data,
17610                        )
17611                        .map(Self::PermissionedProverRequired)
17612                }
17613                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17614                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17615                        .map(Self::Upgrade)
17616                }
17617                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
17618                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
17619                        .map(Self::Upgraded)
17620                }
17621                _ => {
17622                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
17623                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
17624                        log: alloy_sol_types::private::Box::new(
17625                            alloy_sol_types::private::LogData::new_unchecked(
17626                                topics.to_vec(),
17627                                data.to_vec().into(),
17628                            ),
17629                        ),
17630                    })
17631                }
17632            }
17633        }
17634    }
17635    #[automatically_derived]
17636    impl alloy_sol_types::private::IntoLogData for LightClientV2MockEvents {
17637        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
17638            match self {
17639                Self::Initialized(inner) => {
17640                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17641                }
17642                Self::NewEpoch(inner) => {
17643                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17644                }
17645                Self::NewState(inner) => {
17646                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17647                }
17648                Self::OwnershipTransferred(inner) => {
17649                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17650                }
17651                Self::PermissionedProverNotRequired(inner) => {
17652                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17653                }
17654                Self::PermissionedProverRequired(inner) => {
17655                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17656                }
17657                Self::Upgrade(inner) => {
17658                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17659                }
17660                Self::Upgraded(inner) => {
17661                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
17662                }
17663            }
17664        }
17665        fn into_log_data(self) -> alloy_sol_types::private::LogData {
17666            match self {
17667                Self::Initialized(inner) => {
17668                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17669                }
17670                Self::NewEpoch(inner) => {
17671                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17672                }
17673                Self::NewState(inner) => {
17674                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17675                }
17676                Self::OwnershipTransferred(inner) => {
17677                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17678                }
17679                Self::PermissionedProverNotRequired(inner) => {
17680                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17681                }
17682                Self::PermissionedProverRequired(inner) => {
17683                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17684                }
17685                Self::Upgrade(inner) => {
17686                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17687                }
17688                Self::Upgraded(inner) => {
17689                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
17690                }
17691            }
17692        }
17693    }
17694    use alloy::contract as alloy_contract;
17695    /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
17696
17697See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
17698    #[inline]
17699    pub const fn new<
17700        P: alloy_contract::private::Provider<N>,
17701        N: alloy_contract::private::Network,
17702    >(
17703        address: alloy_sol_types::private::Address,
17704        provider: P,
17705    ) -> LightClientV2MockInstance<P, N> {
17706        LightClientV2MockInstance::<P, N>::new(address, provider)
17707    }
17708    /**Deploys this contract using the given `provider` and constructor arguments, if any.
17709
17710Returns a new instance of the contract, if the deployment was successful.
17711
17712For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17713    #[inline]
17714    pub fn deploy<
17715        P: alloy_contract::private::Provider<N>,
17716        N: alloy_contract::private::Network,
17717    >(
17718        provider: P,
17719    ) -> impl ::core::future::Future<
17720        Output = alloy_contract::Result<LightClientV2MockInstance<P, N>>,
17721    > {
17722        LightClientV2MockInstance::<P, N>::deploy(provider)
17723    }
17724    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17725and constructor arguments, if any.
17726
17727This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17728the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17729    #[inline]
17730    pub fn deploy_builder<
17731        P: alloy_contract::private::Provider<N>,
17732        N: alloy_contract::private::Network,
17733    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17734        LightClientV2MockInstance::<P, N>::deploy_builder(provider)
17735    }
17736    /**A [`LightClientV2Mock`](self) instance.
17737
17738Contains type-safe methods for interacting with an on-chain instance of the
17739[`LightClientV2Mock`](self) contract located at a given `address`, using a given
17740provider `P`.
17741
17742If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
17743documentation on how to provide it), the `deploy` and `deploy_builder` methods can
17744be used to deploy a new instance of the contract.
17745
17746See the [module-level documentation](self) for all the available methods.*/
17747    #[derive(Clone)]
17748    pub struct LightClientV2MockInstance<P, N = alloy_contract::private::Ethereum> {
17749        address: alloy_sol_types::private::Address,
17750        provider: P,
17751        _network: ::core::marker::PhantomData<N>,
17752    }
17753    #[automatically_derived]
17754    impl<P, N> ::core::fmt::Debug for LightClientV2MockInstance<P, N> {
17755        #[inline]
17756        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
17757            f.debug_tuple("LightClientV2MockInstance").field(&self.address).finish()
17758        }
17759    }
17760    /// Instantiation and getters/setters.
17761    #[automatically_derived]
17762    impl<
17763        P: alloy_contract::private::Provider<N>,
17764        N: alloy_contract::private::Network,
17765    > LightClientV2MockInstance<P, N> {
17766        /**Creates a new wrapper around an on-chain [`LightClientV2Mock`](self) contract instance.
17767
17768See the [wrapper's documentation](`LightClientV2MockInstance`) for more details.*/
17769        #[inline]
17770        pub const fn new(
17771            address: alloy_sol_types::private::Address,
17772            provider: P,
17773        ) -> Self {
17774            Self {
17775                address,
17776                provider,
17777                _network: ::core::marker::PhantomData,
17778            }
17779        }
17780        /**Deploys this contract using the given `provider` and constructor arguments, if any.
17781
17782Returns a new instance of the contract, if the deployment was successful.
17783
17784For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
17785        #[inline]
17786        pub async fn deploy(
17787            provider: P,
17788        ) -> alloy_contract::Result<LightClientV2MockInstance<P, N>> {
17789            let call_builder = Self::deploy_builder(provider);
17790            let contract_address = call_builder.deploy().await?;
17791            Ok(Self::new(contract_address, call_builder.provider))
17792        }
17793        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
17794and constructor arguments, if any.
17795
17796This is a simple wrapper around creating a `RawCallBuilder` with the data set to
17797the bytecode concatenated with the constructor's ABI-encoded arguments.*/
17798        #[inline]
17799        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
17800            alloy_contract::RawCallBuilder::new_raw_deploy(
17801                provider,
17802                ::core::clone::Clone::clone(&BYTECODE),
17803            )
17804        }
17805        /// Returns a reference to the address.
17806        #[inline]
17807        pub const fn address(&self) -> &alloy_sol_types::private::Address {
17808            &self.address
17809        }
17810        /// Sets the address.
17811        #[inline]
17812        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
17813            self.address = address;
17814        }
17815        /// Sets the address and returns `self`.
17816        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
17817            self.set_address(address);
17818            self
17819        }
17820        /// Returns a reference to the provider.
17821        #[inline]
17822        pub const fn provider(&self) -> &P {
17823            &self.provider
17824        }
17825    }
17826    impl<P: ::core::clone::Clone, N> LightClientV2MockInstance<&P, N> {
17827        /// Clones the provider and returns a new instance with the cloned provider.
17828        #[inline]
17829        pub fn with_cloned_provider(self) -> LightClientV2MockInstance<P, N> {
17830            LightClientV2MockInstance {
17831                address: self.address,
17832                provider: ::core::clone::Clone::clone(&self.provider),
17833                _network: ::core::marker::PhantomData,
17834            }
17835        }
17836    }
17837    /// Function calls.
17838    #[automatically_derived]
17839    impl<
17840        P: alloy_contract::private::Provider<N>,
17841        N: alloy_contract::private::Network,
17842    > LightClientV2MockInstance<P, N> {
17843        /// Creates a new call builder using this contract instance's provider and address.
17844        ///
17845        /// Note that the call can be any function call, not just those defined in this
17846        /// contract. Prefer using the other methods for building type-safe contract calls.
17847        pub fn call_builder<C: alloy_sol_types::SolCall>(
17848            &self,
17849            call: &C,
17850        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
17851            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
17852        }
17853        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
17854        pub fn UPGRADE_INTERFACE_VERSION(
17855            &self,
17856        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
17857            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
17858        }
17859        ///Creates a new call builder for the [`_getVk`] function.
17860        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
17861            self.call_builder(&_getVkCall)
17862        }
17863        ///Creates a new call builder for the [`blocksPerEpoch`] function.
17864        pub fn blocksPerEpoch(
17865            &self,
17866        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
17867            self.call_builder(&blocksPerEpochCall)
17868        }
17869        ///Creates a new call builder for the [`currentBlockNumber`] function.
17870        pub fn currentBlockNumber(
17871            &self,
17872        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
17873            self.call_builder(&currentBlockNumberCall)
17874        }
17875        ///Creates a new call builder for the [`currentEpoch`] function.
17876        pub fn currentEpoch(
17877            &self,
17878        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
17879            self.call_builder(&currentEpochCall)
17880        }
17881        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
17882        pub fn disablePermissionedProverMode(
17883            &self,
17884        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
17885            self.call_builder(&disablePermissionedProverModeCall)
17886        }
17887        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
17888        pub fn epochFromBlockNumber(
17889            &self,
17890            _blockNum: u64,
17891            _blocksPerEpoch: u64,
17892        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
17893            self.call_builder(
17894                &epochFromBlockNumberCall {
17895                    _blockNum,
17896                    _blocksPerEpoch,
17897                },
17898            )
17899        }
17900        ///Creates a new call builder for the [`epochStartBlock`] function.
17901        pub fn epochStartBlock(
17902            &self,
17903        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
17904            self.call_builder(&epochStartBlockCall)
17905        }
17906        ///Creates a new call builder for the [`finalizedState`] function.
17907        pub fn finalizedState(
17908            &self,
17909        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
17910            self.call_builder(&finalizedStateCall)
17911        }
17912        ///Creates a new call builder for the [`genesisStakeTableState`] function.
17913        pub fn genesisStakeTableState(
17914            &self,
17915        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
17916            self.call_builder(&genesisStakeTableStateCall)
17917        }
17918        ///Creates a new call builder for the [`genesisState`] function.
17919        pub fn genesisState(
17920            &self,
17921        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
17922            self.call_builder(&genesisStateCall)
17923        }
17924        ///Creates a new call builder for the [`getFirstEpoch`] function.
17925        pub fn getFirstEpoch(
17926            &self,
17927        ) -> alloy_contract::SolCallBuilder<&P, getFirstEpochCall, N> {
17928            self.call_builder(&getFirstEpochCall)
17929        }
17930        ///Creates a new call builder for the [`getHotShotCommitment`] function.
17931        pub fn getHotShotCommitment(
17932            &self,
17933            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
17934        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
17935            self.call_builder(
17936                &getHotShotCommitmentCall {
17937                    hotShotBlockHeight,
17938                },
17939            )
17940        }
17941        ///Creates a new call builder for the [`getStateHistoryCount`] function.
17942        pub fn getStateHistoryCount(
17943            &self,
17944        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
17945            self.call_builder(&getStateHistoryCountCall)
17946        }
17947        ///Creates a new call builder for the [`getVersion`] function.
17948        pub fn getVersion(
17949            &self,
17950        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
17951            self.call_builder(&getVersionCall)
17952        }
17953        ///Creates a new call builder for the [`initialize`] function.
17954        pub fn initialize(
17955            &self,
17956            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
17957            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
17958            _stateHistoryRetentionPeriod: u32,
17959            owner: alloy::sol_types::private::Address,
17960        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
17961            self.call_builder(
17962                &initializeCall {
17963                    _genesis,
17964                    _genesisStakeTableState,
17965                    _stateHistoryRetentionPeriod,
17966                    owner,
17967                },
17968            )
17969        }
17970        ///Creates a new call builder for the [`initializeV2`] function.
17971        pub fn initializeV2(
17972            &self,
17973            _blocksPerEpoch: u64,
17974            _epochStartBlock: u64,
17975        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
17976            self.call_builder(
17977                &initializeV2Call {
17978                    _blocksPerEpoch,
17979                    _epochStartBlock,
17980                },
17981            )
17982        }
17983        ///Creates a new call builder for the [`isEpochRoot`] function.
17984        pub fn isEpochRoot(
17985            &self,
17986            blockHeight: u64,
17987        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
17988            self.call_builder(&isEpochRootCall { blockHeight })
17989        }
17990        ///Creates a new call builder for the [`isGtEpochRoot`] function.
17991        pub fn isGtEpochRoot(
17992            &self,
17993            blockHeight: u64,
17994        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
17995            self.call_builder(&isGtEpochRootCall { blockHeight })
17996        }
17997        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
17998        pub fn isPermissionedProverEnabled(
17999            &self,
18000        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
18001            self.call_builder(&isPermissionedProverEnabledCall)
18002        }
18003        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
18004        pub fn lagOverEscapeHatchThreshold(
18005            &self,
18006            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
18007            threshold: alloy::sol_types::private::primitives::aliases::U256,
18008        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
18009            self.call_builder(
18010                &lagOverEscapeHatchThresholdCall {
18011                    blockNumber,
18012                    threshold,
18013                },
18014            )
18015        }
18016        ///Creates a new call builder for the [`newFinalizedState_0`] function.
18017        pub fn newFinalizedState_0(
18018            &self,
18019            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18020            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18021        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
18022            self.call_builder(&newFinalizedState_0Call { _0, _1 })
18023        }
18024        ///Creates a new call builder for the [`newFinalizedState_1`] function.
18025        pub fn newFinalizedState_1(
18026            &self,
18027            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18028            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18029            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
18030        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
18031            self.call_builder(
18032                &newFinalizedState_1Call {
18033                    newState,
18034                    nextStakeTable,
18035                    proof,
18036                },
18037            )
18038        }
18039        ///Creates a new call builder for the [`owner`] function.
18040        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
18041            self.call_builder(&ownerCall)
18042        }
18043        ///Creates a new call builder for the [`permissionedProver`] function.
18044        pub fn permissionedProver(
18045            &self,
18046        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
18047            self.call_builder(&permissionedProverCall)
18048        }
18049        ///Creates a new call builder for the [`proxiableUUID`] function.
18050        pub fn proxiableUUID(
18051            &self,
18052        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
18053            self.call_builder(&proxiableUUIDCall)
18054        }
18055        ///Creates a new call builder for the [`renounceOwnership`] function.
18056        pub fn renounceOwnership(
18057            &self,
18058        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
18059            self.call_builder(&renounceOwnershipCall)
18060        }
18061        ///Creates a new call builder for the [`setBlocksPerEpoch`] function.
18062        pub fn setBlocksPerEpoch(
18063            &self,
18064            newBlocksPerEpoch: u64,
18065        ) -> alloy_contract::SolCallBuilder<&P, setBlocksPerEpochCall, N> {
18066            self.call_builder(
18067                &setBlocksPerEpochCall {
18068                    newBlocksPerEpoch,
18069                },
18070            )
18071        }
18072        ///Creates a new call builder for the [`setFinalizedState`] function.
18073        pub fn setFinalizedState(
18074            &self,
18075            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
18076        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
18077            self.call_builder(&setFinalizedStateCall { state })
18078        }
18079        ///Creates a new call builder for the [`setHotShotDownSince`] function.
18080        pub fn setHotShotDownSince(
18081            &self,
18082            l1Height: alloy::sol_types::private::primitives::aliases::U256,
18083        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
18084            self.call_builder(
18085                &setHotShotDownSinceCall {
18086                    l1Height,
18087                },
18088            )
18089        }
18090        ///Creates a new call builder for the [`setHotShotUp`] function.
18091        pub fn setHotShotUp(
18092            &self,
18093        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
18094            self.call_builder(&setHotShotUpCall)
18095        }
18096        ///Creates a new call builder for the [`setPermissionedProver`] function.
18097        pub fn setPermissionedProver(
18098            &self,
18099            prover: alloy::sol_types::private::Address,
18100        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
18101            self.call_builder(
18102                &setPermissionedProverCall {
18103                    prover,
18104                },
18105            )
18106        }
18107        ///Creates a new call builder for the [`setStateHistory`] function.
18108        pub fn setStateHistory(
18109            &self,
18110            _stateHistoryCommitments: alloy::sol_types::private::Vec<
18111                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
18112            >,
18113        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
18114            self.call_builder(
18115                &setStateHistoryCall {
18116                    _stateHistoryCommitments,
18117                },
18118            )
18119        }
18120        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
18121        pub fn setStateHistoryRetentionPeriod(
18122            &self,
18123            historySeconds: u32,
18124        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
18125            self.call_builder(
18126                &setStateHistoryRetentionPeriodCall {
18127                    historySeconds,
18128                },
18129            )
18130        }
18131        ///Creates a new call builder for the [`setVotingStakeTableState`] function.
18132        pub fn setVotingStakeTableState(
18133            &self,
18134            stake: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
18135        ) -> alloy_contract::SolCallBuilder<&P, setVotingStakeTableStateCall, N> {
18136            self.call_builder(
18137                &setVotingStakeTableStateCall {
18138                    stake,
18139                },
18140            )
18141        }
18142        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
18143        pub fn setstateHistoryRetentionPeriod(
18144            &self,
18145            historySeconds: u32,
18146        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
18147            self.call_builder(
18148                &setstateHistoryRetentionPeriodCall {
18149                    historySeconds,
18150                },
18151            )
18152        }
18153        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
18154        pub fn stateHistoryCommitments(
18155            &self,
18156            _0: alloy::sol_types::private::primitives::aliases::U256,
18157        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
18158            self.call_builder(&stateHistoryCommitmentsCall(_0))
18159        }
18160        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
18161        pub fn stateHistoryFirstIndex(
18162            &self,
18163        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
18164            self.call_builder(&stateHistoryFirstIndexCall)
18165        }
18166        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
18167        pub fn stateHistoryRetentionPeriod(
18168            &self,
18169        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
18170            self.call_builder(&stateHistoryRetentionPeriodCall)
18171        }
18172        ///Creates a new call builder for the [`transferOwnership`] function.
18173        pub fn transferOwnership(
18174            &self,
18175            newOwner: alloy::sol_types::private::Address,
18176        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
18177            self.call_builder(&transferOwnershipCall { newOwner })
18178        }
18179        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
18180        pub fn updateEpochStartBlock(
18181            &self,
18182            newEpochStartBlock: u64,
18183        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
18184            self.call_builder(
18185                &updateEpochStartBlockCall {
18186                    newEpochStartBlock,
18187                },
18188            )
18189        }
18190        ///Creates a new call builder for the [`upgradeToAndCall`] function.
18191        pub fn upgradeToAndCall(
18192            &self,
18193            newImplementation: alloy::sol_types::private::Address,
18194            data: alloy::sol_types::private::Bytes,
18195        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
18196            self.call_builder(
18197                &upgradeToAndCallCall {
18198                    newImplementation,
18199                    data,
18200                },
18201            )
18202        }
18203        ///Creates a new call builder for the [`votingStakeTableState`] function.
18204        pub fn votingStakeTableState(
18205            &self,
18206        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
18207            self.call_builder(&votingStakeTableStateCall)
18208        }
18209    }
18210    /// Event filters.
18211    #[automatically_derived]
18212    impl<
18213        P: alloy_contract::private::Provider<N>,
18214        N: alloy_contract::private::Network,
18215    > LightClientV2MockInstance<P, N> {
18216        /// Creates a new event filter using this contract instance's provider and address.
18217        ///
18218        /// Note that the type can be any event, not just those defined in this contract.
18219        /// Prefer using the other methods for building type-safe event filters.
18220        pub fn event_filter<E: alloy_sol_types::SolEvent>(
18221            &self,
18222        ) -> alloy_contract::Event<&P, E, N> {
18223            alloy_contract::Event::new_sol(&self.provider, &self.address)
18224        }
18225        ///Creates a new event filter for the [`Initialized`] event.
18226        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
18227            self.event_filter::<Initialized>()
18228        }
18229        ///Creates a new event filter for the [`NewEpoch`] event.
18230        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
18231            self.event_filter::<NewEpoch>()
18232        }
18233        ///Creates a new event filter for the [`NewState`] event.
18234        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
18235            self.event_filter::<NewState>()
18236        }
18237        ///Creates a new event filter for the [`OwnershipTransferred`] event.
18238        pub fn OwnershipTransferred_filter(
18239            &self,
18240        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
18241            self.event_filter::<OwnershipTransferred>()
18242        }
18243        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
18244        pub fn PermissionedProverNotRequired_filter(
18245            &self,
18246        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
18247            self.event_filter::<PermissionedProverNotRequired>()
18248        }
18249        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
18250        pub fn PermissionedProverRequired_filter(
18251            &self,
18252        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
18253            self.event_filter::<PermissionedProverRequired>()
18254        }
18255        ///Creates a new event filter for the [`Upgrade`] event.
18256        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
18257            self.event_filter::<Upgrade>()
18258        }
18259        ///Creates a new event filter for the [`Upgraded`] event.
18260        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
18261            self.event_filter::<Upgraded>()
18262        }
18263    }
18264}