hotshot_contract_adapter/bindings/
light_client_v2.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        #[allow(dead_code)]
334        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
335        #[doc(hidden)]
336        type UnderlyingRustTuple<'a> = (
337            <BaseField as alloy::sol_types::SolType>::RustType,
338            <BaseField as alloy::sol_types::SolType>::RustType,
339        );
340        #[cfg(test)]
341        #[allow(dead_code, unreachable_patterns)]
342        fn _type_assertion(
343            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
344        ) {
345            match _t {
346                alloy_sol_types::private::AssertTypeEq::<
347                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
348                >(_) => {}
349            }
350        }
351        #[automatically_derived]
352        #[doc(hidden)]
353        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
354            fn from(value: G1Point) -> Self {
355                (value.x, value.y)
356            }
357        }
358        #[automatically_derived]
359        #[doc(hidden)]
360        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
361            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
362                Self { x: tuple.0, y: tuple.1 }
363            }
364        }
365        #[automatically_derived]
366        impl alloy_sol_types::SolValue for G1Point {
367            type SolType = Self;
368        }
369        #[automatically_derived]
370        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
371            #[inline]
372            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
373                (
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
375                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
376                )
377            }
378            #[inline]
379            fn stv_abi_encoded_size(&self) -> usize {
380                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
381                    return size;
382                }
383                let tuple = <UnderlyingRustTuple<
384                    '_,
385                > as ::core::convert::From<Self>>::from(self.clone());
386                <UnderlyingSolTuple<
387                    '_,
388                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
389            }
390            #[inline]
391            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
392                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
393            }
394            #[inline]
395            fn stv_abi_encode_packed_to(
396                &self,
397                out: &mut alloy_sol_types::private::Vec<u8>,
398            ) {
399                let tuple = <UnderlyingRustTuple<
400                    '_,
401                > as ::core::convert::From<Self>>::from(self.clone());
402                <UnderlyingSolTuple<
403                    '_,
404                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
405            }
406            #[inline]
407            fn stv_abi_packed_encoded_size(&self) -> usize {
408                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
409                    return size;
410                }
411                let tuple = <UnderlyingRustTuple<
412                    '_,
413                > as ::core::convert::From<Self>>::from(self.clone());
414                <UnderlyingSolTuple<
415                    '_,
416                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
417            }
418        }
419        #[automatically_derived]
420        impl alloy_sol_types::SolType for G1Point {
421            type RustType = Self;
422            type Token<'a> = <UnderlyingSolTuple<
423                'a,
424            > as alloy_sol_types::SolType>::Token<'a>;
425            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
426            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
427                '_,
428            > as alloy_sol_types::SolType>::ENCODED_SIZE;
429            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
430                '_,
431            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
432            #[inline]
433            fn valid_token(token: &Self::Token<'_>) -> bool {
434                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
435            }
436            #[inline]
437            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
438                let tuple = <UnderlyingSolTuple<
439                    '_,
440                > as alloy_sol_types::SolType>::detokenize(token);
441                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
442            }
443        }
444        #[automatically_derived]
445        impl alloy_sol_types::SolStruct for G1Point {
446            const NAME: &'static str = "G1Point";
447            #[inline]
448            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
449                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
450            }
451            #[inline]
452            fn eip712_components() -> alloy_sol_types::private::Vec<
453                alloy_sol_types::private::Cow<'static, str>,
454            > {
455                alloy_sol_types::private::Vec::new()
456            }
457            #[inline]
458            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
459                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
460            }
461            #[inline]
462            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
463                [
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
465                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
466                ]
467                    .concat()
468            }
469        }
470        #[automatically_derived]
471        impl alloy_sol_types::EventTopic for G1Point {
472            #[inline]
473            fn topic_preimage_length(rust: &Self::RustType) -> usize {
474                0usize
475                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
476                        &rust.x,
477                    )
478                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
479                        &rust.y,
480                    )
481            }
482            #[inline]
483            fn encode_topic_preimage(
484                rust: &Self::RustType,
485                out: &mut alloy_sol_types::private::Vec<u8>,
486            ) {
487                out.reserve(
488                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
489                );
490                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
491                    &rust.x,
492                    out,
493                );
494                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
495                    &rust.y,
496                    out,
497                );
498            }
499            #[inline]
500            fn encode_topic(
501                rust: &Self::RustType,
502            ) -> alloy_sol_types::abi::token::WordToken {
503                let mut out = alloy_sol_types::private::Vec::new();
504                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
505                    rust,
506                    &mut out,
507                );
508                alloy_sol_types::abi::token::WordToken(
509                    alloy_sol_types::private::keccak256(out),
510                )
511            }
512        }
513    };
514    use alloy::contract as alloy_contract;
515    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
516
517See the [wrapper's documentation](`BN254Instance`) for more details.*/
518    #[inline]
519    pub const fn new<
520        P: alloy_contract::private::Provider<N>,
521        N: alloy_contract::private::Network,
522    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
523        BN254Instance::<P, N>::new(address, __provider)
524    }
525    /**A [`BN254`](self) instance.
526
527Contains type-safe methods for interacting with an on-chain instance of the
528[`BN254`](self) contract located at a given `address`, using a given
529provider `P`.
530
531If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
532documentation on how to provide it), the `deploy` and `deploy_builder` methods can
533be used to deploy a new instance of the contract.
534
535See the [module-level documentation](self) for all the available methods.*/
536    #[derive(Clone)]
537    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
538        address: alloy_sol_types::private::Address,
539        provider: P,
540        _network: ::core::marker::PhantomData<N>,
541    }
542    #[automatically_derived]
543    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
544        #[inline]
545        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
546            f.debug_tuple("BN254Instance").field(&self.address).finish()
547        }
548    }
549    /// Instantiation and getters/setters.
550    #[automatically_derived]
551    impl<
552        P: alloy_contract::private::Provider<N>,
553        N: alloy_contract::private::Network,
554    > BN254Instance<P, N> {
555        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
556
557See the [wrapper's documentation](`BN254Instance`) for more details.*/
558        #[inline]
559        pub const fn new(
560            address: alloy_sol_types::private::Address,
561            __provider: P,
562        ) -> Self {
563            Self {
564                address,
565                provider: __provider,
566                _network: ::core::marker::PhantomData,
567            }
568        }
569        /// Returns a reference to the address.
570        #[inline]
571        pub const fn address(&self) -> &alloy_sol_types::private::Address {
572            &self.address
573        }
574        /// Sets the address.
575        #[inline]
576        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
577            self.address = address;
578        }
579        /// Sets the address and returns `self`.
580        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
581            self.set_address(address);
582            self
583        }
584        /// Returns a reference to the provider.
585        #[inline]
586        pub const fn provider(&self) -> &P {
587            &self.provider
588        }
589    }
590    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
591        /// Clones the provider and returns a new instance with the cloned provider.
592        #[inline]
593        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
594            BN254Instance {
595                address: self.address,
596                provider: ::core::clone::Clone::clone(&self.provider),
597                _network: ::core::marker::PhantomData,
598            }
599        }
600    }
601    /// Function calls.
602    #[automatically_derived]
603    impl<
604        P: alloy_contract::private::Provider<N>,
605        N: alloy_contract::private::Network,
606    > BN254Instance<P, N> {
607        /// Creates a new call builder using this contract instance's provider and address.
608        ///
609        /// Note that the call can be any function call, not just those defined in this
610        /// contract. Prefer using the other methods for building type-safe contract calls.
611        pub fn call_builder<C: alloy_sol_types::SolCall>(
612            &self,
613            call: &C,
614        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
615            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
616        }
617    }
618    /// Event filters.
619    #[automatically_derived]
620    impl<
621        P: alloy_contract::private::Provider<N>,
622        N: alloy_contract::private::Network,
623    > BN254Instance<P, N> {
624        /// Creates a new event filter using this contract instance's provider and address.
625        ///
626        /// Note that the type can be any event, not just those defined in this contract.
627        /// Prefer using the other methods for building type-safe event filters.
628        pub fn event_filter<E: alloy_sol_types::SolEvent>(
629            &self,
630        ) -> alloy_contract::Event<&P, E, N> {
631            alloy_contract::Event::new_sol(&self.provider, &self.address)
632        }
633    }
634}
635///Module containing a contract's types and functions.
636/**
637
638```solidity
639library IPlonkVerifier {
640    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; }
641    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; }
642}
643```*/
644#[allow(
645    non_camel_case_types,
646    non_snake_case,
647    clippy::pub_underscore_fields,
648    clippy::style,
649    clippy::empty_structs_with_brackets
650)]
651pub mod IPlonkVerifier {
652    use super::*;
653    use alloy::sol_types as alloy_sol_types;
654    #[derive(serde::Serialize, serde::Deserialize)]
655    #[derive()]
656    /**```solidity
657struct 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; }
658```*/
659    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
660    #[derive(Clone)]
661    pub struct PlonkProof {
662        #[allow(missing_docs)]
663        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
664        #[allow(missing_docs)]
665        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
666        #[allow(missing_docs)]
667        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
668        #[allow(missing_docs)]
669        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
670        #[allow(missing_docs)]
671        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
672        #[allow(missing_docs)]
673        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
674        #[allow(missing_docs)]
675        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
676        #[allow(missing_docs)]
677        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
678        #[allow(missing_docs)]
679        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
680        #[allow(missing_docs)]
681        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
682        #[allow(missing_docs)]
683        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
684        #[allow(missing_docs)]
685        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
686        #[allow(missing_docs)]
687        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
688        #[allow(missing_docs)]
689        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
690        #[allow(missing_docs)]
691        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
692        #[allow(missing_docs)]
693        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
694        #[allow(missing_docs)]
695        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
696        #[allow(missing_docs)]
697        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
698        #[allow(missing_docs)]
699        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
700        #[allow(missing_docs)]
701        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
702        #[allow(missing_docs)]
703        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
704        #[allow(missing_docs)]
705        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
706        #[allow(missing_docs)]
707        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
708    }
709    #[allow(
710        non_camel_case_types,
711        non_snake_case,
712        clippy::pub_underscore_fields,
713        clippy::style
714    )]
715    const _: () = {
716        use alloy::sol_types as alloy_sol_types;
717        #[doc(hidden)]
718        #[allow(dead_code)]
719        type UnderlyingSolTuple<'a> = (
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::G1Point,
732            BN254::G1Point,
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            BN254::ScalarField,
742            BN254::ScalarField,
743        );
744        #[doc(hidden)]
745        type UnderlyingRustTuple<'a> = (
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::G1Point as alloy::sol_types::SolType>::RustType,
758            <BN254::G1Point 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            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
768            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
769        );
770        #[cfg(test)]
771        #[allow(dead_code, unreachable_patterns)]
772        fn _type_assertion(
773            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
774        ) {
775            match _t {
776                alloy_sol_types::private::AssertTypeEq::<
777                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
778                >(_) => {}
779            }
780        }
781        #[automatically_derived]
782        #[doc(hidden)]
783        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
784            fn from(value: PlonkProof) -> Self {
785                (
786                    value.wire0,
787                    value.wire1,
788                    value.wire2,
789                    value.wire3,
790                    value.wire4,
791                    value.prodPerm,
792                    value.split0,
793                    value.split1,
794                    value.split2,
795                    value.split3,
796                    value.split4,
797                    value.zeta,
798                    value.zetaOmega,
799                    value.wireEval0,
800                    value.wireEval1,
801                    value.wireEval2,
802                    value.wireEval3,
803                    value.wireEval4,
804                    value.sigmaEval0,
805                    value.sigmaEval1,
806                    value.sigmaEval2,
807                    value.sigmaEval3,
808                    value.prodPermZetaOmegaEval,
809                )
810            }
811        }
812        #[automatically_derived]
813        #[doc(hidden)]
814        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
815            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
816                Self {
817                    wire0: tuple.0,
818                    wire1: tuple.1,
819                    wire2: tuple.2,
820                    wire3: tuple.3,
821                    wire4: tuple.4,
822                    prodPerm: tuple.5,
823                    split0: tuple.6,
824                    split1: tuple.7,
825                    split2: tuple.8,
826                    split3: tuple.9,
827                    split4: tuple.10,
828                    zeta: tuple.11,
829                    zetaOmega: tuple.12,
830                    wireEval0: tuple.13,
831                    wireEval1: tuple.14,
832                    wireEval2: tuple.15,
833                    wireEval3: tuple.16,
834                    wireEval4: tuple.17,
835                    sigmaEval0: tuple.18,
836                    sigmaEval1: tuple.19,
837                    sigmaEval2: tuple.20,
838                    sigmaEval3: tuple.21,
839                    prodPermZetaOmegaEval: tuple.22,
840                }
841            }
842        }
843        #[automatically_derived]
844        impl alloy_sol_types::SolValue for PlonkProof {
845            type SolType = Self;
846        }
847        #[automatically_derived]
848        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
849            #[inline]
850            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
851                (
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
858                        &self.prodPerm,
859                    ),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
865                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
866                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
867                        &self.zetaOmega,
868                    ),
869                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
870                        &self.wireEval0,
871                    ),
872                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
873                        &self.wireEval1,
874                    ),
875                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
876                        &self.wireEval2,
877                    ),
878                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
879                        &self.wireEval3,
880                    ),
881                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
882                        &self.wireEval4,
883                    ),
884                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
885                        &self.sigmaEval0,
886                    ),
887                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
888                        &self.sigmaEval1,
889                    ),
890                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
891                        &self.sigmaEval2,
892                    ),
893                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
894                        &self.sigmaEval3,
895                    ),
896                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
897                        &self.prodPermZetaOmegaEval,
898                    ),
899                )
900            }
901            #[inline]
902            fn stv_abi_encoded_size(&self) -> usize {
903                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
904                    return size;
905                }
906                let tuple = <UnderlyingRustTuple<
907                    '_,
908                > as ::core::convert::From<Self>>::from(self.clone());
909                <UnderlyingSolTuple<
910                    '_,
911                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
912            }
913            #[inline]
914            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
915                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
916            }
917            #[inline]
918            fn stv_abi_encode_packed_to(
919                &self,
920                out: &mut alloy_sol_types::private::Vec<u8>,
921            ) {
922                let tuple = <UnderlyingRustTuple<
923                    '_,
924                > as ::core::convert::From<Self>>::from(self.clone());
925                <UnderlyingSolTuple<
926                    '_,
927                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
928            }
929            #[inline]
930            fn stv_abi_packed_encoded_size(&self) -> usize {
931                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
932                    return size;
933                }
934                let tuple = <UnderlyingRustTuple<
935                    '_,
936                > as ::core::convert::From<Self>>::from(self.clone());
937                <UnderlyingSolTuple<
938                    '_,
939                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
940            }
941        }
942        #[automatically_derived]
943        impl alloy_sol_types::SolType for PlonkProof {
944            type RustType = Self;
945            type Token<'a> = <UnderlyingSolTuple<
946                'a,
947            > as alloy_sol_types::SolType>::Token<'a>;
948            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
949            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
950                '_,
951            > as alloy_sol_types::SolType>::ENCODED_SIZE;
952            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
953                '_,
954            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
955            #[inline]
956            fn valid_token(token: &Self::Token<'_>) -> bool {
957                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
958            }
959            #[inline]
960            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
961                let tuple = <UnderlyingSolTuple<
962                    '_,
963                > as alloy_sol_types::SolType>::detokenize(token);
964                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
965            }
966        }
967        #[automatically_derived]
968        impl alloy_sol_types::SolStruct for PlonkProof {
969            const NAME: &'static str = "PlonkProof";
970            #[inline]
971            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
972                alloy_sol_types::private::Cow::Borrowed(
973                    "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)",
974                )
975            }
976            #[inline]
977            fn eip712_components() -> alloy_sol_types::private::Vec<
978                alloy_sol_types::private::Cow<'static, str>,
979            > {
980                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
981                components
982                    .push(
983                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
984                    );
985                components
986                    .extend(
987                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
988                    );
989                components
990                    .push(
991                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
992                    );
993                components
994                    .extend(
995                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
996                    );
997                components
998                    .push(
999                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1000                    );
1001                components
1002                    .extend(
1003                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1004                    );
1005                components
1006                    .push(
1007                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1008                    );
1009                components
1010                    .extend(
1011                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1012                    );
1013                components
1014                    .push(
1015                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1016                    );
1017                components
1018                    .extend(
1019                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1020                    );
1021                components
1022                    .push(
1023                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1024                    );
1025                components
1026                    .extend(
1027                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1028                    );
1029                components
1030                    .push(
1031                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1032                    );
1033                components
1034                    .extend(
1035                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1036                    );
1037                components
1038                    .push(
1039                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1040                    );
1041                components
1042                    .extend(
1043                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1044                    );
1045                components
1046                    .push(
1047                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1048                    );
1049                components
1050                    .extend(
1051                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1052                    );
1053                components
1054                    .push(
1055                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1056                    );
1057                components
1058                    .extend(
1059                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1060                    );
1061                components
1062                    .push(
1063                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1064                    );
1065                components
1066                    .extend(
1067                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1068                    );
1069                components
1070                    .push(
1071                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1072                    );
1073                components
1074                    .extend(
1075                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1076                    );
1077                components
1078                    .push(
1079                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1080                    );
1081                components
1082                    .extend(
1083                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1084                    );
1085                components
1086            }
1087            #[inline]
1088            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1089                [
1090                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1091                            &self.wire0,
1092                        )
1093                        .0,
1094                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1095                            &self.wire1,
1096                        )
1097                        .0,
1098                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1099                            &self.wire2,
1100                        )
1101                        .0,
1102                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1103                            &self.wire3,
1104                        )
1105                        .0,
1106                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1107                            &self.wire4,
1108                        )
1109                        .0,
1110                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1111                            &self.prodPerm,
1112                        )
1113                        .0,
1114                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1115                            &self.split0,
1116                        )
1117                        .0,
1118                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1119                            &self.split1,
1120                        )
1121                        .0,
1122                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1123                            &self.split2,
1124                        )
1125                        .0,
1126                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1127                            &self.split3,
1128                        )
1129                        .0,
1130                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1131                            &self.split4,
1132                        )
1133                        .0,
1134                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1135                            &self.zeta,
1136                        )
1137                        .0,
1138                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1139                            &self.zetaOmega,
1140                        )
1141                        .0,
1142                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1143                            &self.wireEval0,
1144                        )
1145                        .0,
1146                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1147                            &self.wireEval1,
1148                        )
1149                        .0,
1150                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1151                            &self.wireEval2,
1152                        )
1153                        .0,
1154                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1155                            &self.wireEval3,
1156                        )
1157                        .0,
1158                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1159                            &self.wireEval4,
1160                        )
1161                        .0,
1162                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1163                            &self.sigmaEval0,
1164                        )
1165                        .0,
1166                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1167                            &self.sigmaEval1,
1168                        )
1169                        .0,
1170                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1171                            &self.sigmaEval2,
1172                        )
1173                        .0,
1174                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1175                            &self.sigmaEval3,
1176                        )
1177                        .0,
1178                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1179                            &self.prodPermZetaOmegaEval,
1180                        )
1181                        .0,
1182                ]
1183                    .concat()
1184            }
1185        }
1186        #[automatically_derived]
1187        impl alloy_sol_types::EventTopic for PlonkProof {
1188            #[inline]
1189            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1190                0usize
1191                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1192                        &rust.wire0,
1193                    )
1194                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1195                        &rust.wire1,
1196                    )
1197                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1198                        &rust.wire2,
1199                    )
1200                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1201                        &rust.wire3,
1202                    )
1203                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1204                        &rust.wire4,
1205                    )
1206                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1207                        &rust.prodPerm,
1208                    )
1209                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1210                        &rust.split0,
1211                    )
1212                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1213                        &rust.split1,
1214                    )
1215                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1216                        &rust.split2,
1217                    )
1218                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1219                        &rust.split3,
1220                    )
1221                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1222                        &rust.split4,
1223                    )
1224                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1225                        &rust.zeta,
1226                    )
1227                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1228                        &rust.zetaOmega,
1229                    )
1230                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1231                        &rust.wireEval0,
1232                    )
1233                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1234                        &rust.wireEval1,
1235                    )
1236                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1237                        &rust.wireEval2,
1238                    )
1239                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1240                        &rust.wireEval3,
1241                    )
1242                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1243                        &rust.wireEval4,
1244                    )
1245                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1246                        &rust.sigmaEval0,
1247                    )
1248                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1249                        &rust.sigmaEval1,
1250                    )
1251                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1252                        &rust.sigmaEval2,
1253                    )
1254                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1255                        &rust.sigmaEval3,
1256                    )
1257                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1258                        &rust.prodPermZetaOmegaEval,
1259                    )
1260            }
1261            #[inline]
1262            fn encode_topic_preimage(
1263                rust: &Self::RustType,
1264                out: &mut alloy_sol_types::private::Vec<u8>,
1265            ) {
1266                out.reserve(
1267                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1268                );
1269                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1270                    &rust.wire0,
1271                    out,
1272                );
1273                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1274                    &rust.wire1,
1275                    out,
1276                );
1277                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1278                    &rust.wire2,
1279                    out,
1280                );
1281                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1282                    &rust.wire3,
1283                    out,
1284                );
1285                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1286                    &rust.wire4,
1287                    out,
1288                );
1289                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1290                    &rust.prodPerm,
1291                    out,
1292                );
1293                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1294                    &rust.split0,
1295                    out,
1296                );
1297                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1298                    &rust.split1,
1299                    out,
1300                );
1301                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1302                    &rust.split2,
1303                    out,
1304                );
1305                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1306                    &rust.split3,
1307                    out,
1308                );
1309                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1310                    &rust.split4,
1311                    out,
1312                );
1313                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1314                    &rust.zeta,
1315                    out,
1316                );
1317                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1318                    &rust.zetaOmega,
1319                    out,
1320                );
1321                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1322                    &rust.wireEval0,
1323                    out,
1324                );
1325                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1326                    &rust.wireEval1,
1327                    out,
1328                );
1329                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1330                    &rust.wireEval2,
1331                    out,
1332                );
1333                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1334                    &rust.wireEval3,
1335                    out,
1336                );
1337                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1338                    &rust.wireEval4,
1339                    out,
1340                );
1341                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1342                    &rust.sigmaEval0,
1343                    out,
1344                );
1345                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1346                    &rust.sigmaEval1,
1347                    out,
1348                );
1349                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1350                    &rust.sigmaEval2,
1351                    out,
1352                );
1353                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1354                    &rust.sigmaEval3,
1355                    out,
1356                );
1357                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1358                    &rust.prodPermZetaOmegaEval,
1359                    out,
1360                );
1361            }
1362            #[inline]
1363            fn encode_topic(
1364                rust: &Self::RustType,
1365            ) -> alloy_sol_types::abi::token::WordToken {
1366                let mut out = alloy_sol_types::private::Vec::new();
1367                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1368                    rust,
1369                    &mut out,
1370                );
1371                alloy_sol_types::abi::token::WordToken(
1372                    alloy_sol_types::private::keccak256(out),
1373                )
1374            }
1375        }
1376    };
1377    #[derive(serde::Serialize, serde::Deserialize)]
1378    #[derive()]
1379    /**```solidity
1380struct 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; }
1381```*/
1382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1383    #[derive(Clone)]
1384    pub struct VerifyingKey {
1385        #[allow(missing_docs)]
1386        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1389        #[allow(missing_docs)]
1390        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1425        #[allow(missing_docs)]
1426        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1427        #[allow(missing_docs)]
1428        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1429    }
1430    #[allow(
1431        non_camel_case_types,
1432        non_snake_case,
1433        clippy::pub_underscore_fields,
1434        clippy::style
1435    )]
1436    const _: () = {
1437        use alloy::sol_types as alloy_sol_types;
1438        #[doc(hidden)]
1439        #[allow(dead_code)]
1440        type UnderlyingSolTuple<'a> = (
1441            alloy::sol_types::sol_data::Uint<256>,
1442            alloy::sol_types::sol_data::Uint<256>,
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            BN254::G1Point,
1459            BN254::G1Point,
1460            BN254::G1Point,
1461            alloy::sol_types::sol_data::FixedBytes<32>,
1462            alloy::sol_types::sol_data::FixedBytes<32>,
1463        );
1464        #[doc(hidden)]
1465        type UnderlyingRustTuple<'a> = (
1466            alloy::sol_types::private::primitives::aliases::U256,
1467            alloy::sol_types::private::primitives::aliases::U256,
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            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1484            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1485            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1486            alloy::sol_types::private::FixedBytes<32>,
1487            alloy::sol_types::private::FixedBytes<32>,
1488        );
1489        #[cfg(test)]
1490        #[allow(dead_code, unreachable_patterns)]
1491        fn _type_assertion(
1492            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1493        ) {
1494            match _t {
1495                alloy_sol_types::private::AssertTypeEq::<
1496                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1497                >(_) => {}
1498            }
1499        }
1500        #[automatically_derived]
1501        #[doc(hidden)]
1502        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1503            fn from(value: VerifyingKey) -> Self {
1504                (
1505                    value.domainSize,
1506                    value.numInputs,
1507                    value.sigma0,
1508                    value.sigma1,
1509                    value.sigma2,
1510                    value.sigma3,
1511                    value.sigma4,
1512                    value.q1,
1513                    value.q2,
1514                    value.q3,
1515                    value.q4,
1516                    value.qM12,
1517                    value.qM34,
1518                    value.qO,
1519                    value.qC,
1520                    value.qH1,
1521                    value.qH2,
1522                    value.qH3,
1523                    value.qH4,
1524                    value.qEcc,
1525                    value.g2LSB,
1526                    value.g2MSB,
1527                )
1528            }
1529        }
1530        #[automatically_derived]
1531        #[doc(hidden)]
1532        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1533            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1534                Self {
1535                    domainSize: tuple.0,
1536                    numInputs: tuple.1,
1537                    sigma0: tuple.2,
1538                    sigma1: tuple.3,
1539                    sigma2: tuple.4,
1540                    sigma3: tuple.5,
1541                    sigma4: tuple.6,
1542                    q1: tuple.7,
1543                    q2: tuple.8,
1544                    q3: tuple.9,
1545                    q4: tuple.10,
1546                    qM12: tuple.11,
1547                    qM34: tuple.12,
1548                    qO: tuple.13,
1549                    qC: tuple.14,
1550                    qH1: tuple.15,
1551                    qH2: tuple.16,
1552                    qH3: tuple.17,
1553                    qH4: tuple.18,
1554                    qEcc: tuple.19,
1555                    g2LSB: tuple.20,
1556                    g2MSB: tuple.21,
1557                }
1558            }
1559        }
1560        #[automatically_derived]
1561        impl alloy_sol_types::SolValue for VerifyingKey {
1562            type SolType = Self;
1563        }
1564        #[automatically_derived]
1565        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1566            #[inline]
1567            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1568                (
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1572                    <alloy::sol_types::sol_data::Uint<
1573                        256,
1574                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1590                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1591                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1592                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1596                    <alloy::sol_types::sol_data::FixedBytes<
1597                        32,
1598                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1599                )
1600            }
1601            #[inline]
1602            fn stv_abi_encoded_size(&self) -> usize {
1603                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1604                    return size;
1605                }
1606                let tuple = <UnderlyingRustTuple<
1607                    '_,
1608                > as ::core::convert::From<Self>>::from(self.clone());
1609                <UnderlyingSolTuple<
1610                    '_,
1611                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1612            }
1613            #[inline]
1614            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1615                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1616            }
1617            #[inline]
1618            fn stv_abi_encode_packed_to(
1619                &self,
1620                out: &mut alloy_sol_types::private::Vec<u8>,
1621            ) {
1622                let tuple = <UnderlyingRustTuple<
1623                    '_,
1624                > as ::core::convert::From<Self>>::from(self.clone());
1625                <UnderlyingSolTuple<
1626                    '_,
1627                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1628            }
1629            #[inline]
1630            fn stv_abi_packed_encoded_size(&self) -> usize {
1631                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1632                    return size;
1633                }
1634                let tuple = <UnderlyingRustTuple<
1635                    '_,
1636                > as ::core::convert::From<Self>>::from(self.clone());
1637                <UnderlyingSolTuple<
1638                    '_,
1639                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1640            }
1641        }
1642        #[automatically_derived]
1643        impl alloy_sol_types::SolType for VerifyingKey {
1644            type RustType = Self;
1645            type Token<'a> = <UnderlyingSolTuple<
1646                'a,
1647            > as alloy_sol_types::SolType>::Token<'a>;
1648            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1649            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1652            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1653                '_,
1654            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1655            #[inline]
1656            fn valid_token(token: &Self::Token<'_>) -> bool {
1657                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1658            }
1659            #[inline]
1660            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1661                let tuple = <UnderlyingSolTuple<
1662                    '_,
1663                > as alloy_sol_types::SolType>::detokenize(token);
1664                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1665            }
1666        }
1667        #[automatically_derived]
1668        impl alloy_sol_types::SolStruct for VerifyingKey {
1669            const NAME: &'static str = "VerifyingKey";
1670            #[inline]
1671            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1672                alloy_sol_types::private::Cow::Borrowed(
1673                    "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)",
1674                )
1675            }
1676            #[inline]
1677            fn eip712_components() -> alloy_sol_types::private::Vec<
1678                alloy_sol_types::private::Cow<'static, str>,
1679            > {
1680                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1681                components
1682                    .push(
1683                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1684                    );
1685                components
1686                    .extend(
1687                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1688                    );
1689                components
1690                    .push(
1691                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1692                    );
1693                components
1694                    .extend(
1695                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1696                    );
1697                components
1698                    .push(
1699                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1700                    );
1701                components
1702                    .extend(
1703                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1704                    );
1705                components
1706                    .push(
1707                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1708                    );
1709                components
1710                    .extend(
1711                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1712                    );
1713                components
1714                    .push(
1715                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1716                    );
1717                components
1718                    .extend(
1719                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1720                    );
1721                components
1722                    .push(
1723                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1724                    );
1725                components
1726                    .extend(
1727                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1728                    );
1729                components
1730                    .push(
1731                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1732                    );
1733                components
1734                    .extend(
1735                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1736                    );
1737                components
1738                    .push(
1739                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1740                    );
1741                components
1742                    .extend(
1743                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1744                    );
1745                components
1746                    .push(
1747                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1748                    );
1749                components
1750                    .extend(
1751                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1752                    );
1753                components
1754                    .push(
1755                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1756                    );
1757                components
1758                    .extend(
1759                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1760                    );
1761                components
1762                    .push(
1763                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1764                    );
1765                components
1766                    .extend(
1767                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1768                    );
1769                components
1770                    .push(
1771                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1772                    );
1773                components
1774                    .extend(
1775                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1776                    );
1777                components
1778                    .push(
1779                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1780                    );
1781                components
1782                    .extend(
1783                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1784                    );
1785                components
1786                    .push(
1787                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1788                    );
1789                components
1790                    .extend(
1791                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1792                    );
1793                components
1794                    .push(
1795                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1796                    );
1797                components
1798                    .extend(
1799                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1800                    );
1801                components
1802                    .push(
1803                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1804                    );
1805                components
1806                    .extend(
1807                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1808                    );
1809                components
1810                    .push(
1811                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1812                    );
1813                components
1814                    .extend(
1815                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1816                    );
1817                components
1818                    .push(
1819                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1820                    );
1821                components
1822                    .extend(
1823                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1824                    );
1825                components
1826            }
1827            #[inline]
1828            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1829                [
1830                    <alloy::sol_types::sol_data::Uint<
1831                        256,
1832                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1833                        .0,
1834                    <alloy::sol_types::sol_data::Uint<
1835                        256,
1836                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1837                        .0,
1838                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1839                            &self.sigma0,
1840                        )
1841                        .0,
1842                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1843                            &self.sigma1,
1844                        )
1845                        .0,
1846                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1847                            &self.sigma2,
1848                        )
1849                        .0,
1850                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1851                            &self.sigma3,
1852                        )
1853                        .0,
1854                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1855                            &self.sigma4,
1856                        )
1857                        .0,
1858                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1859                            &self.q1,
1860                        )
1861                        .0,
1862                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1863                            &self.q2,
1864                        )
1865                        .0,
1866                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1867                            &self.q3,
1868                        )
1869                        .0,
1870                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1871                            &self.q4,
1872                        )
1873                        .0,
1874                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1875                            &self.qM12,
1876                        )
1877                        .0,
1878                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1879                            &self.qM34,
1880                        )
1881                        .0,
1882                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1883                            &self.qO,
1884                        )
1885                        .0,
1886                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1887                            &self.qC,
1888                        )
1889                        .0,
1890                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1891                            &self.qH1,
1892                        )
1893                        .0,
1894                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1895                            &self.qH2,
1896                        )
1897                        .0,
1898                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1899                            &self.qH3,
1900                        )
1901                        .0,
1902                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1903                            &self.qH4,
1904                        )
1905                        .0,
1906                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1907                            &self.qEcc,
1908                        )
1909                        .0,
1910                    <alloy::sol_types::sol_data::FixedBytes<
1911                        32,
1912                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1913                        .0,
1914                    <alloy::sol_types::sol_data::FixedBytes<
1915                        32,
1916                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1917                        .0,
1918                ]
1919                    .concat()
1920            }
1921        }
1922        #[automatically_derived]
1923        impl alloy_sol_types::EventTopic for VerifyingKey {
1924            #[inline]
1925            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1926                0usize
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.domainSize,
1931                    )
1932                    + <alloy::sol_types::sol_data::Uint<
1933                        256,
1934                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.numInputs,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma0,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma1,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma2,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma3,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.sigma4,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q1,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q2,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q3,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.q4,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM12,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qM34,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qO,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qC,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH1,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH2,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH3,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qH4,
1987                    )
1988                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1989                        &rust.qEcc,
1990                    )
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1994                    + <alloy::sol_types::sol_data::FixedBytes<
1995                        32,
1996                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1997            }
1998            #[inline]
1999            fn encode_topic_preimage(
2000                rust: &Self::RustType,
2001                out: &mut alloy_sol_types::private::Vec<u8>,
2002            ) {
2003                out.reserve(
2004                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2005                );
2006                <alloy::sol_types::sol_data::Uint<
2007                    256,
2008                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2009                    &rust.domainSize,
2010                    out,
2011                );
2012                <alloy::sol_types::sol_data::Uint<
2013                    256,
2014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2015                    &rust.numInputs,
2016                    out,
2017                );
2018                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2019                    &rust.sigma0,
2020                    out,
2021                );
2022                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2023                    &rust.sigma1,
2024                    out,
2025                );
2026                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2027                    &rust.sigma2,
2028                    out,
2029                );
2030                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2031                    &rust.sigma3,
2032                    out,
2033                );
2034                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2035                    &rust.sigma4,
2036                    out,
2037                );
2038                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2039                    &rust.q1,
2040                    out,
2041                );
2042                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2043                    &rust.q2,
2044                    out,
2045                );
2046                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2047                    &rust.q3,
2048                    out,
2049                );
2050                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2051                    &rust.q4,
2052                    out,
2053                );
2054                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2055                    &rust.qM12,
2056                    out,
2057                );
2058                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2059                    &rust.qM34,
2060                    out,
2061                );
2062                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2063                    &rust.qO,
2064                    out,
2065                );
2066                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2067                    &rust.qC,
2068                    out,
2069                );
2070                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2071                    &rust.qH1,
2072                    out,
2073                );
2074                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2075                    &rust.qH2,
2076                    out,
2077                );
2078                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2079                    &rust.qH3,
2080                    out,
2081                );
2082                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2083                    &rust.qH4,
2084                    out,
2085                );
2086                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2087                    &rust.qEcc,
2088                    out,
2089                );
2090                <alloy::sol_types::sol_data::FixedBytes<
2091                    32,
2092                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2093                    &rust.g2LSB,
2094                    out,
2095                );
2096                <alloy::sol_types::sol_data::FixedBytes<
2097                    32,
2098                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2099                    &rust.g2MSB,
2100                    out,
2101                );
2102            }
2103            #[inline]
2104            fn encode_topic(
2105                rust: &Self::RustType,
2106            ) -> alloy_sol_types::abi::token::WordToken {
2107                let mut out = alloy_sol_types::private::Vec::new();
2108                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2109                    rust,
2110                    &mut out,
2111                );
2112                alloy_sol_types::abi::token::WordToken(
2113                    alloy_sol_types::private::keccak256(out),
2114                )
2115            }
2116        }
2117    };
2118    use alloy::contract as alloy_contract;
2119    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2120
2121See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2122    #[inline]
2123    pub const fn new<
2124        P: alloy_contract::private::Provider<N>,
2125        N: alloy_contract::private::Network,
2126    >(
2127        address: alloy_sol_types::private::Address,
2128        __provider: P,
2129    ) -> IPlonkVerifierInstance<P, N> {
2130        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2131    }
2132    /**A [`IPlonkVerifier`](self) instance.
2133
2134Contains type-safe methods for interacting with an on-chain instance of the
2135[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2136provider `P`.
2137
2138If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2139documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2140be used to deploy a new instance of the contract.
2141
2142See the [module-level documentation](self) for all the available methods.*/
2143    #[derive(Clone)]
2144    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2145        address: alloy_sol_types::private::Address,
2146        provider: P,
2147        _network: ::core::marker::PhantomData<N>,
2148    }
2149    #[automatically_derived]
2150    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2151        #[inline]
2152        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2153            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2154        }
2155    }
2156    /// Instantiation and getters/setters.
2157    #[automatically_derived]
2158    impl<
2159        P: alloy_contract::private::Provider<N>,
2160        N: alloy_contract::private::Network,
2161    > IPlonkVerifierInstance<P, N> {
2162        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2163
2164See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2165        #[inline]
2166        pub const fn new(
2167            address: alloy_sol_types::private::Address,
2168            __provider: P,
2169        ) -> Self {
2170            Self {
2171                address,
2172                provider: __provider,
2173                _network: ::core::marker::PhantomData,
2174            }
2175        }
2176        /// Returns a reference to the address.
2177        #[inline]
2178        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2179            &self.address
2180        }
2181        /// Sets the address.
2182        #[inline]
2183        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2184            self.address = address;
2185        }
2186        /// Sets the address and returns `self`.
2187        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2188            self.set_address(address);
2189            self
2190        }
2191        /// Returns a reference to the provider.
2192        #[inline]
2193        pub const fn provider(&self) -> &P {
2194            &self.provider
2195        }
2196    }
2197    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2198        /// Clones the provider and returns a new instance with the cloned provider.
2199        #[inline]
2200        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2201            IPlonkVerifierInstance {
2202                address: self.address,
2203                provider: ::core::clone::Clone::clone(&self.provider),
2204                _network: ::core::marker::PhantomData,
2205            }
2206        }
2207    }
2208    /// Function calls.
2209    #[automatically_derived]
2210    impl<
2211        P: alloy_contract::private::Provider<N>,
2212        N: alloy_contract::private::Network,
2213    > IPlonkVerifierInstance<P, N> {
2214        /// Creates a new call builder using this contract instance's provider and address.
2215        ///
2216        /// Note that the call can be any function call, not just those defined in this
2217        /// contract. Prefer using the other methods for building type-safe contract calls.
2218        pub fn call_builder<C: alloy_sol_types::SolCall>(
2219            &self,
2220            call: &C,
2221        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2222            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2223        }
2224    }
2225    /// Event filters.
2226    #[automatically_derived]
2227    impl<
2228        P: alloy_contract::private::Provider<N>,
2229        N: alloy_contract::private::Network,
2230    > IPlonkVerifierInstance<P, N> {
2231        /// Creates a new event filter using this contract instance's provider and address.
2232        ///
2233        /// Note that the type can be any event, not just those defined in this contract.
2234        /// Prefer using the other methods for building type-safe event filters.
2235        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2236            &self,
2237        ) -> alloy_contract::Event<&P, E, N> {
2238            alloy_contract::Event::new_sol(&self.provider, &self.address)
2239        }
2240    }
2241}
2242///Module containing a contract's types and functions.
2243/**
2244
2245```solidity
2246library LightClient {
2247    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2248    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2249}
2250```*/
2251#[allow(
2252    non_camel_case_types,
2253    non_snake_case,
2254    clippy::pub_underscore_fields,
2255    clippy::style,
2256    clippy::empty_structs_with_brackets
2257)]
2258pub mod LightClient {
2259    use super::*;
2260    use alloy::sol_types as alloy_sol_types;
2261    #[derive(serde::Serialize, serde::Deserialize)]
2262    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2263    /**```solidity
2264struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2265```*/
2266    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2267    #[derive(Clone)]
2268    pub struct LightClientState {
2269        #[allow(missing_docs)]
2270        pub viewNum: u64,
2271        #[allow(missing_docs)]
2272        pub blockHeight: u64,
2273        #[allow(missing_docs)]
2274        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2275    }
2276    #[allow(
2277        non_camel_case_types,
2278        non_snake_case,
2279        clippy::pub_underscore_fields,
2280        clippy::style
2281    )]
2282    const _: () = {
2283        use alloy::sol_types as alloy_sol_types;
2284        #[doc(hidden)]
2285        #[allow(dead_code)]
2286        type UnderlyingSolTuple<'a> = (
2287            alloy::sol_types::sol_data::Uint<64>,
2288            alloy::sol_types::sol_data::Uint<64>,
2289            BN254::ScalarField,
2290        );
2291        #[doc(hidden)]
2292        type UnderlyingRustTuple<'a> = (
2293            u64,
2294            u64,
2295            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2296        );
2297        #[cfg(test)]
2298        #[allow(dead_code, unreachable_patterns)]
2299        fn _type_assertion(
2300            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2301        ) {
2302            match _t {
2303                alloy_sol_types::private::AssertTypeEq::<
2304                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2305                >(_) => {}
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2311            fn from(value: LightClientState) -> Self {
2312                (value.viewNum, value.blockHeight, value.blockCommRoot)
2313            }
2314        }
2315        #[automatically_derived]
2316        #[doc(hidden)]
2317        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2318            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2319                Self {
2320                    viewNum: tuple.0,
2321                    blockHeight: tuple.1,
2322                    blockCommRoot: tuple.2,
2323                }
2324            }
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::SolValue for LightClientState {
2328            type SolType = Self;
2329        }
2330        #[automatically_derived]
2331        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2332            #[inline]
2333            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2334                (
2335                    <alloy::sol_types::sol_data::Uint<
2336                        64,
2337                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2338                    <alloy::sol_types::sol_data::Uint<
2339                        64,
2340                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2341                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2342                        &self.blockCommRoot,
2343                    ),
2344                )
2345            }
2346            #[inline]
2347            fn stv_abi_encoded_size(&self) -> usize {
2348                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2349                    return size;
2350                }
2351                let tuple = <UnderlyingRustTuple<
2352                    '_,
2353                > as ::core::convert::From<Self>>::from(self.clone());
2354                <UnderlyingSolTuple<
2355                    '_,
2356                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2357            }
2358            #[inline]
2359            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2360                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2361            }
2362            #[inline]
2363            fn stv_abi_encode_packed_to(
2364                &self,
2365                out: &mut alloy_sol_types::private::Vec<u8>,
2366            ) {
2367                let tuple = <UnderlyingRustTuple<
2368                    '_,
2369                > as ::core::convert::From<Self>>::from(self.clone());
2370                <UnderlyingSolTuple<
2371                    '_,
2372                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2373            }
2374            #[inline]
2375            fn stv_abi_packed_encoded_size(&self) -> usize {
2376                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2377                    return size;
2378                }
2379                let tuple = <UnderlyingRustTuple<
2380                    '_,
2381                > as ::core::convert::From<Self>>::from(self.clone());
2382                <UnderlyingSolTuple<
2383                    '_,
2384                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2385            }
2386        }
2387        #[automatically_derived]
2388        impl alloy_sol_types::SolType for LightClientState {
2389            type RustType = Self;
2390            type Token<'a> = <UnderlyingSolTuple<
2391                'a,
2392            > as alloy_sol_types::SolType>::Token<'a>;
2393            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2394            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2395                '_,
2396            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2397            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2398                '_,
2399            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2400            #[inline]
2401            fn valid_token(token: &Self::Token<'_>) -> bool {
2402                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2403            }
2404            #[inline]
2405            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2406                let tuple = <UnderlyingSolTuple<
2407                    '_,
2408                > as alloy_sol_types::SolType>::detokenize(token);
2409                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2410            }
2411        }
2412        #[automatically_derived]
2413        impl alloy_sol_types::SolStruct for LightClientState {
2414            const NAME: &'static str = "LightClientState";
2415            #[inline]
2416            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2417                alloy_sol_types::private::Cow::Borrowed(
2418                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2419                )
2420            }
2421            #[inline]
2422            fn eip712_components() -> alloy_sol_types::private::Vec<
2423                alloy_sol_types::private::Cow<'static, str>,
2424            > {
2425                alloy_sol_types::private::Vec::new()
2426            }
2427            #[inline]
2428            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2429                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2430            }
2431            #[inline]
2432            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2433                [
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2437                        .0,
2438                    <alloy::sol_types::sol_data::Uint<
2439                        64,
2440                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2441                        .0,
2442                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2443                            &self.blockCommRoot,
2444                        )
2445                        .0,
2446                ]
2447                    .concat()
2448            }
2449        }
2450        #[automatically_derived]
2451        impl alloy_sol_types::EventTopic for LightClientState {
2452            #[inline]
2453            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2454                0usize
2455                    + <alloy::sol_types::sol_data::Uint<
2456                        64,
2457                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.viewNum,
2459                    )
2460                    + <alloy::sol_types::sol_data::Uint<
2461                        64,
2462                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2463                        &rust.blockHeight,
2464                    )
2465                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2466                        &rust.blockCommRoot,
2467                    )
2468            }
2469            #[inline]
2470            fn encode_topic_preimage(
2471                rust: &Self::RustType,
2472                out: &mut alloy_sol_types::private::Vec<u8>,
2473            ) {
2474                out.reserve(
2475                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2476                );
2477                <alloy::sol_types::sol_data::Uint<
2478                    64,
2479                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2480                    &rust.viewNum,
2481                    out,
2482                );
2483                <alloy::sol_types::sol_data::Uint<
2484                    64,
2485                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockHeight,
2487                    out,
2488                );
2489                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2490                    &rust.blockCommRoot,
2491                    out,
2492                );
2493            }
2494            #[inline]
2495            fn encode_topic(
2496                rust: &Self::RustType,
2497            ) -> alloy_sol_types::abi::token::WordToken {
2498                let mut out = alloy_sol_types::private::Vec::new();
2499                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2500                    rust,
2501                    &mut out,
2502                );
2503                alloy_sol_types::abi::token::WordToken(
2504                    alloy_sol_types::private::keccak256(out),
2505                )
2506            }
2507        }
2508    };
2509    #[derive(serde::Serialize, serde::Deserialize)]
2510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2511    /**```solidity
2512struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2513```*/
2514    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2515    #[derive(Clone)]
2516    pub struct StakeTableState {
2517        #[allow(missing_docs)]
2518        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2519        #[allow(missing_docs)]
2520        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521        #[allow(missing_docs)]
2522        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2523        #[allow(missing_docs)]
2524        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2525    }
2526    #[allow(
2527        non_camel_case_types,
2528        non_snake_case,
2529        clippy::pub_underscore_fields,
2530        clippy::style
2531    )]
2532    const _: () = {
2533        use alloy::sol_types as alloy_sol_types;
2534        #[doc(hidden)]
2535        #[allow(dead_code)]
2536        type UnderlyingSolTuple<'a> = (
2537            alloy::sol_types::sol_data::Uint<256>,
2538            BN254::ScalarField,
2539            BN254::ScalarField,
2540            BN254::ScalarField,
2541        );
2542        #[doc(hidden)]
2543        type UnderlyingRustTuple<'a> = (
2544            alloy::sol_types::private::primitives::aliases::U256,
2545            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2546            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2547            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2548        );
2549        #[cfg(test)]
2550        #[allow(dead_code, unreachable_patterns)]
2551        fn _type_assertion(
2552            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2553        ) {
2554            match _t {
2555                alloy_sol_types::private::AssertTypeEq::<
2556                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2557                >(_) => {}
2558            }
2559        }
2560        #[automatically_derived]
2561        #[doc(hidden)]
2562        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2563            fn from(value: StakeTableState) -> Self {
2564                (
2565                    value.threshold,
2566                    value.blsKeyComm,
2567                    value.schnorrKeyComm,
2568                    value.amountComm,
2569                )
2570            }
2571        }
2572        #[automatically_derived]
2573        #[doc(hidden)]
2574        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2575            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2576                Self {
2577                    threshold: tuple.0,
2578                    blsKeyComm: tuple.1,
2579                    schnorrKeyComm: tuple.2,
2580                    amountComm: tuple.3,
2581                }
2582            }
2583        }
2584        #[automatically_derived]
2585        impl alloy_sol_types::SolValue for StakeTableState {
2586            type SolType = Self;
2587        }
2588        #[automatically_derived]
2589        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2590            #[inline]
2591            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2592                (
2593                    <alloy::sol_types::sol_data::Uint<
2594                        256,
2595                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2596                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2597                        &self.blsKeyComm,
2598                    ),
2599                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2600                        &self.schnorrKeyComm,
2601                    ),
2602                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2603                        &self.amountComm,
2604                    ),
2605                )
2606            }
2607            #[inline]
2608            fn stv_abi_encoded_size(&self) -> usize {
2609                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2610                    return size;
2611                }
2612                let tuple = <UnderlyingRustTuple<
2613                    '_,
2614                > as ::core::convert::From<Self>>::from(self.clone());
2615                <UnderlyingSolTuple<
2616                    '_,
2617                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2618            }
2619            #[inline]
2620            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2621                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2622            }
2623            #[inline]
2624            fn stv_abi_encode_packed_to(
2625                &self,
2626                out: &mut alloy_sol_types::private::Vec<u8>,
2627            ) {
2628                let tuple = <UnderlyingRustTuple<
2629                    '_,
2630                > as ::core::convert::From<Self>>::from(self.clone());
2631                <UnderlyingSolTuple<
2632                    '_,
2633                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2634            }
2635            #[inline]
2636            fn stv_abi_packed_encoded_size(&self) -> usize {
2637                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2638                    return size;
2639                }
2640                let tuple = <UnderlyingRustTuple<
2641                    '_,
2642                > as ::core::convert::From<Self>>::from(self.clone());
2643                <UnderlyingSolTuple<
2644                    '_,
2645                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2646            }
2647        }
2648        #[automatically_derived]
2649        impl alloy_sol_types::SolType for StakeTableState {
2650            type RustType = Self;
2651            type Token<'a> = <UnderlyingSolTuple<
2652                'a,
2653            > as alloy_sol_types::SolType>::Token<'a>;
2654            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2655            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2656                '_,
2657            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2658            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2659                '_,
2660            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2661            #[inline]
2662            fn valid_token(token: &Self::Token<'_>) -> bool {
2663                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2664            }
2665            #[inline]
2666            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2667                let tuple = <UnderlyingSolTuple<
2668                    '_,
2669                > as alloy_sol_types::SolType>::detokenize(token);
2670                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2671            }
2672        }
2673        #[automatically_derived]
2674        impl alloy_sol_types::SolStruct for StakeTableState {
2675            const NAME: &'static str = "StakeTableState";
2676            #[inline]
2677            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2678                alloy_sol_types::private::Cow::Borrowed(
2679                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2680                )
2681            }
2682            #[inline]
2683            fn eip712_components() -> alloy_sol_types::private::Vec<
2684                alloy_sol_types::private::Cow<'static, str>,
2685            > {
2686                alloy_sol_types::private::Vec::new()
2687            }
2688            #[inline]
2689            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2690                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2691            }
2692            #[inline]
2693            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2694                [
2695                    <alloy::sol_types::sol_data::Uint<
2696                        256,
2697                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.blsKeyComm,
2701                        )
2702                        .0,
2703                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2704                            &self.schnorrKeyComm,
2705                        )
2706                        .0,
2707                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2708                            &self.amountComm,
2709                        )
2710                        .0,
2711                ]
2712                    .concat()
2713            }
2714        }
2715        #[automatically_derived]
2716        impl alloy_sol_types::EventTopic for StakeTableState {
2717            #[inline]
2718            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2719                0usize
2720                    + <alloy::sol_types::sol_data::Uint<
2721                        256,
2722                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2723                        &rust.threshold,
2724                    )
2725                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2726                        &rust.blsKeyComm,
2727                    )
2728                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2729                        &rust.schnorrKeyComm,
2730                    )
2731                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2732                        &rust.amountComm,
2733                    )
2734            }
2735            #[inline]
2736            fn encode_topic_preimage(
2737                rust: &Self::RustType,
2738                out: &mut alloy_sol_types::private::Vec<u8>,
2739            ) {
2740                out.reserve(
2741                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2742                );
2743                <alloy::sol_types::sol_data::Uint<
2744                    256,
2745                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.threshold,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.blsKeyComm,
2751                    out,
2752                );
2753                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2754                    &rust.schnorrKeyComm,
2755                    out,
2756                );
2757                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2758                    &rust.amountComm,
2759                    out,
2760                );
2761            }
2762            #[inline]
2763            fn encode_topic(
2764                rust: &Self::RustType,
2765            ) -> alloy_sol_types::abi::token::WordToken {
2766                let mut out = alloy_sol_types::private::Vec::new();
2767                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2768                    rust,
2769                    &mut out,
2770                );
2771                alloy_sol_types::abi::token::WordToken(
2772                    alloy_sol_types::private::keccak256(out),
2773                )
2774            }
2775        }
2776    };
2777    use alloy::contract as alloy_contract;
2778    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2779
2780See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2781    #[inline]
2782    pub const fn new<
2783        P: alloy_contract::private::Provider<N>,
2784        N: alloy_contract::private::Network,
2785    >(
2786        address: alloy_sol_types::private::Address,
2787        __provider: P,
2788    ) -> LightClientInstance<P, N> {
2789        LightClientInstance::<P, N>::new(address, __provider)
2790    }
2791    /**A [`LightClient`](self) instance.
2792
2793Contains type-safe methods for interacting with an on-chain instance of the
2794[`LightClient`](self) contract located at a given `address`, using a given
2795provider `P`.
2796
2797If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2798documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2799be used to deploy a new instance of the contract.
2800
2801See the [module-level documentation](self) for all the available methods.*/
2802    #[derive(Clone)]
2803    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2804        address: alloy_sol_types::private::Address,
2805        provider: P,
2806        _network: ::core::marker::PhantomData<N>,
2807    }
2808    #[automatically_derived]
2809    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2810        #[inline]
2811        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2812            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2813        }
2814    }
2815    /// Instantiation and getters/setters.
2816    #[automatically_derived]
2817    impl<
2818        P: alloy_contract::private::Provider<N>,
2819        N: alloy_contract::private::Network,
2820    > LightClientInstance<P, N> {
2821        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2822
2823See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2824        #[inline]
2825        pub const fn new(
2826            address: alloy_sol_types::private::Address,
2827            __provider: P,
2828        ) -> Self {
2829            Self {
2830                address,
2831                provider: __provider,
2832                _network: ::core::marker::PhantomData,
2833            }
2834        }
2835        /// Returns a reference to the address.
2836        #[inline]
2837        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2838            &self.address
2839        }
2840        /// Sets the address.
2841        #[inline]
2842        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2843            self.address = address;
2844        }
2845        /// Sets the address and returns `self`.
2846        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2847            self.set_address(address);
2848            self
2849        }
2850        /// Returns a reference to the provider.
2851        #[inline]
2852        pub const fn provider(&self) -> &P {
2853            &self.provider
2854        }
2855    }
2856    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2857        /// Clones the provider and returns a new instance with the cloned provider.
2858        #[inline]
2859        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2860            LightClientInstance {
2861                address: self.address,
2862                provider: ::core::clone::Clone::clone(&self.provider),
2863                _network: ::core::marker::PhantomData,
2864            }
2865        }
2866    }
2867    /// Function calls.
2868    #[automatically_derived]
2869    impl<
2870        P: alloy_contract::private::Provider<N>,
2871        N: alloy_contract::private::Network,
2872    > LightClientInstance<P, N> {
2873        /// Creates a new call builder using this contract instance's provider and address.
2874        ///
2875        /// Note that the call can be any function call, not just those defined in this
2876        /// contract. Prefer using the other methods for building type-safe contract calls.
2877        pub fn call_builder<C: alloy_sol_types::SolCall>(
2878            &self,
2879            call: &C,
2880        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2881            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2882        }
2883    }
2884    /// Event filters.
2885    #[automatically_derived]
2886    impl<
2887        P: alloy_contract::private::Provider<N>,
2888        N: alloy_contract::private::Network,
2889    > LightClientInstance<P, N> {
2890        /// Creates a new event filter using this contract instance's provider and address.
2891        ///
2892        /// Note that the type can be any event, not just those defined in this contract.
2893        /// Prefer using the other methods for building type-safe event filters.
2894        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2895            &self,
2896        ) -> alloy_contract::Event<&P, E, N> {
2897            alloy_contract::Event::new_sol(&self.provider, &self.address)
2898        }
2899    }
2900}
2901/**
2902
2903Generated by the following Solidity interface...
2904```solidity
2905library BN254 {
2906    type BaseField is uint256;
2907    type ScalarField is uint256;
2908    struct G1Point {
2909        BaseField x;
2910        BaseField y;
2911    }
2912}
2913
2914library IPlonkVerifier {
2915    struct PlonkProof {
2916        BN254.G1Point wire0;
2917        BN254.G1Point wire1;
2918        BN254.G1Point wire2;
2919        BN254.G1Point wire3;
2920        BN254.G1Point wire4;
2921        BN254.G1Point prodPerm;
2922        BN254.G1Point split0;
2923        BN254.G1Point split1;
2924        BN254.G1Point split2;
2925        BN254.G1Point split3;
2926        BN254.G1Point split4;
2927        BN254.G1Point zeta;
2928        BN254.G1Point zetaOmega;
2929        BN254.ScalarField wireEval0;
2930        BN254.ScalarField wireEval1;
2931        BN254.ScalarField wireEval2;
2932        BN254.ScalarField wireEval3;
2933        BN254.ScalarField wireEval4;
2934        BN254.ScalarField sigmaEval0;
2935        BN254.ScalarField sigmaEval1;
2936        BN254.ScalarField sigmaEval2;
2937        BN254.ScalarField sigmaEval3;
2938        BN254.ScalarField prodPermZetaOmegaEval;
2939    }
2940    struct VerifyingKey {
2941        uint256 domainSize;
2942        uint256 numInputs;
2943        BN254.G1Point sigma0;
2944        BN254.G1Point sigma1;
2945        BN254.G1Point sigma2;
2946        BN254.G1Point sigma3;
2947        BN254.G1Point sigma4;
2948        BN254.G1Point q1;
2949        BN254.G1Point q2;
2950        BN254.G1Point q3;
2951        BN254.G1Point q4;
2952        BN254.G1Point qM12;
2953        BN254.G1Point qM34;
2954        BN254.G1Point qO;
2955        BN254.G1Point qC;
2956        BN254.G1Point qH1;
2957        BN254.G1Point qH2;
2958        BN254.G1Point qH3;
2959        BN254.G1Point qH4;
2960        BN254.G1Point qEcc;
2961        bytes32 g2LSB;
2962        bytes32 g2MSB;
2963    }
2964}
2965
2966library LightClient {
2967    struct LightClientState {
2968        uint64 viewNum;
2969        uint64 blockHeight;
2970        BN254.ScalarField blockCommRoot;
2971    }
2972    struct StakeTableState {
2973        uint256 threshold;
2974        BN254.ScalarField blsKeyComm;
2975        BN254.ScalarField schnorrKeyComm;
2976        BN254.ScalarField amountComm;
2977    }
2978}
2979
2980interface LightClientV2 {
2981    error AddressEmptyCode(address target);
2982    error DeprecatedApi();
2983    error ERC1967InvalidImplementation(address implementation);
2984    error ERC1967NonPayable();
2985    error FailedInnerCall();
2986    error InsufficientSnapshotHistory();
2987    error InvalidAddress();
2988    error InvalidArgs();
2989    error InvalidHotShotBlockForCommitmentCheck();
2990    error InvalidInitialization();
2991    error InvalidMaxStateHistory();
2992    error InvalidProof();
2993    error InvalidScalar();
2994    error MissingEpochRootUpdate();
2995    error NoChangeRequired();
2996    error NotInitializing();
2997    error OutdatedState();
2998    error OwnableInvalidOwner(address owner);
2999    error OwnableUnauthorizedAccount(address account);
3000    error ProverNotPermissioned();
3001    error UUPSUnauthorizedCallContext();
3002    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3003    error WrongStakeTableUsed();
3004
3005    event Initialized(uint64 version);
3006    event NewEpoch(uint64 epoch);
3007    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3008    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3009    event PermissionedProverNotRequired();
3010    event PermissionedProverRequired(address permissionedProver);
3011    event Upgrade(address implementation);
3012    event Upgraded(address indexed implementation);
3013
3014    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3015    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3016    function blocksPerEpoch() external view returns (uint64);
3017    function currentBlockNumber() external view returns (uint256);
3018    function currentEpoch() external view returns (uint64);
3019    function disablePermissionedProverMode() external;
3020    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3021    function epochStartBlock() external view returns (uint64);
3022    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3023    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3024    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3025    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3026    function getStateHistoryCount() external view returns (uint256);
3027    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3028    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3029    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3030    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3031    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3032    function isPermissionedProverEnabled() external view returns (bool);
3033    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3034    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3035    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3036    function owner() external view returns (address);
3037    function permissionedProver() external view returns (address);
3038    function proxiableUUID() external view returns (bytes32);
3039    function renounceOwnership() external;
3040    function setPermissionedProver(address prover) external;
3041    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3042    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3043    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3044    function stateHistoryFirstIndex() external view returns (uint64);
3045    function stateHistoryRetentionPeriod() external view returns (uint32);
3046    function transferOwnership(address newOwner) external;
3047    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3048    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3049    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3050}
3051```
3052
3053...which was generated by the following JSON ABI:
3054```json
3055[
3056  {
3057    "type": "function",
3058    "name": "UPGRADE_INTERFACE_VERSION",
3059    "inputs": [],
3060    "outputs": [
3061      {
3062        "name": "",
3063        "type": "string",
3064        "internalType": "string"
3065      }
3066    ],
3067    "stateMutability": "view"
3068  },
3069  {
3070    "type": "function",
3071    "name": "_getVk",
3072    "inputs": [],
3073    "outputs": [
3074      {
3075        "name": "vk",
3076        "type": "tuple",
3077        "internalType": "struct IPlonkVerifier.VerifyingKey",
3078        "components": [
3079          {
3080            "name": "domainSize",
3081            "type": "uint256",
3082            "internalType": "uint256"
3083          },
3084          {
3085            "name": "numInputs",
3086            "type": "uint256",
3087            "internalType": "uint256"
3088          },
3089          {
3090            "name": "sigma0",
3091            "type": "tuple",
3092            "internalType": "struct BN254.G1Point",
3093            "components": [
3094              {
3095                "name": "x",
3096                "type": "uint256",
3097                "internalType": "BN254.BaseField"
3098              },
3099              {
3100                "name": "y",
3101                "type": "uint256",
3102                "internalType": "BN254.BaseField"
3103              }
3104            ]
3105          },
3106          {
3107            "name": "sigma1",
3108            "type": "tuple",
3109            "internalType": "struct BN254.G1Point",
3110            "components": [
3111              {
3112                "name": "x",
3113                "type": "uint256",
3114                "internalType": "BN254.BaseField"
3115              },
3116              {
3117                "name": "y",
3118                "type": "uint256",
3119                "internalType": "BN254.BaseField"
3120              }
3121            ]
3122          },
3123          {
3124            "name": "sigma2",
3125            "type": "tuple",
3126            "internalType": "struct BN254.G1Point",
3127            "components": [
3128              {
3129                "name": "x",
3130                "type": "uint256",
3131                "internalType": "BN254.BaseField"
3132              },
3133              {
3134                "name": "y",
3135                "type": "uint256",
3136                "internalType": "BN254.BaseField"
3137              }
3138            ]
3139          },
3140          {
3141            "name": "sigma3",
3142            "type": "tuple",
3143            "internalType": "struct BN254.G1Point",
3144            "components": [
3145              {
3146                "name": "x",
3147                "type": "uint256",
3148                "internalType": "BN254.BaseField"
3149              },
3150              {
3151                "name": "y",
3152                "type": "uint256",
3153                "internalType": "BN254.BaseField"
3154              }
3155            ]
3156          },
3157          {
3158            "name": "sigma4",
3159            "type": "tuple",
3160            "internalType": "struct BN254.G1Point",
3161            "components": [
3162              {
3163                "name": "x",
3164                "type": "uint256",
3165                "internalType": "BN254.BaseField"
3166              },
3167              {
3168                "name": "y",
3169                "type": "uint256",
3170                "internalType": "BN254.BaseField"
3171              }
3172            ]
3173          },
3174          {
3175            "name": "q1",
3176            "type": "tuple",
3177            "internalType": "struct BN254.G1Point",
3178            "components": [
3179              {
3180                "name": "x",
3181                "type": "uint256",
3182                "internalType": "BN254.BaseField"
3183              },
3184              {
3185                "name": "y",
3186                "type": "uint256",
3187                "internalType": "BN254.BaseField"
3188              }
3189            ]
3190          },
3191          {
3192            "name": "q2",
3193            "type": "tuple",
3194            "internalType": "struct BN254.G1Point",
3195            "components": [
3196              {
3197                "name": "x",
3198                "type": "uint256",
3199                "internalType": "BN254.BaseField"
3200              },
3201              {
3202                "name": "y",
3203                "type": "uint256",
3204                "internalType": "BN254.BaseField"
3205              }
3206            ]
3207          },
3208          {
3209            "name": "q3",
3210            "type": "tuple",
3211            "internalType": "struct BN254.G1Point",
3212            "components": [
3213              {
3214                "name": "x",
3215                "type": "uint256",
3216                "internalType": "BN254.BaseField"
3217              },
3218              {
3219                "name": "y",
3220                "type": "uint256",
3221                "internalType": "BN254.BaseField"
3222              }
3223            ]
3224          },
3225          {
3226            "name": "q4",
3227            "type": "tuple",
3228            "internalType": "struct BN254.G1Point",
3229            "components": [
3230              {
3231                "name": "x",
3232                "type": "uint256",
3233                "internalType": "BN254.BaseField"
3234              },
3235              {
3236                "name": "y",
3237                "type": "uint256",
3238                "internalType": "BN254.BaseField"
3239              }
3240            ]
3241          },
3242          {
3243            "name": "qM12",
3244            "type": "tuple",
3245            "internalType": "struct BN254.G1Point",
3246            "components": [
3247              {
3248                "name": "x",
3249                "type": "uint256",
3250                "internalType": "BN254.BaseField"
3251              },
3252              {
3253                "name": "y",
3254                "type": "uint256",
3255                "internalType": "BN254.BaseField"
3256              }
3257            ]
3258          },
3259          {
3260            "name": "qM34",
3261            "type": "tuple",
3262            "internalType": "struct BN254.G1Point",
3263            "components": [
3264              {
3265                "name": "x",
3266                "type": "uint256",
3267                "internalType": "BN254.BaseField"
3268              },
3269              {
3270                "name": "y",
3271                "type": "uint256",
3272                "internalType": "BN254.BaseField"
3273              }
3274            ]
3275          },
3276          {
3277            "name": "qO",
3278            "type": "tuple",
3279            "internalType": "struct BN254.G1Point",
3280            "components": [
3281              {
3282                "name": "x",
3283                "type": "uint256",
3284                "internalType": "BN254.BaseField"
3285              },
3286              {
3287                "name": "y",
3288                "type": "uint256",
3289                "internalType": "BN254.BaseField"
3290              }
3291            ]
3292          },
3293          {
3294            "name": "qC",
3295            "type": "tuple",
3296            "internalType": "struct BN254.G1Point",
3297            "components": [
3298              {
3299                "name": "x",
3300                "type": "uint256",
3301                "internalType": "BN254.BaseField"
3302              },
3303              {
3304                "name": "y",
3305                "type": "uint256",
3306                "internalType": "BN254.BaseField"
3307              }
3308            ]
3309          },
3310          {
3311            "name": "qH1",
3312            "type": "tuple",
3313            "internalType": "struct BN254.G1Point",
3314            "components": [
3315              {
3316                "name": "x",
3317                "type": "uint256",
3318                "internalType": "BN254.BaseField"
3319              },
3320              {
3321                "name": "y",
3322                "type": "uint256",
3323                "internalType": "BN254.BaseField"
3324              }
3325            ]
3326          },
3327          {
3328            "name": "qH2",
3329            "type": "tuple",
3330            "internalType": "struct BN254.G1Point",
3331            "components": [
3332              {
3333                "name": "x",
3334                "type": "uint256",
3335                "internalType": "BN254.BaseField"
3336              },
3337              {
3338                "name": "y",
3339                "type": "uint256",
3340                "internalType": "BN254.BaseField"
3341              }
3342            ]
3343          },
3344          {
3345            "name": "qH3",
3346            "type": "tuple",
3347            "internalType": "struct BN254.G1Point",
3348            "components": [
3349              {
3350                "name": "x",
3351                "type": "uint256",
3352                "internalType": "BN254.BaseField"
3353              },
3354              {
3355                "name": "y",
3356                "type": "uint256",
3357                "internalType": "BN254.BaseField"
3358              }
3359            ]
3360          },
3361          {
3362            "name": "qH4",
3363            "type": "tuple",
3364            "internalType": "struct BN254.G1Point",
3365            "components": [
3366              {
3367                "name": "x",
3368                "type": "uint256",
3369                "internalType": "BN254.BaseField"
3370              },
3371              {
3372                "name": "y",
3373                "type": "uint256",
3374                "internalType": "BN254.BaseField"
3375              }
3376            ]
3377          },
3378          {
3379            "name": "qEcc",
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": "g2LSB",
3397            "type": "bytes32",
3398            "internalType": "bytes32"
3399          },
3400          {
3401            "name": "g2MSB",
3402            "type": "bytes32",
3403            "internalType": "bytes32"
3404          }
3405        ]
3406      }
3407    ],
3408    "stateMutability": "pure"
3409  },
3410  {
3411    "type": "function",
3412    "name": "blocksPerEpoch",
3413    "inputs": [],
3414    "outputs": [
3415      {
3416        "name": "",
3417        "type": "uint64",
3418        "internalType": "uint64"
3419      }
3420    ],
3421    "stateMutability": "view"
3422  },
3423  {
3424    "type": "function",
3425    "name": "currentBlockNumber",
3426    "inputs": [],
3427    "outputs": [
3428      {
3429        "name": "",
3430        "type": "uint256",
3431        "internalType": "uint256"
3432      }
3433    ],
3434    "stateMutability": "view"
3435  },
3436  {
3437    "type": "function",
3438    "name": "currentEpoch",
3439    "inputs": [],
3440    "outputs": [
3441      {
3442        "name": "",
3443        "type": "uint64",
3444        "internalType": "uint64"
3445      }
3446    ],
3447    "stateMutability": "view"
3448  },
3449  {
3450    "type": "function",
3451    "name": "disablePermissionedProverMode",
3452    "inputs": [],
3453    "outputs": [],
3454    "stateMutability": "nonpayable"
3455  },
3456  {
3457    "type": "function",
3458    "name": "epochFromBlockNumber",
3459    "inputs": [
3460      {
3461        "name": "_blockNum",
3462        "type": "uint64",
3463        "internalType": "uint64"
3464      },
3465      {
3466        "name": "_blocksPerEpoch",
3467        "type": "uint64",
3468        "internalType": "uint64"
3469      }
3470    ],
3471    "outputs": [
3472      {
3473        "name": "",
3474        "type": "uint64",
3475        "internalType": "uint64"
3476      }
3477    ],
3478    "stateMutability": "pure"
3479  },
3480  {
3481    "type": "function",
3482    "name": "epochStartBlock",
3483    "inputs": [],
3484    "outputs": [
3485      {
3486        "name": "",
3487        "type": "uint64",
3488        "internalType": "uint64"
3489      }
3490    ],
3491    "stateMutability": "view"
3492  },
3493  {
3494    "type": "function",
3495    "name": "finalizedState",
3496    "inputs": [],
3497    "outputs": [
3498      {
3499        "name": "viewNum",
3500        "type": "uint64",
3501        "internalType": "uint64"
3502      },
3503      {
3504        "name": "blockHeight",
3505        "type": "uint64",
3506        "internalType": "uint64"
3507      },
3508      {
3509        "name": "blockCommRoot",
3510        "type": "uint256",
3511        "internalType": "BN254.ScalarField"
3512      }
3513    ],
3514    "stateMutability": "view"
3515  },
3516  {
3517    "type": "function",
3518    "name": "genesisStakeTableState",
3519    "inputs": [],
3520    "outputs": [
3521      {
3522        "name": "threshold",
3523        "type": "uint256",
3524        "internalType": "uint256"
3525      },
3526      {
3527        "name": "blsKeyComm",
3528        "type": "uint256",
3529        "internalType": "BN254.ScalarField"
3530      },
3531      {
3532        "name": "schnorrKeyComm",
3533        "type": "uint256",
3534        "internalType": "BN254.ScalarField"
3535      },
3536      {
3537        "name": "amountComm",
3538        "type": "uint256",
3539        "internalType": "BN254.ScalarField"
3540      }
3541    ],
3542    "stateMutability": "view"
3543  },
3544  {
3545    "type": "function",
3546    "name": "genesisState",
3547    "inputs": [],
3548    "outputs": [
3549      {
3550        "name": "viewNum",
3551        "type": "uint64",
3552        "internalType": "uint64"
3553      },
3554      {
3555        "name": "blockHeight",
3556        "type": "uint64",
3557        "internalType": "uint64"
3558      },
3559      {
3560        "name": "blockCommRoot",
3561        "type": "uint256",
3562        "internalType": "BN254.ScalarField"
3563      }
3564    ],
3565    "stateMutability": "view"
3566  },
3567  {
3568    "type": "function",
3569    "name": "getHotShotCommitment",
3570    "inputs": [
3571      {
3572        "name": "hotShotBlockHeight",
3573        "type": "uint256",
3574        "internalType": "uint256"
3575      }
3576    ],
3577    "outputs": [
3578      {
3579        "name": "hotShotBlockCommRoot",
3580        "type": "uint256",
3581        "internalType": "BN254.ScalarField"
3582      },
3583      {
3584        "name": "hotshotBlockHeight",
3585        "type": "uint64",
3586        "internalType": "uint64"
3587      }
3588    ],
3589    "stateMutability": "view"
3590  },
3591  {
3592    "type": "function",
3593    "name": "getStateHistoryCount",
3594    "inputs": [],
3595    "outputs": [
3596      {
3597        "name": "",
3598        "type": "uint256",
3599        "internalType": "uint256"
3600      }
3601    ],
3602    "stateMutability": "view"
3603  },
3604  {
3605    "type": "function",
3606    "name": "getVersion",
3607    "inputs": [],
3608    "outputs": [
3609      {
3610        "name": "majorVersion",
3611        "type": "uint8",
3612        "internalType": "uint8"
3613      },
3614      {
3615        "name": "minorVersion",
3616        "type": "uint8",
3617        "internalType": "uint8"
3618      },
3619      {
3620        "name": "patchVersion",
3621        "type": "uint8",
3622        "internalType": "uint8"
3623      }
3624    ],
3625    "stateMutability": "pure"
3626  },
3627  {
3628    "type": "function",
3629    "name": "initialize",
3630    "inputs": [
3631      {
3632        "name": "_genesis",
3633        "type": "tuple",
3634        "internalType": "struct LightClient.LightClientState",
3635        "components": [
3636          {
3637            "name": "viewNum",
3638            "type": "uint64",
3639            "internalType": "uint64"
3640          },
3641          {
3642            "name": "blockHeight",
3643            "type": "uint64",
3644            "internalType": "uint64"
3645          },
3646          {
3647            "name": "blockCommRoot",
3648            "type": "uint256",
3649            "internalType": "BN254.ScalarField"
3650          }
3651        ]
3652      },
3653      {
3654        "name": "_genesisStakeTableState",
3655        "type": "tuple",
3656        "internalType": "struct LightClient.StakeTableState",
3657        "components": [
3658          {
3659            "name": "threshold",
3660            "type": "uint256",
3661            "internalType": "uint256"
3662          },
3663          {
3664            "name": "blsKeyComm",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          },
3668          {
3669            "name": "schnorrKeyComm",
3670            "type": "uint256",
3671            "internalType": "BN254.ScalarField"
3672          },
3673          {
3674            "name": "amountComm",
3675            "type": "uint256",
3676            "internalType": "BN254.ScalarField"
3677          }
3678        ]
3679      },
3680      {
3681        "name": "_stateHistoryRetentionPeriod",
3682        "type": "uint32",
3683        "internalType": "uint32"
3684      },
3685      {
3686        "name": "owner",
3687        "type": "address",
3688        "internalType": "address"
3689      }
3690    ],
3691    "outputs": [],
3692    "stateMutability": "nonpayable"
3693  },
3694  {
3695    "type": "function",
3696    "name": "initializeV2",
3697    "inputs": [
3698      {
3699        "name": "_blocksPerEpoch",
3700        "type": "uint64",
3701        "internalType": "uint64"
3702      },
3703      {
3704        "name": "_epochStartBlock",
3705        "type": "uint64",
3706        "internalType": "uint64"
3707      }
3708    ],
3709    "outputs": [],
3710    "stateMutability": "nonpayable"
3711  },
3712  {
3713    "type": "function",
3714    "name": "isEpochRoot",
3715    "inputs": [
3716      {
3717        "name": "blockHeight",
3718        "type": "uint64",
3719        "internalType": "uint64"
3720      }
3721    ],
3722    "outputs": [
3723      {
3724        "name": "",
3725        "type": "bool",
3726        "internalType": "bool"
3727      }
3728    ],
3729    "stateMutability": "view"
3730  },
3731  {
3732    "type": "function",
3733    "name": "isGtEpochRoot",
3734    "inputs": [
3735      {
3736        "name": "blockHeight",
3737        "type": "uint64",
3738        "internalType": "uint64"
3739      }
3740    ],
3741    "outputs": [
3742      {
3743        "name": "",
3744        "type": "bool",
3745        "internalType": "bool"
3746      }
3747    ],
3748    "stateMutability": "view"
3749  },
3750  {
3751    "type": "function",
3752    "name": "isPermissionedProverEnabled",
3753    "inputs": [],
3754    "outputs": [
3755      {
3756        "name": "",
3757        "type": "bool",
3758        "internalType": "bool"
3759      }
3760    ],
3761    "stateMutability": "view"
3762  },
3763  {
3764    "type": "function",
3765    "name": "lagOverEscapeHatchThreshold",
3766    "inputs": [
3767      {
3768        "name": "blockNumber",
3769        "type": "uint256",
3770        "internalType": "uint256"
3771      },
3772      {
3773        "name": "blockThreshold",
3774        "type": "uint256",
3775        "internalType": "uint256"
3776      }
3777    ],
3778    "outputs": [
3779      {
3780        "name": "",
3781        "type": "bool",
3782        "internalType": "bool"
3783      }
3784    ],
3785    "stateMutability": "view"
3786  },
3787  {
3788    "type": "function",
3789    "name": "newFinalizedState",
3790    "inputs": [
3791      {
3792        "name": "",
3793        "type": "tuple",
3794        "internalType": "struct LightClient.LightClientState",
3795        "components": [
3796          {
3797            "name": "viewNum",
3798            "type": "uint64",
3799            "internalType": "uint64"
3800          },
3801          {
3802            "name": "blockHeight",
3803            "type": "uint64",
3804            "internalType": "uint64"
3805          },
3806          {
3807            "name": "blockCommRoot",
3808            "type": "uint256",
3809            "internalType": "BN254.ScalarField"
3810          }
3811        ]
3812      },
3813      {
3814        "name": "",
3815        "type": "tuple",
3816        "internalType": "struct IPlonkVerifier.PlonkProof",
3817        "components": [
3818          {
3819            "name": "wire0",
3820            "type": "tuple",
3821            "internalType": "struct BN254.G1Point",
3822            "components": [
3823              {
3824                "name": "x",
3825                "type": "uint256",
3826                "internalType": "BN254.BaseField"
3827              },
3828              {
3829                "name": "y",
3830                "type": "uint256",
3831                "internalType": "BN254.BaseField"
3832              }
3833            ]
3834          },
3835          {
3836            "name": "wire1",
3837            "type": "tuple",
3838            "internalType": "struct BN254.G1Point",
3839            "components": [
3840              {
3841                "name": "x",
3842                "type": "uint256",
3843                "internalType": "BN254.BaseField"
3844              },
3845              {
3846                "name": "y",
3847                "type": "uint256",
3848                "internalType": "BN254.BaseField"
3849              }
3850            ]
3851          },
3852          {
3853            "name": "wire2",
3854            "type": "tuple",
3855            "internalType": "struct BN254.G1Point",
3856            "components": [
3857              {
3858                "name": "x",
3859                "type": "uint256",
3860                "internalType": "BN254.BaseField"
3861              },
3862              {
3863                "name": "y",
3864                "type": "uint256",
3865                "internalType": "BN254.BaseField"
3866              }
3867            ]
3868          },
3869          {
3870            "name": "wire3",
3871            "type": "tuple",
3872            "internalType": "struct BN254.G1Point",
3873            "components": [
3874              {
3875                "name": "x",
3876                "type": "uint256",
3877                "internalType": "BN254.BaseField"
3878              },
3879              {
3880                "name": "y",
3881                "type": "uint256",
3882                "internalType": "BN254.BaseField"
3883              }
3884            ]
3885          },
3886          {
3887            "name": "wire4",
3888            "type": "tuple",
3889            "internalType": "struct BN254.G1Point",
3890            "components": [
3891              {
3892                "name": "x",
3893                "type": "uint256",
3894                "internalType": "BN254.BaseField"
3895              },
3896              {
3897                "name": "y",
3898                "type": "uint256",
3899                "internalType": "BN254.BaseField"
3900              }
3901            ]
3902          },
3903          {
3904            "name": "prodPerm",
3905            "type": "tuple",
3906            "internalType": "struct BN254.G1Point",
3907            "components": [
3908              {
3909                "name": "x",
3910                "type": "uint256",
3911                "internalType": "BN254.BaseField"
3912              },
3913              {
3914                "name": "y",
3915                "type": "uint256",
3916                "internalType": "BN254.BaseField"
3917              }
3918            ]
3919          },
3920          {
3921            "name": "split0",
3922            "type": "tuple",
3923            "internalType": "struct BN254.G1Point",
3924            "components": [
3925              {
3926                "name": "x",
3927                "type": "uint256",
3928                "internalType": "BN254.BaseField"
3929              },
3930              {
3931                "name": "y",
3932                "type": "uint256",
3933                "internalType": "BN254.BaseField"
3934              }
3935            ]
3936          },
3937          {
3938            "name": "split1",
3939            "type": "tuple",
3940            "internalType": "struct BN254.G1Point",
3941            "components": [
3942              {
3943                "name": "x",
3944                "type": "uint256",
3945                "internalType": "BN254.BaseField"
3946              },
3947              {
3948                "name": "y",
3949                "type": "uint256",
3950                "internalType": "BN254.BaseField"
3951              }
3952            ]
3953          },
3954          {
3955            "name": "split2",
3956            "type": "tuple",
3957            "internalType": "struct BN254.G1Point",
3958            "components": [
3959              {
3960                "name": "x",
3961                "type": "uint256",
3962                "internalType": "BN254.BaseField"
3963              },
3964              {
3965                "name": "y",
3966                "type": "uint256",
3967                "internalType": "BN254.BaseField"
3968              }
3969            ]
3970          },
3971          {
3972            "name": "split3",
3973            "type": "tuple",
3974            "internalType": "struct BN254.G1Point",
3975            "components": [
3976              {
3977                "name": "x",
3978                "type": "uint256",
3979                "internalType": "BN254.BaseField"
3980              },
3981              {
3982                "name": "y",
3983                "type": "uint256",
3984                "internalType": "BN254.BaseField"
3985              }
3986            ]
3987          },
3988          {
3989            "name": "split4",
3990            "type": "tuple",
3991            "internalType": "struct BN254.G1Point",
3992            "components": [
3993              {
3994                "name": "x",
3995                "type": "uint256",
3996                "internalType": "BN254.BaseField"
3997              },
3998              {
3999                "name": "y",
4000                "type": "uint256",
4001                "internalType": "BN254.BaseField"
4002              }
4003            ]
4004          },
4005          {
4006            "name": "zeta",
4007            "type": "tuple",
4008            "internalType": "struct BN254.G1Point",
4009            "components": [
4010              {
4011                "name": "x",
4012                "type": "uint256",
4013                "internalType": "BN254.BaseField"
4014              },
4015              {
4016                "name": "y",
4017                "type": "uint256",
4018                "internalType": "BN254.BaseField"
4019              }
4020            ]
4021          },
4022          {
4023            "name": "zetaOmega",
4024            "type": "tuple",
4025            "internalType": "struct BN254.G1Point",
4026            "components": [
4027              {
4028                "name": "x",
4029                "type": "uint256",
4030                "internalType": "BN254.BaseField"
4031              },
4032              {
4033                "name": "y",
4034                "type": "uint256",
4035                "internalType": "BN254.BaseField"
4036              }
4037            ]
4038          },
4039          {
4040            "name": "wireEval0",
4041            "type": "uint256",
4042            "internalType": "BN254.ScalarField"
4043          },
4044          {
4045            "name": "wireEval1",
4046            "type": "uint256",
4047            "internalType": "BN254.ScalarField"
4048          },
4049          {
4050            "name": "wireEval2",
4051            "type": "uint256",
4052            "internalType": "BN254.ScalarField"
4053          },
4054          {
4055            "name": "wireEval3",
4056            "type": "uint256",
4057            "internalType": "BN254.ScalarField"
4058          },
4059          {
4060            "name": "wireEval4",
4061            "type": "uint256",
4062            "internalType": "BN254.ScalarField"
4063          },
4064          {
4065            "name": "sigmaEval0",
4066            "type": "uint256",
4067            "internalType": "BN254.ScalarField"
4068          },
4069          {
4070            "name": "sigmaEval1",
4071            "type": "uint256",
4072            "internalType": "BN254.ScalarField"
4073          },
4074          {
4075            "name": "sigmaEval2",
4076            "type": "uint256",
4077            "internalType": "BN254.ScalarField"
4078          },
4079          {
4080            "name": "sigmaEval3",
4081            "type": "uint256",
4082            "internalType": "BN254.ScalarField"
4083          },
4084          {
4085            "name": "prodPermZetaOmegaEval",
4086            "type": "uint256",
4087            "internalType": "BN254.ScalarField"
4088          }
4089        ]
4090      }
4091    ],
4092    "outputs": [],
4093    "stateMutability": "pure"
4094  },
4095  {
4096    "type": "function",
4097    "name": "newFinalizedState",
4098    "inputs": [
4099      {
4100        "name": "newState",
4101        "type": "tuple",
4102        "internalType": "struct LightClient.LightClientState",
4103        "components": [
4104          {
4105            "name": "viewNum",
4106            "type": "uint64",
4107            "internalType": "uint64"
4108          },
4109          {
4110            "name": "blockHeight",
4111            "type": "uint64",
4112            "internalType": "uint64"
4113          },
4114          {
4115            "name": "blockCommRoot",
4116            "type": "uint256",
4117            "internalType": "BN254.ScalarField"
4118          }
4119        ]
4120      },
4121      {
4122        "name": "nextStakeTable",
4123        "type": "tuple",
4124        "internalType": "struct LightClient.StakeTableState",
4125        "components": [
4126          {
4127            "name": "threshold",
4128            "type": "uint256",
4129            "internalType": "uint256"
4130          },
4131          {
4132            "name": "blsKeyComm",
4133            "type": "uint256",
4134            "internalType": "BN254.ScalarField"
4135          },
4136          {
4137            "name": "schnorrKeyComm",
4138            "type": "uint256",
4139            "internalType": "BN254.ScalarField"
4140          },
4141          {
4142            "name": "amountComm",
4143            "type": "uint256",
4144            "internalType": "BN254.ScalarField"
4145          }
4146        ]
4147      },
4148      {
4149        "name": "proof",
4150        "type": "tuple",
4151        "internalType": "struct IPlonkVerifier.PlonkProof",
4152        "components": [
4153          {
4154            "name": "wire0",
4155            "type": "tuple",
4156            "internalType": "struct BN254.G1Point",
4157            "components": [
4158              {
4159                "name": "x",
4160                "type": "uint256",
4161                "internalType": "BN254.BaseField"
4162              },
4163              {
4164                "name": "y",
4165                "type": "uint256",
4166                "internalType": "BN254.BaseField"
4167              }
4168            ]
4169          },
4170          {
4171            "name": "wire1",
4172            "type": "tuple",
4173            "internalType": "struct BN254.G1Point",
4174            "components": [
4175              {
4176                "name": "x",
4177                "type": "uint256",
4178                "internalType": "BN254.BaseField"
4179              },
4180              {
4181                "name": "y",
4182                "type": "uint256",
4183                "internalType": "BN254.BaseField"
4184              }
4185            ]
4186          },
4187          {
4188            "name": "wire2",
4189            "type": "tuple",
4190            "internalType": "struct BN254.G1Point",
4191            "components": [
4192              {
4193                "name": "x",
4194                "type": "uint256",
4195                "internalType": "BN254.BaseField"
4196              },
4197              {
4198                "name": "y",
4199                "type": "uint256",
4200                "internalType": "BN254.BaseField"
4201              }
4202            ]
4203          },
4204          {
4205            "name": "wire3",
4206            "type": "tuple",
4207            "internalType": "struct BN254.G1Point",
4208            "components": [
4209              {
4210                "name": "x",
4211                "type": "uint256",
4212                "internalType": "BN254.BaseField"
4213              },
4214              {
4215                "name": "y",
4216                "type": "uint256",
4217                "internalType": "BN254.BaseField"
4218              }
4219            ]
4220          },
4221          {
4222            "name": "wire4",
4223            "type": "tuple",
4224            "internalType": "struct BN254.G1Point",
4225            "components": [
4226              {
4227                "name": "x",
4228                "type": "uint256",
4229                "internalType": "BN254.BaseField"
4230              },
4231              {
4232                "name": "y",
4233                "type": "uint256",
4234                "internalType": "BN254.BaseField"
4235              }
4236            ]
4237          },
4238          {
4239            "name": "prodPerm",
4240            "type": "tuple",
4241            "internalType": "struct BN254.G1Point",
4242            "components": [
4243              {
4244                "name": "x",
4245                "type": "uint256",
4246                "internalType": "BN254.BaseField"
4247              },
4248              {
4249                "name": "y",
4250                "type": "uint256",
4251                "internalType": "BN254.BaseField"
4252              }
4253            ]
4254          },
4255          {
4256            "name": "split0",
4257            "type": "tuple",
4258            "internalType": "struct BN254.G1Point",
4259            "components": [
4260              {
4261                "name": "x",
4262                "type": "uint256",
4263                "internalType": "BN254.BaseField"
4264              },
4265              {
4266                "name": "y",
4267                "type": "uint256",
4268                "internalType": "BN254.BaseField"
4269              }
4270            ]
4271          },
4272          {
4273            "name": "split1",
4274            "type": "tuple",
4275            "internalType": "struct BN254.G1Point",
4276            "components": [
4277              {
4278                "name": "x",
4279                "type": "uint256",
4280                "internalType": "BN254.BaseField"
4281              },
4282              {
4283                "name": "y",
4284                "type": "uint256",
4285                "internalType": "BN254.BaseField"
4286              }
4287            ]
4288          },
4289          {
4290            "name": "split2",
4291            "type": "tuple",
4292            "internalType": "struct BN254.G1Point",
4293            "components": [
4294              {
4295                "name": "x",
4296                "type": "uint256",
4297                "internalType": "BN254.BaseField"
4298              },
4299              {
4300                "name": "y",
4301                "type": "uint256",
4302                "internalType": "BN254.BaseField"
4303              }
4304            ]
4305          },
4306          {
4307            "name": "split3",
4308            "type": "tuple",
4309            "internalType": "struct BN254.G1Point",
4310            "components": [
4311              {
4312                "name": "x",
4313                "type": "uint256",
4314                "internalType": "BN254.BaseField"
4315              },
4316              {
4317                "name": "y",
4318                "type": "uint256",
4319                "internalType": "BN254.BaseField"
4320              }
4321            ]
4322          },
4323          {
4324            "name": "split4",
4325            "type": "tuple",
4326            "internalType": "struct BN254.G1Point",
4327            "components": [
4328              {
4329                "name": "x",
4330                "type": "uint256",
4331                "internalType": "BN254.BaseField"
4332              },
4333              {
4334                "name": "y",
4335                "type": "uint256",
4336                "internalType": "BN254.BaseField"
4337              }
4338            ]
4339          },
4340          {
4341            "name": "zeta",
4342            "type": "tuple",
4343            "internalType": "struct BN254.G1Point",
4344            "components": [
4345              {
4346                "name": "x",
4347                "type": "uint256",
4348                "internalType": "BN254.BaseField"
4349              },
4350              {
4351                "name": "y",
4352                "type": "uint256",
4353                "internalType": "BN254.BaseField"
4354              }
4355            ]
4356          },
4357          {
4358            "name": "zetaOmega",
4359            "type": "tuple",
4360            "internalType": "struct BN254.G1Point",
4361            "components": [
4362              {
4363                "name": "x",
4364                "type": "uint256",
4365                "internalType": "BN254.BaseField"
4366              },
4367              {
4368                "name": "y",
4369                "type": "uint256",
4370                "internalType": "BN254.BaseField"
4371              }
4372            ]
4373          },
4374          {
4375            "name": "wireEval0",
4376            "type": "uint256",
4377            "internalType": "BN254.ScalarField"
4378          },
4379          {
4380            "name": "wireEval1",
4381            "type": "uint256",
4382            "internalType": "BN254.ScalarField"
4383          },
4384          {
4385            "name": "wireEval2",
4386            "type": "uint256",
4387            "internalType": "BN254.ScalarField"
4388          },
4389          {
4390            "name": "wireEval3",
4391            "type": "uint256",
4392            "internalType": "BN254.ScalarField"
4393          },
4394          {
4395            "name": "wireEval4",
4396            "type": "uint256",
4397            "internalType": "BN254.ScalarField"
4398          },
4399          {
4400            "name": "sigmaEval0",
4401            "type": "uint256",
4402            "internalType": "BN254.ScalarField"
4403          },
4404          {
4405            "name": "sigmaEval1",
4406            "type": "uint256",
4407            "internalType": "BN254.ScalarField"
4408          },
4409          {
4410            "name": "sigmaEval2",
4411            "type": "uint256",
4412            "internalType": "BN254.ScalarField"
4413          },
4414          {
4415            "name": "sigmaEval3",
4416            "type": "uint256",
4417            "internalType": "BN254.ScalarField"
4418          },
4419          {
4420            "name": "prodPermZetaOmegaEval",
4421            "type": "uint256",
4422            "internalType": "BN254.ScalarField"
4423          }
4424        ]
4425      }
4426    ],
4427    "outputs": [],
4428    "stateMutability": "nonpayable"
4429  },
4430  {
4431    "type": "function",
4432    "name": "owner",
4433    "inputs": [],
4434    "outputs": [
4435      {
4436        "name": "",
4437        "type": "address",
4438        "internalType": "address"
4439      }
4440    ],
4441    "stateMutability": "view"
4442  },
4443  {
4444    "type": "function",
4445    "name": "permissionedProver",
4446    "inputs": [],
4447    "outputs": [
4448      {
4449        "name": "",
4450        "type": "address",
4451        "internalType": "address"
4452      }
4453    ],
4454    "stateMutability": "view"
4455  },
4456  {
4457    "type": "function",
4458    "name": "proxiableUUID",
4459    "inputs": [],
4460    "outputs": [
4461      {
4462        "name": "",
4463        "type": "bytes32",
4464        "internalType": "bytes32"
4465      }
4466    ],
4467    "stateMutability": "view"
4468  },
4469  {
4470    "type": "function",
4471    "name": "renounceOwnership",
4472    "inputs": [],
4473    "outputs": [],
4474    "stateMutability": "nonpayable"
4475  },
4476  {
4477    "type": "function",
4478    "name": "setPermissionedProver",
4479    "inputs": [
4480      {
4481        "name": "prover",
4482        "type": "address",
4483        "internalType": "address"
4484      }
4485    ],
4486    "outputs": [],
4487    "stateMutability": "nonpayable"
4488  },
4489  {
4490    "type": "function",
4491    "name": "setStateHistoryRetentionPeriod",
4492    "inputs": [
4493      {
4494        "name": "historySeconds",
4495        "type": "uint32",
4496        "internalType": "uint32"
4497      }
4498    ],
4499    "outputs": [],
4500    "stateMutability": "nonpayable"
4501  },
4502  {
4503    "type": "function",
4504    "name": "setstateHistoryRetentionPeriod",
4505    "inputs": [
4506      {
4507        "name": "historySeconds",
4508        "type": "uint32",
4509        "internalType": "uint32"
4510      }
4511    ],
4512    "outputs": [],
4513    "stateMutability": "nonpayable"
4514  },
4515  {
4516    "type": "function",
4517    "name": "stateHistoryCommitments",
4518    "inputs": [
4519      {
4520        "name": "",
4521        "type": "uint256",
4522        "internalType": "uint256"
4523      }
4524    ],
4525    "outputs": [
4526      {
4527        "name": "l1BlockHeight",
4528        "type": "uint64",
4529        "internalType": "uint64"
4530      },
4531      {
4532        "name": "l1BlockTimestamp",
4533        "type": "uint64",
4534        "internalType": "uint64"
4535      },
4536      {
4537        "name": "hotShotBlockHeight",
4538        "type": "uint64",
4539        "internalType": "uint64"
4540      },
4541      {
4542        "name": "hotShotBlockCommRoot",
4543        "type": "uint256",
4544        "internalType": "BN254.ScalarField"
4545      }
4546    ],
4547    "stateMutability": "view"
4548  },
4549  {
4550    "type": "function",
4551    "name": "stateHistoryFirstIndex",
4552    "inputs": [],
4553    "outputs": [
4554      {
4555        "name": "",
4556        "type": "uint64",
4557        "internalType": "uint64"
4558      }
4559    ],
4560    "stateMutability": "view"
4561  },
4562  {
4563    "type": "function",
4564    "name": "stateHistoryRetentionPeriod",
4565    "inputs": [],
4566    "outputs": [
4567      {
4568        "name": "",
4569        "type": "uint32",
4570        "internalType": "uint32"
4571      }
4572    ],
4573    "stateMutability": "view"
4574  },
4575  {
4576    "type": "function",
4577    "name": "transferOwnership",
4578    "inputs": [
4579      {
4580        "name": "newOwner",
4581        "type": "address",
4582        "internalType": "address"
4583      }
4584    ],
4585    "outputs": [],
4586    "stateMutability": "nonpayable"
4587  },
4588  {
4589    "type": "function",
4590    "name": "updateEpochStartBlock",
4591    "inputs": [
4592      {
4593        "name": "newEpochStartBlock",
4594        "type": "uint64",
4595        "internalType": "uint64"
4596      }
4597    ],
4598    "outputs": [],
4599    "stateMutability": "nonpayable"
4600  },
4601  {
4602    "type": "function",
4603    "name": "upgradeToAndCall",
4604    "inputs": [
4605      {
4606        "name": "newImplementation",
4607        "type": "address",
4608        "internalType": "address"
4609      },
4610      {
4611        "name": "data",
4612        "type": "bytes",
4613        "internalType": "bytes"
4614      }
4615    ],
4616    "outputs": [],
4617    "stateMutability": "payable"
4618  },
4619  {
4620    "type": "function",
4621    "name": "votingStakeTableState",
4622    "inputs": [],
4623    "outputs": [
4624      {
4625        "name": "threshold",
4626        "type": "uint256",
4627        "internalType": "uint256"
4628      },
4629      {
4630        "name": "blsKeyComm",
4631        "type": "uint256",
4632        "internalType": "BN254.ScalarField"
4633      },
4634      {
4635        "name": "schnorrKeyComm",
4636        "type": "uint256",
4637        "internalType": "BN254.ScalarField"
4638      },
4639      {
4640        "name": "amountComm",
4641        "type": "uint256",
4642        "internalType": "BN254.ScalarField"
4643      }
4644    ],
4645    "stateMutability": "view"
4646  },
4647  {
4648    "type": "event",
4649    "name": "Initialized",
4650    "inputs": [
4651      {
4652        "name": "version",
4653        "type": "uint64",
4654        "indexed": false,
4655        "internalType": "uint64"
4656      }
4657    ],
4658    "anonymous": false
4659  },
4660  {
4661    "type": "event",
4662    "name": "NewEpoch",
4663    "inputs": [
4664      {
4665        "name": "epoch",
4666        "type": "uint64",
4667        "indexed": false,
4668        "internalType": "uint64"
4669      }
4670    ],
4671    "anonymous": false
4672  },
4673  {
4674    "type": "event",
4675    "name": "NewState",
4676    "inputs": [
4677      {
4678        "name": "viewNum",
4679        "type": "uint64",
4680        "indexed": true,
4681        "internalType": "uint64"
4682      },
4683      {
4684        "name": "blockHeight",
4685        "type": "uint64",
4686        "indexed": true,
4687        "internalType": "uint64"
4688      },
4689      {
4690        "name": "blockCommRoot",
4691        "type": "uint256",
4692        "indexed": false,
4693        "internalType": "BN254.ScalarField"
4694      }
4695    ],
4696    "anonymous": false
4697  },
4698  {
4699    "type": "event",
4700    "name": "OwnershipTransferred",
4701    "inputs": [
4702      {
4703        "name": "previousOwner",
4704        "type": "address",
4705        "indexed": true,
4706        "internalType": "address"
4707      },
4708      {
4709        "name": "newOwner",
4710        "type": "address",
4711        "indexed": true,
4712        "internalType": "address"
4713      }
4714    ],
4715    "anonymous": false
4716  },
4717  {
4718    "type": "event",
4719    "name": "PermissionedProverNotRequired",
4720    "inputs": [],
4721    "anonymous": false
4722  },
4723  {
4724    "type": "event",
4725    "name": "PermissionedProverRequired",
4726    "inputs": [
4727      {
4728        "name": "permissionedProver",
4729        "type": "address",
4730        "indexed": false,
4731        "internalType": "address"
4732      }
4733    ],
4734    "anonymous": false
4735  },
4736  {
4737    "type": "event",
4738    "name": "Upgrade",
4739    "inputs": [
4740      {
4741        "name": "implementation",
4742        "type": "address",
4743        "indexed": false,
4744        "internalType": "address"
4745      }
4746    ],
4747    "anonymous": false
4748  },
4749  {
4750    "type": "event",
4751    "name": "Upgraded",
4752    "inputs": [
4753      {
4754        "name": "implementation",
4755        "type": "address",
4756        "indexed": true,
4757        "internalType": "address"
4758      }
4759    ],
4760    "anonymous": false
4761  },
4762  {
4763    "type": "error",
4764    "name": "AddressEmptyCode",
4765    "inputs": [
4766      {
4767        "name": "target",
4768        "type": "address",
4769        "internalType": "address"
4770      }
4771    ]
4772  },
4773  {
4774    "type": "error",
4775    "name": "DeprecatedApi",
4776    "inputs": []
4777  },
4778  {
4779    "type": "error",
4780    "name": "ERC1967InvalidImplementation",
4781    "inputs": [
4782      {
4783        "name": "implementation",
4784        "type": "address",
4785        "internalType": "address"
4786      }
4787    ]
4788  },
4789  {
4790    "type": "error",
4791    "name": "ERC1967NonPayable",
4792    "inputs": []
4793  },
4794  {
4795    "type": "error",
4796    "name": "FailedInnerCall",
4797    "inputs": []
4798  },
4799  {
4800    "type": "error",
4801    "name": "InsufficientSnapshotHistory",
4802    "inputs": []
4803  },
4804  {
4805    "type": "error",
4806    "name": "InvalidAddress",
4807    "inputs": []
4808  },
4809  {
4810    "type": "error",
4811    "name": "InvalidArgs",
4812    "inputs": []
4813  },
4814  {
4815    "type": "error",
4816    "name": "InvalidHotShotBlockForCommitmentCheck",
4817    "inputs": []
4818  },
4819  {
4820    "type": "error",
4821    "name": "InvalidInitialization",
4822    "inputs": []
4823  },
4824  {
4825    "type": "error",
4826    "name": "InvalidMaxStateHistory",
4827    "inputs": []
4828  },
4829  {
4830    "type": "error",
4831    "name": "InvalidProof",
4832    "inputs": []
4833  },
4834  {
4835    "type": "error",
4836    "name": "InvalidScalar",
4837    "inputs": []
4838  },
4839  {
4840    "type": "error",
4841    "name": "MissingEpochRootUpdate",
4842    "inputs": []
4843  },
4844  {
4845    "type": "error",
4846    "name": "NoChangeRequired",
4847    "inputs": []
4848  },
4849  {
4850    "type": "error",
4851    "name": "NotInitializing",
4852    "inputs": []
4853  },
4854  {
4855    "type": "error",
4856    "name": "OutdatedState",
4857    "inputs": []
4858  },
4859  {
4860    "type": "error",
4861    "name": "OwnableInvalidOwner",
4862    "inputs": [
4863      {
4864        "name": "owner",
4865        "type": "address",
4866        "internalType": "address"
4867      }
4868    ]
4869  },
4870  {
4871    "type": "error",
4872    "name": "OwnableUnauthorizedAccount",
4873    "inputs": [
4874      {
4875        "name": "account",
4876        "type": "address",
4877        "internalType": "address"
4878      }
4879    ]
4880  },
4881  {
4882    "type": "error",
4883    "name": "ProverNotPermissioned",
4884    "inputs": []
4885  },
4886  {
4887    "type": "error",
4888    "name": "UUPSUnauthorizedCallContext",
4889    "inputs": []
4890  },
4891  {
4892    "type": "error",
4893    "name": "UUPSUnsupportedProxiableUUID",
4894    "inputs": [
4895      {
4896        "name": "slot",
4897        "type": "bytes32",
4898        "internalType": "bytes32"
4899      }
4900    ]
4901  },
4902  {
4903    "type": "error",
4904    "name": "WrongStakeTableUsed",
4905    "inputs": []
4906  }
4907]
4908```*/
4909#[allow(
4910    non_camel_case_types,
4911    non_snake_case,
4912    clippy::pub_underscore_fields,
4913    clippy::style,
4914    clippy::empty_structs_with_brackets
4915)]
4916pub mod LightClientV2 {
4917    use super::*;
4918    use alloy::sol_types as alloy_sol_types;
4919    /// The creation / init bytecode of the contract.
4920    ///
4921    /// ```text
4922    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134406100f95f395f8181611b2701528181611b500152611ccd01526134405ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461271d565b610799565b005b348015610237575f5ffd5b5061024b610246366004612736565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b604051610280919061274d565b348015610322575f5ffd5b5061022a610331366004612964565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c26565b610921565b348015610360575f5ffd5b5061037461036f366004612964565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612964565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c6d565b610a31565b61022a6104a8366004612c86565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612d89565b610afe565b348015610513575f5ffd5b506103aa610e31565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a610555366004612736565b610e56565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612dcd565b610f81565b3480156105dd575f5ffd5b5061022a6105ec366004612c6d565b610ff0565b3480156105fc575f5ffd5b5061022a61060b366004612df5565b611079565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e4a565b3480156106ad575f5ffd5b5061022a6106bc366004612dcd565b61119b565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e7f565b6112ff565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a61078036600461271d565b611457565b348015610790575f5ffd5b50600954610426565b6107a1611496565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d612483565b6108a56114f1565b905090565b6108b2611496565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f81565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612eb3565b6109879190612ee6565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612ee6565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f13565b600a546001600160401b0391821691610a20911684612ee6565b6001600160401b0316115b92915050565b610a39611496565b610a4281610ff0565b50565b610a4d611b1c565b610a5682611bc0565b610a608282611c01565b5050565b5f610a6d611cc2565b505f5160206134145f395f51905f5290565b610a87611496565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af5611496565b610aeb5f611d0b565b6008546001600160a01b031615158015610b2357506008546001600160a01b03163314155b15610b41576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b7a575060065460208401516001600160401b03600160401b9092048216911611155b15610b985760405163051c46ef60e01b815260040160405180910390fd5b610ba58360400151611d7b565b610bb28260200151611d7b565b610bbf8260400151611d7b565b610bcc8260600151611d7b565b5f610bd5610e31565b6020850151600a549192505f91610bf591906001600160401b0316610f81565b600a549091506001600160401b03600160801b909104811690821610610c4057610c22856020015161099c565b15610c405760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610cf3576002610c6a8383612f13565b6001600160401b031610610c915760405163080ae8d960e01b815260040160405180910390fd5b610c9c826001612eb3565b6001600160401b0316816001600160401b0316148015610cd55750600654610cd390600160401b90046001600160401b031661093a565b155b15610cf35760405163080ae8d960e01b815260040160405180910390fd5b610cfe858585611dbc565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d5d5750610d5d856020015161093a565b15610dc7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dab826001612eb3565b6040516001600160401b03909116815260200160405180910390a15b610dd2434287611f33565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e2291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f81565b600980545f91829190610e6a600183612f32565b81548110610e7a57610e7a612f45565b5f918252602090912060029091020154600160801b90046001600160401b03168410610eb957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f7a578460098281548110610ee957610ee9612f45565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f725760098181548110610f2257610f22612f45565b905f5260205f2090600202016001015460098281548110610f4557610f45612f45565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ecd565b5050915091565b5f816001600160401b03165f03610f9957505f610a2b565b826001600160401b03165f03610fb157506001610a2b565b610fbb8284612ee6565b6001600160401b03165f03610fdb57610fd48284612f59565b9050610a2b565b610fe58284612f59565b610fd4906001612eb3565b610ff8611496565b610e108163ffffffff16108061101757506301e133808163ffffffff16115b80611035575060085463ffffffff600160a01b909104811690821611155b15611053576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110bd5750825b90505f826001600160401b031660011480156110d85750303b155b9050811580156110e6575080155b156111045760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561112e57845460ff60401b1916600160401b1785555b6111378661211c565b61113f61212d565b61114a898989612135565b831561119057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111e4575080546001600160401b03808416911610155b156112025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b17825560059085161161124a576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112938385610f81565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611310575080155b8061135a5750600854600980549091600160c01b90046001600160401b031690811061133e5761133e612f45565b5f9182526020909120600290910201546001600160401b031684105b156113785760405163b0b4387760e01b815260040160405180910390fd5b5f8080611386600185612f32565b90505b8161142257600854600160c01b90046001600160401b031681106114225786600982815481106113bb576113bb612f45565b5f9182526020909120600290910201546001600160401b0316116114105760019150600981815481106113f0576113f0612f45565b5f9182526020909120600290910201546001600160401b03169250611422565b8061141a81612f86565b915050611389565b816114405760405163b0b4387760e01b815260040160405180910390fd5b8561144b8489612f32565b11979650505050505050565b61145f611496565b6001600160a01b03811661148d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281611d0b565b336114c87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b8152336004820152602401611484565b6114f9612483565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ba257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b965f5160206134145f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611bc8611496565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5b575060408051601f3d908101601f19168201909252611c5891810190612f9b565b60015b611c8357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611484565b5f5160206134145f395f51905f528114611cb357604051632a87526960e21b815260048101829052602401611484565b611cbd8383612261565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611dc5610895565b9050611dcf6126e8565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e3f5750611e3f856020015161093a565b15611e7157602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e95565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611ed090859085908890600401613194565b602060405180830381865af4158015611eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0f91906133b4565b611f2c576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fa8575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f7357611f73612f45565b5f918252602090912060029091020154611f9d90600160401b90046001600160401b031684612f13565b6001600160401b0316115b1561203b57600854600980549091600160c01b90046001600160401b0316908110611fd557611fd5612f45565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612015836133d3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121246122b6565b610a42816122ff565b610aeb6122b6565b82516001600160401b0316151580612159575060208301516001600160401b031615155b8061216657506020820151155b8061217357506040820151155b8061218057506060820151155b8061218a57508151155b8061219c5750610e108163ffffffff16105b806121b057506301e133808163ffffffff16115b156121ce576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61226a82612307565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122ae57611cbd828261236a565b610a606123dc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b61145f6122b6565b806001600160a01b03163b5f0361233c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611484565b5f5160206134145f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161238691906133fd565b5f60405180830381855af49150503d805f81146123be576040519150601f19603f3d011682016040523d82523d5f602084013e6123c3565b606091505b50915091506123d38583836123fb565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124105761240b8261245a565b612453565b815115801561242757506001600160a01b0384163b155b1561245057604051639996b31560e01b81526001600160a01b0385166004820152602401611484565b50805b9392505050565b80511561246a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124b660405180604001604052805f81526020015f81525090565b81526020016124d660405180604001604052805f81526020015f81525090565b81526020016124f660405180604001604052805f81526020015f81525090565b815260200161251660405180604001604052805f81526020015f81525090565b815260200161253660405180604001604052805f81526020015f81525090565b815260200161255660405180604001604052805f81526020015f81525090565b815260200161257660405180604001604052805f81526020015f81525090565b815260200161259660405180604001604052805f81526020015f81525090565b81526020016125b660405180604001604052805f81526020015f81525090565b81526020016125d660405180604001604052805f81526020015f81525090565b81526020016125f660405180604001604052805f81526020015f81525090565b815260200161261660405180604001604052805f81526020015f81525090565b815260200161263660405180604001604052805f81526020015f81525090565b815260200161265660405180604001604052805f81526020015f81525090565b815260200161267660405180604001604052805f81526020015f81525090565b815260200161269660405180604001604052805f81526020015f81525090565b81526020016126b660405180604001604052805f81526020015f81525090565b81526020016126d660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f6020828403121561272d575f5ffd5b61245382612707565b5f60208284031215612746575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161277f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f60208284031215612974575f5ffd5b6124538261294e565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129b4576129b461297d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129e2576129e261297d565b604052919050565b5f606082840312156129fa575f5ffd5b604051606081016001600160401b0381118282101715612a1c57612a1c61297d565b604052905080612a2b8361294e565b8152612a396020840161294e565b6020820152604092830135920191909152919050565b5f60408284031215612a5f575f5ffd5b604080519081016001600160401b0381118282101715612a8157612a8161297d565b604052823581526020928301359281019290925250919050565b5f6104808284031215612aac575f5ffd5b612ab4612991565b9050612ac08383612a4f565b8152612acf8360408401612a4f565b6020820152612ae18360808401612a4f565b6040820152612af38360c08401612a4f565b6060820152612b06836101008401612a4f565b6080820152612b19836101408401612a4f565b60a0820152612b2c836101808401612a4f565b60c0820152612b3f836101c08401612a4f565b60e0820152612b52836102008401612a4f565b610100820152612b66836102408401612a4f565b610120820152612b7a836102808401612a4f565b610140820152612b8e836102c08401612a4f565b610160820152612ba2836103008401612a4f565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c38575f5ffd5b612c4284846129ea565b9150612c518460608501612a9b565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c7d575f5ffd5b61245382612c5a565b5f5f60408385031215612c97575f5ffd5b612ca083612707565b915060208301356001600160401b03811115612cba575f5ffd5b8301601f81018513612cca575f5ffd5b80356001600160401b03811115612ce357612ce361297d565b612cf6601f8201601f19166020016129ba565b818152866020838501011115612d0a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d39575f5ffd5b604051608081016001600160401b0381118282101715612d5b57612d5b61297d565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612d9c575f5ffd5b612da685856129ea565b9250612db58560608601612d29565b9150612dc48560e08601612a9b565b90509250925092565b5f5f60408385031215612dde575f5ffd5b612de78361294e565b9150612c516020840161294e565b5f5f5f5f6101208587031215612e09575f5ffd5b612e1386866129ea565b9350612e228660608701612d29565b9250612e3060e08601612c5a565b9150612e3f6101008601612707565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612e90575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612e9f565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612efe57612efe612ed2565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612e9f565b81810381811115610a2b57610a2b612e9f565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f7157612f71612ed2565b806001600160401b0384160491505092915050565b5f81612f9457612f94612e9f565b505f190190565b5f60208284031215612fab575f5ffd5b5051919050565b805f5b600b811015612fd4578151845260209384019390910190600101612fb5565b50505050565b612fef82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131c6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261339e610500830185612fb2565b6133ac610660830184612fda565b949350505050565b5f602082840312156133c4575f5ffd5b81518015158114612453575f5ffd5b5f6001600160401b0382166001600160401b0381036133f4576133f4612e9f565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4923    /// ```
4924    #[rustfmt::skip]
4925    #[allow(clippy::all)]
4926    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4927        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[`\x80Qa4@a\0\xF9_9_\x81\x81a\x1B'\x01R\x81\x81a\x1BP\x01Ra\x1C\xCD\x01Ra4@_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\x1DV[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'6V[a\x08LV[`@Qa\x02\x80\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\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'MV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)dV[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,&V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)dV[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)dV[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,mV[a\n1V[a\x02*a\x04\xA86`\x04a,\x86V[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\x89V[a\n\xFEV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0E1V[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'6V[a\x0EVV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\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\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xCDV[a\x0F\x81V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,mV[a\x0F\xF0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a-\xF5V[a\x10yV[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\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\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.JV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xCDV[a\x11\x9BV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x7FV[a\x12\xFFV[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'\x1DV[a\x14WV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@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\x07\xF7W`@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\x08[W_\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\x08\x9Da$\x83V[a\x08\xA5a\x14\xF1V[\x90P\x90V[a\x08\xB2a\x14\x96V[`\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\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x81V[`\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\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xB3V[a\t\x87\x91\x90a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\x13V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\x96V[a\nB\x81a\x0F\xF0V[PV[a\nMa\x1B\x1CV[a\nV\x82a\x1B\xC0V[a\n`\x82\x82a\x1C\x01V[PPV[_a\nma\x1C\xC2V[P_Q` a4\x14_9_Q\x90_R\x90V[a\n\x87a\x14\x96V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\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\n\xF5a\x14\x96V[a\n\xEB_a\x1D\x0BV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B#WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BAW`@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\x0BzWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\x98W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xA5\x83`@\x01Qa\x1D{V[a\x0B\xB2\x82` \x01Qa\x1D{V[a\x0B\xBF\x82`@\x01Qa\x1D{V[a\x0B\xCC\x82``\x01Qa\x1D{V[_a\x0B\xD5a\x0E1V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0B\xF5\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x81V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C@Wa\x0C\"\x85` \x01Qa\t\x9CV[\x15a\x0C@W`@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\x0C\xF3W`\x02a\x0Cj\x83\x83a/\x13V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\x91W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x9C\x82`\x01a.\xB3V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xD5WP`\x06Ta\x0C\xD3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\x0C\xF3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xFE\x85\x85\x85a\x1D\xBCV[\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\r]WPa\r]\x85` \x01Qa\t:V[\x15a\r\xC7W\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\r\xAB\x82`\x01a.\xB3V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xD2CB\x87a\x1F3V[\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\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x81V[`\t\x80T_\x91\x82\x91\x90a\x0Ej`\x01\x83a/2V[\x81T\x81\x10a\x0EzWa\x0Eza/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xB9W`@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\x0FzW\x84`\t\x82\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0FrW`\t\x81\x81T\x81\x10a\x0F\"Wa\x0F\"a/EV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FEWa\x0FEa/EV[\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\x0E\xCDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\x99WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xB1WP`\x01a\n+V[a\x0F\xBB\x82\x84a.\xE6V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xDBWa\x0F\xD4\x82\x84a/YV[\x90Pa\n+V[a\x0F\xE5\x82\x84a/YV[a\x0F\xD4\x90`\x01a.\xB3V[a\x0F\xF8a\x14\x96V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x17WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x105WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10SW`@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\x10\xBDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xD8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xE6WP\x80\x15[\x15a\x11\x04W`@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\x11.W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x117\x86a!\x1CV[a\x11?a!-V[a\x11J\x89\x89\x89a!5V[\x83\x15a\x11\x90W\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[\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\x11\xE4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x02W`@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\x12JW`@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\x12\x93\x83\x85a\x0F\x81V[`\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[`\tT_\x90C\x84\x11\x80a\x13\x10WP\x80\x15[\x80a\x13ZWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13>Wa\x13>a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13xW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x86`\x01\x85a/2V[\x90P[\x81a\x14\"W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\"W\x86`\t\x82\x81T\x81\x10a\x13\xBBWa\x13\xBBa/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x10W`\x01\x91P`\t\x81\x81T\x81\x10a\x13\xF0Wa\x13\xF0a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\"V[\x80a\x14\x1A\x81a/\x86V[\x91PPa\x13\x89V[\x81a\x14@W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14K\x84\x89a/2V[\x11\x97\x96PPPPPPPV[a\x14_a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x8DW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\x1D\x0BV[3a\x14\xC8\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\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x84V[a\x14\xF9a$\x83V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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[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\x1B\xA2WP\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\x1B\x96_Q` a4\x14_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xC8a\x14\x96V[`@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\x08AV[\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\x1C[WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1CX\x91\x81\x01\x90a/\x9BV[`\x01[a\x1C\x83W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4\x14_9_Q\x90_R\x81\x14a\x1C\xB3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x84V[a\x1C\xBD\x83\x83a\"aV[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\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xC5a\x08\x95V[\x90Pa\x1D\xCFa&\xE8V[\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\x1E?WPa\x1E?\x85` \x01Qa\t:V[\x15a\x1EqW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\x95V[`\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\x1E\xD0\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\x94V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\xEBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x0F\x91\x90a3\xB4V[a\x1F,W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xA8WP`\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\x1FsWa\x1Fsa/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\x9D\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\x13V[`\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\x1F\xD5Wa\x1F\xD5a/EV[_\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 \x15\x83a3\xD3V[\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!$a\"\xB6V[a\nB\x81a\"\xFFV[a\n\xEBa\"\xB6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!YWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!fWP` \x82\x01Q\x15[\x80a!sWP`@\x82\x01Q\x15[\x80a!\x80WP``\x82\x01Q\x15[\x80a!\x8AWP\x81Q\x15[\x80a!\x9CWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xB0WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xCEW`@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[a\"j\x82a#\x07V[`@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\"\xAEWa\x1C\xBD\x82\x82a#jV[a\n`a#\xDCV[\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\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14_a\"\xB6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#<W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4\x14_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#\x86\x91\x90a3\xFDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xBEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xC3V[``\x91P[P\x91P\x91Pa#\xD3\x85\x83\x83a#\xFBV[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x10Wa$\x0B\x82a$ZV[a$SV[\x81Q\x15\x80\x15a$'WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$PW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x84V[P\x80[\x93\x92PPPV[\x80Q\x15a$jW\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$\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'-W__\xFD[a$S\x82a'\x07V[_` \x82\x84\x03\x12\x15a'FW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x7F`@\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\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)tW__\xFD[a$S\x82a)NV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xB4Wa)\xB4a)}V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xE2Wa)\xE2a)}V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a)\xFAW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x1CWa*\x1Ca)}V[`@R\x90P\x80a*+\x83a)NV[\x81Ra*9` \x84\x01a)NV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*_W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x81Wa*\x81a)}V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xACW__\xFD[a*\xB4a)\x91V[\x90Pa*\xC0\x83\x83a*OV[\x81Ra*\xCF\x83`@\x84\x01a*OV[` \x82\x01Ra*\xE1\x83`\x80\x84\x01a*OV[`@\x82\x01Ra*\xF3\x83`\xC0\x84\x01a*OV[``\x82\x01Ra+\x06\x83a\x01\0\x84\x01a*OV[`\x80\x82\x01Ra+\x19\x83a\x01@\x84\x01a*OV[`\xA0\x82\x01Ra+,\x83a\x01\x80\x84\x01a*OV[`\xC0\x82\x01Ra+?\x83a\x01\xC0\x84\x01a*OV[`\xE0\x82\x01Ra+R\x83a\x02\0\x84\x01a*OV[a\x01\0\x82\x01Ra+f\x83a\x02@\x84\x01a*OV[a\x01 \x82\x01Ra+z\x83a\x02\x80\x84\x01a*OV[a\x01@\x82\x01Ra+\x8E\x83a\x02\xC0\x84\x01a*OV[a\x01`\x82\x01Ra+\xA2\x83a\x03\0\x84\x01a*OV[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,8W__\xFD[a,B\x84\x84a)\xEAV[\x91Pa,Q\x84``\x85\x01a*\x9BV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,}W__\xFD[a$S\x82a,ZV[__`@\x83\x85\x03\x12\x15a,\x97W__\xFD[a,\xA0\x83a'\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xBAW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xCAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xE3Wa,\xE3a)}V[a,\xF6`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xBAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\nW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-9W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-[Wa-[a)}V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\x9CW__\xFD[a-\xA6\x85\x85a)\xEAV[\x92Pa-\xB5\x85``\x86\x01a-)V[\x91Pa-\xC4\x85`\xE0\x86\x01a*\x9BV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xDEW__\xFD[a-\xE7\x83a)NV[\x91Pa,Q` \x84\x01a)NV[____a\x01 \x85\x87\x03\x12\x15a.\tW__\xFD[a.\x13\x86\x86a)\xEAV[\x93Pa.\"\x86``\x87\x01a-)V[\x92Pa.0`\xE0\x86\x01a,ZV[\x91Pa.?a\x01\0\x86\x01a'\x07V[\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[__`@\x83\x85\x03\x12\x15a.\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\x9FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a.\xFEWa.\xFEa.\xD2V[\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\n+Wa\n+a.\x9FV[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\x9FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/qWa/qa.\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\x94Wa/\x94a.\x9FV[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xABW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xD4W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xB5V[PPPPV[a/\xEF\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\x01Qa1\xC6`@\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\x01Ra3\x9Ea\x05\0\x83\x01\x85a/\xB2V[a3\xACa\x06`\x83\x01\x84a/\xDAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xC4W__\xFD[\x81Q\x80\x15\x15\x81\x14a$SW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a3\xF4Wa3\xF4a.\x9FV[`\x01\x01\x92\x91PPV[_\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",
4928    );
4929    /// The runtime bytecode of the contract, as deployed on the network.
4930    ///
4931    /// ```text
4932    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a61022536600461271d565b610799565b005b348015610237575f5ffd5b5061024b610246366004612736565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b604051610280919061274d565b348015610322575f5ffd5b5061022a610331366004612964565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c26565b610921565b348015610360575f5ffd5b5061037461036f366004612964565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc366004612964565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c6d565b610a31565b61022a6104a8366004612c86565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612d89565b610afe565b348015610513575f5ffd5b506103aa610e31565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a610555366004612736565b610e56565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612dcd565b610f81565b3480156105dd575f5ffd5b5061022a6105ec366004612c6d565b610ff0565b3480156105fc575f5ffd5b5061022a61060b366004612df5565b611079565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e4a565b3480156106ad575f5ffd5b5061022a6106bc366004612dcd565b61119b565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e7f565b6112ff565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a61078036600461271d565b611457565b348015610790575f5ffd5b50600954610426565b6107a1611496565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d612483565b6108a56114f1565b905090565b6108b2611496565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f81565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612eb3565b6109879190612ee6565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612ee6565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f13565b600a546001600160401b0391821691610a20911684612ee6565b6001600160401b0316115b92915050565b610a39611496565b610a4281610ff0565b50565b610a4d611b1c565b610a5682611bc0565b610a608282611c01565b5050565b5f610a6d611cc2565b505f5160206134145f395f51905f5290565b610a87611496565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af5611496565b610aeb5f611d0b565b6008546001600160a01b031615158015610b2357506008546001600160a01b03163314155b15610b41576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b7a575060065460208401516001600160401b03600160401b9092048216911611155b15610b985760405163051c46ef60e01b815260040160405180910390fd5b610ba58360400151611d7b565b610bb28260200151611d7b565b610bbf8260400151611d7b565b610bcc8260600151611d7b565b5f610bd5610e31565b6020850151600a549192505f91610bf591906001600160401b0316610f81565b600a549091506001600160401b03600160801b909104811690821610610c4057610c22856020015161099c565b15610c405760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610cf3576002610c6a8383612f13565b6001600160401b031610610c915760405163080ae8d960e01b815260040160405180910390fd5b610c9c826001612eb3565b6001600160401b0316816001600160401b0316148015610cd55750600654610cd390600160401b90046001600160401b031661093a565b155b15610cf35760405163080ae8d960e01b815260040160405180910390fd5b610cfe858585611dbc565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d5d5750610d5d856020015161093a565b15610dc7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dab826001612eb3565b6040516001600160401b03909116815260200160405180910390a15b610dd2434287611f33565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e2291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f81565b600980545f91829190610e6a600183612f32565b81548110610e7a57610e7a612f45565b5f918252602090912060029091020154600160801b90046001600160401b03168410610eb957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f7a578460098281548110610ee957610ee9612f45565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f725760098181548110610f2257610f22612f45565b905f5260205f2090600202016001015460098281548110610f4557610f45612f45565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610ecd565b5050915091565b5f816001600160401b03165f03610f9957505f610a2b565b826001600160401b03165f03610fb157506001610a2b565b610fbb8284612ee6565b6001600160401b03165f03610fdb57610fd48284612f59565b9050610a2b565b610fe58284612f59565b610fd4906001612eb3565b610ff8611496565b610e108163ffffffff16108061101757506301e133808163ffffffff16115b80611035575060085463ffffffff600160a01b909104811690821611155b15611053576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110bd5750825b90505f826001600160401b031660011480156110d85750303b155b9050811580156110e6575080155b156111045760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561112e57845460ff60401b1916600160401b1785555b6111378661211c565b61113f61212d565b61114a898989612135565b831561119057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111e4575080546001600160401b03808416911610155b156112025760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b17825560059085161161124a576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112938385610f81565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611310575080155b8061135a5750600854600980549091600160c01b90046001600160401b031690811061133e5761133e612f45565b5f9182526020909120600290910201546001600160401b031684105b156113785760405163b0b4387760e01b815260040160405180910390fd5b5f8080611386600185612f32565b90505b8161142257600854600160c01b90046001600160401b031681106114225786600982815481106113bb576113bb612f45565b5f9182526020909120600290910201546001600160401b0316116114105760019150600981815481106113f0576113f0612f45565b5f9182526020909120600290910201546001600160401b03169250611422565b8061141a81612f86565b915050611389565b816114405760405163b0b4387760e01b815260040160405180910390fd5b8561144b8489612f32565b11979650505050505050565b61145f611496565b6001600160a01b03811661148d57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281611d0b565b336114c87f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b8152336004820152602401611484565b6114f9612483565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611ba257507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611b965f5160206134145f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611bc8611496565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c5b575060408051601f3d908101601f19168201909252611c5891810190612f9b565b60015b611c8357604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611484565b5f5160206134145f395f51905f528114611cb357604051632a87526960e21b815260048101829052602401611484565b611cbd8383612261565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611dc5610895565b9050611dcf6126e8565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e3f5750611e3f856020015161093a565b15611e7157602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e95565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611ed090859085908890600401613194565b602060405180830381865af4158015611eeb573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f0f91906133b4565b611f2c576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fa8575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f7357611f73612f45565b5f918252602090912060029091020154611f9d90600160401b90046001600160401b031684612f13565b6001600160401b0316115b1561203b57600854600980549091600160c01b90046001600160401b0316908110611fd557611fd5612f45565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018612015836133d3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6121246122b6565b610a42816122ff565b610aeb6122b6565b82516001600160401b0316151580612159575060208301516001600160401b031615155b8061216657506020820151155b8061217357506040820151155b8061218057506060820151155b8061218a57508151155b8061219c5750610e108163ffffffff16105b806121b057506301e133808163ffffffff16115b156121ce576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b61226a82612307565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122ae57611cbd828261236a565b610a606123dc565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b61145f6122b6565b806001600160a01b03163b5f0361233c57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611484565b5f5160206134145f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161238691906133fd565b5f60405180830381855af49150503d805f81146123be576040519150601f19603f3d011682016040523d82523d5f602084013e6123c3565b606091505b50915091506123d38583836123fb565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124105761240b8261245a565b612453565b815115801561242757506001600160a01b0384163b155b1561245057604051639996b31560e01b81526001600160a01b0385166004820152602401611484565b50805b9392505050565b80511561246a5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124b660405180604001604052805f81526020015f81525090565b81526020016124d660405180604001604052805f81526020015f81525090565b81526020016124f660405180604001604052805f81526020015f81525090565b815260200161251660405180604001604052805f81526020015f81525090565b815260200161253660405180604001604052805f81526020015f81525090565b815260200161255660405180604001604052805f81526020015f81525090565b815260200161257660405180604001604052805f81526020015f81525090565b815260200161259660405180604001604052805f81526020015f81525090565b81526020016125b660405180604001604052805f81526020015f81525090565b81526020016125d660405180604001604052805f81526020015f81525090565b81526020016125f660405180604001604052805f81526020015f81525090565b815260200161261660405180604001604052805f81526020015f81525090565b815260200161263660405180604001604052805f81526020015f81525090565b815260200161265660405180604001604052805f81526020015f81525090565b815260200161267660405180604001604052805f81526020015f81525090565b815260200161269660405180604001604052805f81526020015f81525090565b81526020016126b660405180604001604052805f81526020015f81525090565b81526020016126d660405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f6020828403121561272d575f5ffd5b61245382612707565b5f60208284031215612746575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161277f604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f60208284031215612974575f5ffd5b6124538261294e565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129b4576129b461297d565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129e2576129e261297d565b604052919050565b5f606082840312156129fa575f5ffd5b604051606081016001600160401b0381118282101715612a1c57612a1c61297d565b604052905080612a2b8361294e565b8152612a396020840161294e565b6020820152604092830135920191909152919050565b5f60408284031215612a5f575f5ffd5b604080519081016001600160401b0381118282101715612a8157612a8161297d565b604052823581526020928301359281019290925250919050565b5f6104808284031215612aac575f5ffd5b612ab4612991565b9050612ac08383612a4f565b8152612acf8360408401612a4f565b6020820152612ae18360808401612a4f565b6040820152612af38360c08401612a4f565b6060820152612b06836101008401612a4f565b6080820152612b19836101408401612a4f565b60a0820152612b2c836101808401612a4f565b60c0820152612b3f836101c08401612a4f565b60e0820152612b52836102008401612a4f565b610100820152612b66836102408401612a4f565b610120820152612b7a836102808401612a4f565b610140820152612b8e836102c08401612a4f565b610160820152612ba2836103008401612a4f565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c38575f5ffd5b612c4284846129ea565b9150612c518460608501612a9b565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c7d575f5ffd5b61245382612c5a565b5f5f60408385031215612c97575f5ffd5b612ca083612707565b915060208301356001600160401b03811115612cba575f5ffd5b8301601f81018513612cca575f5ffd5b80356001600160401b03811115612ce357612ce361297d565b612cf6601f8201601f19166020016129ba565b818152866020838501011115612d0a575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d39575f5ffd5b604051608081016001600160401b0381118282101715612d5b57612d5b61297d565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612d9c575f5ffd5b612da685856129ea565b9250612db58560608601612d29565b9150612dc48560e08601612a9b565b90509250925092565b5f5f60408385031215612dde575f5ffd5b612de78361294e565b9150612c516020840161294e565b5f5f5f5f6101208587031215612e09575f5ffd5b612e1386866129ea565b9350612e228660608701612d29565b9250612e3060e08601612c5a565b9150612e3f6101008601612707565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612e90575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612e9f565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612efe57612efe612ed2565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612e9f565b81810381811115610a2b57610a2b612e9f565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f7157612f71612ed2565b806001600160401b0384160491505092915050565b5f81612f9457612f94612e9f565b505f190190565b5f60208284031215612fab575f5ffd5b5051919050565b805f5b600b811015612fd4578151845260209384019390910190600101612fb5565b50505050565b612fef82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131c6604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261339e610500830185612fb2565b6133ac610660830184612fda565b949350505050565b5f602082840312156133c4575f5ffd5b81518015158114612453575f5ffd5b5f6001600160401b0382166001600160401b0381036133f4576133f4612e9f565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4933    /// ```
4934    #[rustfmt::skip]
4935    #[allow(clippy::all)]
4936    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4937        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'\x1DV[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'6V[a\x08LV[`@Qa\x02\x80\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\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'MV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)dV[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,&V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)dV[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)dV[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,mV[a\n1V[a\x02*a\x04\xA86`\x04a,\x86V[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\x89V[a\n\xFEV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0E1V[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'6V[a\x0EVV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\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\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xCDV[a\x0F\x81V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,mV[a\x0F\xF0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a-\xF5V[a\x10yV[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\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\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.JV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xCDV[a\x11\x9BV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x7FV[a\x12\xFFV[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'\x1DV[a\x14WV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@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\x07\xF7W`@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\x08[W_\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\x08\x9Da$\x83V[a\x08\xA5a\x14\xF1V[\x90P\x90V[a\x08\xB2a\x14\x96V[`\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\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x81V[`\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\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xB3V[a\t\x87\x91\x90a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\x13V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xE6V[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\x96V[a\nB\x81a\x0F\xF0V[PV[a\nMa\x1B\x1CV[a\nV\x82a\x1B\xC0V[a\n`\x82\x82a\x1C\x01V[PPV[_a\nma\x1C\xC2V[P_Q` a4\x14_9_Q\x90_R\x90V[a\n\x87a\x14\x96V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\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\n\xF5a\x14\x96V[a\n\xEB_a\x1D\x0BV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B#WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BAW`@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\x0BzWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\x98W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xA5\x83`@\x01Qa\x1D{V[a\x0B\xB2\x82` \x01Qa\x1D{V[a\x0B\xBF\x82`@\x01Qa\x1D{V[a\x0B\xCC\x82``\x01Qa\x1D{V[_a\x0B\xD5a\x0E1V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0B\xF5\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x81V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C@Wa\x0C\"\x85` \x01Qa\t\x9CV[\x15a\x0C@W`@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\x0C\xF3W`\x02a\x0Cj\x83\x83a/\x13V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\x91W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x9C\x82`\x01a.\xB3V[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xD5WP`\x06Ta\x0C\xD3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\x0C\xF3W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xFE\x85\x85\x85a\x1D\xBCV[\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\r]WPa\r]\x85` \x01Qa\t:V[\x15a\r\xC7W\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\r\xAB\x82`\x01a.\xB3V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xD2CB\x87a\x1F3V[\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\x0E\"\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x81V[`\t\x80T_\x91\x82\x91\x90a\x0Ej`\x01\x83a/2V[\x81T\x81\x10a\x0EzWa\x0Eza/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xB9W`@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\x0FzW\x84`\t\x82\x81T\x81\x10a\x0E\xE9Wa\x0E\xE9a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0FrW`\t\x81\x81T\x81\x10a\x0F\"Wa\x0F\"a/EV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FEWa\x0FEa/EV[\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\x0E\xCDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\x99WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xB1WP`\x01a\n+V[a\x0F\xBB\x82\x84a.\xE6V[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xDBWa\x0F\xD4\x82\x84a/YV[\x90Pa\n+V[a\x0F\xE5\x82\x84a/YV[a\x0F\xD4\x90`\x01a.\xB3V[a\x0F\xF8a\x14\x96V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x17WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x105WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10SW`@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\x10\xBDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xD8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xE6WP\x80\x15[\x15a\x11\x04W`@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\x11.W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x117\x86a!\x1CV[a\x11?a!-V[a\x11J\x89\x89\x89a!5V[\x83\x15a\x11\x90W\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[\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\x11\xE4WP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x02W`@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\x12JW`@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\x12\x93\x83\x85a\x0F\x81V[`\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[`\tT_\x90C\x84\x11\x80a\x13\x10WP\x80\x15[\x80a\x13ZWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13>Wa\x13>a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13xW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x86`\x01\x85a/2V[\x90P[\x81a\x14\"W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\"W\x86`\t\x82\x81T\x81\x10a\x13\xBBWa\x13\xBBa/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x10W`\x01\x91P`\t\x81\x81T\x81\x10a\x13\xF0Wa\x13\xF0a/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\"V[\x80a\x14\x1A\x81a/\x86V[\x91PPa\x13\x89V[\x81a\x14@W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14K\x84\x89a/2V[\x11\x97\x96PPPPPPPV[a\x14_a\x14\x96V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\x8DW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\x1D\x0BV[3a\x14\xC8\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\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x84V[a\x14\xF9a$\x83V[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` 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[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\x1B\xA2WP\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\x1B\x96_Q` a4\x14_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xC8a\x14\x96V[`@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\x08AV[\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\x1C[WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1CX\x91\x81\x01\x90a/\x9BV[`\x01[a\x1C\x83W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4\x14_9_Q\x90_R\x81\x14a\x1C\xB3W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x84V[a\x1C\xBD\x83\x83a\"aV[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\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xC5a\x08\x95V[\x90Pa\x1D\xCFa&\xE8V[\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\x1E?WPa\x1E?\x85` \x01Qa\t:V[\x15a\x1EqW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\x95V[`\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\x1E\xD0\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\x94V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\xEBW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F\x0F\x91\x90a3\xB4V[a\x1F,W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xA8WP`\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\x1FsWa\x1Fsa/EV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\x9D\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\x13V[`\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\x1F\xD5Wa\x1F\xD5a/EV[_\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 \x15\x83a3\xD3V[\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!$a\"\xB6V[a\nB\x81a\"\xFFV[a\n\xEBa\"\xB6V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!YWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!fWP` \x82\x01Q\x15[\x80a!sWP`@\x82\x01Q\x15[\x80a!\x80WP``\x82\x01Q\x15[\x80a!\x8AWP\x81Q\x15[\x80a!\x9CWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xB0WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xCEW`@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[a\"j\x82a#\x07V[`@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\"\xAEWa\x1C\xBD\x82\x82a#jV[a\n`a#\xDCV[\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\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14_a\"\xB6V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#<W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x84V[_Q` a4\x14_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#\x86\x91\x90a3\xFDV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xBEW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xC3V[``\x91P[P\x91P\x91Pa#\xD3\x85\x83\x83a#\xFBV[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x10Wa$\x0B\x82a$ZV[a$SV[\x81Q\x15\x80\x15a$'WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$PW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x84V[P\x80[\x93\x92PPPV[\x80Q\x15a$jW\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$\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xF6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x16`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&V`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&v`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x96`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xB6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xD6`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'-W__\xFD[a$S\x82a'\x07V[_` \x82\x84\x03\x12\x15a'FW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x7F`@\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\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)tW__\xFD[a$S\x82a)NV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xB4Wa)\xB4a)}V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xE2Wa)\xE2a)}V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a)\xFAW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x1CWa*\x1Ca)}V[`@R\x90P\x80a*+\x83a)NV[\x81Ra*9` \x84\x01a)NV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*_W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x81Wa*\x81a)}V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xACW__\xFD[a*\xB4a)\x91V[\x90Pa*\xC0\x83\x83a*OV[\x81Ra*\xCF\x83`@\x84\x01a*OV[` \x82\x01Ra*\xE1\x83`\x80\x84\x01a*OV[`@\x82\x01Ra*\xF3\x83`\xC0\x84\x01a*OV[``\x82\x01Ra+\x06\x83a\x01\0\x84\x01a*OV[`\x80\x82\x01Ra+\x19\x83a\x01@\x84\x01a*OV[`\xA0\x82\x01Ra+,\x83a\x01\x80\x84\x01a*OV[`\xC0\x82\x01Ra+?\x83a\x01\xC0\x84\x01a*OV[`\xE0\x82\x01Ra+R\x83a\x02\0\x84\x01a*OV[a\x01\0\x82\x01Ra+f\x83a\x02@\x84\x01a*OV[a\x01 \x82\x01Ra+z\x83a\x02\x80\x84\x01a*OV[a\x01@\x82\x01Ra+\x8E\x83a\x02\xC0\x84\x01a*OV[a\x01`\x82\x01Ra+\xA2\x83a\x03\0\x84\x01a*OV[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,8W__\xFD[a,B\x84\x84a)\xEAV[\x91Pa,Q\x84``\x85\x01a*\x9BV[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,}W__\xFD[a$S\x82a,ZV[__`@\x83\x85\x03\x12\x15a,\x97W__\xFD[a,\xA0\x83a'\x07V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xBAW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xCAW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xE3Wa,\xE3a)}V[a,\xF6`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xBAV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\nW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-9W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-[Wa-[a)}V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\x9CW__\xFD[a-\xA6\x85\x85a)\xEAV[\x92Pa-\xB5\x85``\x86\x01a-)V[\x91Pa-\xC4\x85`\xE0\x86\x01a*\x9BV[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xDEW__\xFD[a-\xE7\x83a)NV[\x91Pa,Q` \x84\x01a)NV[____a\x01 \x85\x87\x03\x12\x15a.\tW__\xFD[a.\x13\x86\x86a)\xEAV[\x93Pa.\"\x86``\x87\x01a-)V[\x92Pa.0`\xE0\x86\x01a,ZV[\x91Pa.?a\x01\0\x86\x01a'\x07V[\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[__`@\x83\x85\x03\x12\x15a.\x90W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\x9FV[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a.\xFEWa.\xFEa.\xD2V[\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\n+Wa\n+a.\x9FV[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\x9FV[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/qWa/qa.\xD2V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\x94Wa/\x94a.\x9FV[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xABW__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xD4W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xB5V[PPPPV[a/\xEF\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\x01Qa1\xC6`@\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\x01Ra3\x9Ea\x05\0\x83\x01\x85a/\xB2V[a3\xACa\x06`\x83\x01\x84a/\xDAV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xC4W__\xFD[\x81Q\x80\x15\x15\x81\x14a$SW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a3\xF4Wa3\xF4a.\x9FV[`\x01\x01\x92\x91PPV[_\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",
4938    );
4939    #[derive(serde::Serialize, serde::Deserialize)]
4940    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4941    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4942```solidity
4943error AddressEmptyCode(address target);
4944```*/
4945    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4946    #[derive(Clone)]
4947    pub struct AddressEmptyCode {
4948        #[allow(missing_docs)]
4949        pub target: alloy::sol_types::private::Address,
4950    }
4951    #[allow(
4952        non_camel_case_types,
4953        non_snake_case,
4954        clippy::pub_underscore_fields,
4955        clippy::style
4956    )]
4957    const _: () = {
4958        use alloy::sol_types as alloy_sol_types;
4959        #[doc(hidden)]
4960        #[allow(dead_code)]
4961        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4962        #[doc(hidden)]
4963        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4964        #[cfg(test)]
4965        #[allow(dead_code, unreachable_patterns)]
4966        fn _type_assertion(
4967            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4968        ) {
4969            match _t {
4970                alloy_sol_types::private::AssertTypeEq::<
4971                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4972                >(_) => {}
4973            }
4974        }
4975        #[automatically_derived]
4976        #[doc(hidden)]
4977        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4978            fn from(value: AddressEmptyCode) -> Self {
4979                (value.target,)
4980            }
4981        }
4982        #[automatically_derived]
4983        #[doc(hidden)]
4984        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4985            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4986                Self { target: tuple.0 }
4987            }
4988        }
4989        #[automatically_derived]
4990        impl alloy_sol_types::SolError for AddressEmptyCode {
4991            type Parameters<'a> = UnderlyingSolTuple<'a>;
4992            type Token<'a> = <Self::Parameters<
4993                'a,
4994            > as alloy_sol_types::SolType>::Token<'a>;
4995            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4996            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4997            #[inline]
4998            fn new<'a>(
4999                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5000            ) -> Self {
5001                tuple.into()
5002            }
5003            #[inline]
5004            fn tokenize(&self) -> Self::Token<'_> {
5005                (
5006                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5007                        &self.target,
5008                    ),
5009                )
5010            }
5011            #[inline]
5012            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5013                <Self::Parameters<
5014                    '_,
5015                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5016                    .map(Self::new)
5017            }
5018        }
5019    };
5020    #[derive(serde::Serialize, serde::Deserialize)]
5021    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5022    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5023```solidity
5024error DeprecatedApi();
5025```*/
5026    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5027    #[derive(Clone)]
5028    pub struct DeprecatedApi;
5029    #[allow(
5030        non_camel_case_types,
5031        non_snake_case,
5032        clippy::pub_underscore_fields,
5033        clippy::style
5034    )]
5035    const _: () = {
5036        use alloy::sol_types as alloy_sol_types;
5037        #[doc(hidden)]
5038        #[allow(dead_code)]
5039        type UnderlyingSolTuple<'a> = ();
5040        #[doc(hidden)]
5041        type UnderlyingRustTuple<'a> = ();
5042        #[cfg(test)]
5043        #[allow(dead_code, unreachable_patterns)]
5044        fn _type_assertion(
5045            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5046        ) {
5047            match _t {
5048                alloy_sol_types::private::AssertTypeEq::<
5049                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5050                >(_) => {}
5051            }
5052        }
5053        #[automatically_derived]
5054        #[doc(hidden)]
5055        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5056            fn from(value: DeprecatedApi) -> Self {
5057                ()
5058            }
5059        }
5060        #[automatically_derived]
5061        #[doc(hidden)]
5062        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5063            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5064                Self
5065            }
5066        }
5067        #[automatically_derived]
5068        impl alloy_sol_types::SolError for DeprecatedApi {
5069            type Parameters<'a> = UnderlyingSolTuple<'a>;
5070            type Token<'a> = <Self::Parameters<
5071                'a,
5072            > as alloy_sol_types::SolType>::Token<'a>;
5073            const SIGNATURE: &'static str = "DeprecatedApi()";
5074            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5075            #[inline]
5076            fn new<'a>(
5077                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5078            ) -> Self {
5079                tuple.into()
5080            }
5081            #[inline]
5082            fn tokenize(&self) -> Self::Token<'_> {
5083                ()
5084            }
5085            #[inline]
5086            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5087                <Self::Parameters<
5088                    '_,
5089                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5090                    .map(Self::new)
5091            }
5092        }
5093    };
5094    #[derive(serde::Serialize, serde::Deserialize)]
5095    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5096    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5097```solidity
5098error ERC1967InvalidImplementation(address implementation);
5099```*/
5100    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5101    #[derive(Clone)]
5102    pub struct ERC1967InvalidImplementation {
5103        #[allow(missing_docs)]
5104        pub implementation: alloy::sol_types::private::Address,
5105    }
5106    #[allow(
5107        non_camel_case_types,
5108        non_snake_case,
5109        clippy::pub_underscore_fields,
5110        clippy::style
5111    )]
5112    const _: () = {
5113        use alloy::sol_types as alloy_sol_types;
5114        #[doc(hidden)]
5115        #[allow(dead_code)]
5116        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5117        #[doc(hidden)]
5118        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5119        #[cfg(test)]
5120        #[allow(dead_code, unreachable_patterns)]
5121        fn _type_assertion(
5122            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5123        ) {
5124            match _t {
5125                alloy_sol_types::private::AssertTypeEq::<
5126                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5127                >(_) => {}
5128            }
5129        }
5130        #[automatically_derived]
5131        #[doc(hidden)]
5132        impl ::core::convert::From<ERC1967InvalidImplementation>
5133        for UnderlyingRustTuple<'_> {
5134            fn from(value: ERC1967InvalidImplementation) -> Self {
5135                (value.implementation,)
5136            }
5137        }
5138        #[automatically_derived]
5139        #[doc(hidden)]
5140        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5141        for ERC1967InvalidImplementation {
5142            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5143                Self { implementation: tuple.0 }
5144            }
5145        }
5146        #[automatically_derived]
5147        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5148            type Parameters<'a> = UnderlyingSolTuple<'a>;
5149            type Token<'a> = <Self::Parameters<
5150                'a,
5151            > as alloy_sol_types::SolType>::Token<'a>;
5152            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5153            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5154            #[inline]
5155            fn new<'a>(
5156                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5157            ) -> Self {
5158                tuple.into()
5159            }
5160            #[inline]
5161            fn tokenize(&self) -> Self::Token<'_> {
5162                (
5163                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5164                        &self.implementation,
5165                    ),
5166                )
5167            }
5168            #[inline]
5169            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5170                <Self::Parameters<
5171                    '_,
5172                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5173                    .map(Self::new)
5174            }
5175        }
5176    };
5177    #[derive(serde::Serialize, serde::Deserialize)]
5178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5179    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5180```solidity
5181error ERC1967NonPayable();
5182```*/
5183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5184    #[derive(Clone)]
5185    pub struct ERC1967NonPayable;
5186    #[allow(
5187        non_camel_case_types,
5188        non_snake_case,
5189        clippy::pub_underscore_fields,
5190        clippy::style
5191    )]
5192    const _: () = {
5193        use alloy::sol_types as alloy_sol_types;
5194        #[doc(hidden)]
5195        #[allow(dead_code)]
5196        type UnderlyingSolTuple<'a> = ();
5197        #[doc(hidden)]
5198        type UnderlyingRustTuple<'a> = ();
5199        #[cfg(test)]
5200        #[allow(dead_code, unreachable_patterns)]
5201        fn _type_assertion(
5202            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5203        ) {
5204            match _t {
5205                alloy_sol_types::private::AssertTypeEq::<
5206                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5207                >(_) => {}
5208            }
5209        }
5210        #[automatically_derived]
5211        #[doc(hidden)]
5212        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5213            fn from(value: ERC1967NonPayable) -> Self {
5214                ()
5215            }
5216        }
5217        #[automatically_derived]
5218        #[doc(hidden)]
5219        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5220            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5221                Self
5222            }
5223        }
5224        #[automatically_derived]
5225        impl alloy_sol_types::SolError for ERC1967NonPayable {
5226            type Parameters<'a> = UnderlyingSolTuple<'a>;
5227            type Token<'a> = <Self::Parameters<
5228                'a,
5229            > as alloy_sol_types::SolType>::Token<'a>;
5230            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5231            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5232            #[inline]
5233            fn new<'a>(
5234                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5235            ) -> Self {
5236                tuple.into()
5237            }
5238            #[inline]
5239            fn tokenize(&self) -> Self::Token<'_> {
5240                ()
5241            }
5242            #[inline]
5243            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5244                <Self::Parameters<
5245                    '_,
5246                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5247                    .map(Self::new)
5248            }
5249        }
5250    };
5251    #[derive(serde::Serialize, serde::Deserialize)]
5252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5253    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5254```solidity
5255error FailedInnerCall();
5256```*/
5257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5258    #[derive(Clone)]
5259    pub struct FailedInnerCall;
5260    #[allow(
5261        non_camel_case_types,
5262        non_snake_case,
5263        clippy::pub_underscore_fields,
5264        clippy::style
5265    )]
5266    const _: () = {
5267        use alloy::sol_types as alloy_sol_types;
5268        #[doc(hidden)]
5269        #[allow(dead_code)]
5270        type UnderlyingSolTuple<'a> = ();
5271        #[doc(hidden)]
5272        type UnderlyingRustTuple<'a> = ();
5273        #[cfg(test)]
5274        #[allow(dead_code, unreachable_patterns)]
5275        fn _type_assertion(
5276            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5277        ) {
5278            match _t {
5279                alloy_sol_types::private::AssertTypeEq::<
5280                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5281                >(_) => {}
5282            }
5283        }
5284        #[automatically_derived]
5285        #[doc(hidden)]
5286        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5287            fn from(value: FailedInnerCall) -> Self {
5288                ()
5289            }
5290        }
5291        #[automatically_derived]
5292        #[doc(hidden)]
5293        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5294            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5295                Self
5296            }
5297        }
5298        #[automatically_derived]
5299        impl alloy_sol_types::SolError for FailedInnerCall {
5300            type Parameters<'a> = UnderlyingSolTuple<'a>;
5301            type Token<'a> = <Self::Parameters<
5302                'a,
5303            > as alloy_sol_types::SolType>::Token<'a>;
5304            const SIGNATURE: &'static str = "FailedInnerCall()";
5305            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5306            #[inline]
5307            fn new<'a>(
5308                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5309            ) -> Self {
5310                tuple.into()
5311            }
5312            #[inline]
5313            fn tokenize(&self) -> Self::Token<'_> {
5314                ()
5315            }
5316            #[inline]
5317            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5318                <Self::Parameters<
5319                    '_,
5320                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5321                    .map(Self::new)
5322            }
5323        }
5324    };
5325    #[derive(serde::Serialize, serde::Deserialize)]
5326    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5327    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5328```solidity
5329error InsufficientSnapshotHistory();
5330```*/
5331    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5332    #[derive(Clone)]
5333    pub struct InsufficientSnapshotHistory;
5334    #[allow(
5335        non_camel_case_types,
5336        non_snake_case,
5337        clippy::pub_underscore_fields,
5338        clippy::style
5339    )]
5340    const _: () = {
5341        use alloy::sol_types as alloy_sol_types;
5342        #[doc(hidden)]
5343        #[allow(dead_code)]
5344        type UnderlyingSolTuple<'a> = ();
5345        #[doc(hidden)]
5346        type UnderlyingRustTuple<'a> = ();
5347        #[cfg(test)]
5348        #[allow(dead_code, unreachable_patterns)]
5349        fn _type_assertion(
5350            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5351        ) {
5352            match _t {
5353                alloy_sol_types::private::AssertTypeEq::<
5354                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5355                >(_) => {}
5356            }
5357        }
5358        #[automatically_derived]
5359        #[doc(hidden)]
5360        impl ::core::convert::From<InsufficientSnapshotHistory>
5361        for UnderlyingRustTuple<'_> {
5362            fn from(value: InsufficientSnapshotHistory) -> Self {
5363                ()
5364            }
5365        }
5366        #[automatically_derived]
5367        #[doc(hidden)]
5368        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5369        for InsufficientSnapshotHistory {
5370            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5371                Self
5372            }
5373        }
5374        #[automatically_derived]
5375        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5376            type Parameters<'a> = UnderlyingSolTuple<'a>;
5377            type Token<'a> = <Self::Parameters<
5378                'a,
5379            > as alloy_sol_types::SolType>::Token<'a>;
5380            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5381            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5382            #[inline]
5383            fn new<'a>(
5384                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5385            ) -> Self {
5386                tuple.into()
5387            }
5388            #[inline]
5389            fn tokenize(&self) -> Self::Token<'_> {
5390                ()
5391            }
5392            #[inline]
5393            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5394                <Self::Parameters<
5395                    '_,
5396                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5397                    .map(Self::new)
5398            }
5399        }
5400    };
5401    #[derive(serde::Serialize, serde::Deserialize)]
5402    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5403    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5404```solidity
5405error InvalidAddress();
5406```*/
5407    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5408    #[derive(Clone)]
5409    pub struct InvalidAddress;
5410    #[allow(
5411        non_camel_case_types,
5412        non_snake_case,
5413        clippy::pub_underscore_fields,
5414        clippy::style
5415    )]
5416    const _: () = {
5417        use alloy::sol_types as alloy_sol_types;
5418        #[doc(hidden)]
5419        #[allow(dead_code)]
5420        type UnderlyingSolTuple<'a> = ();
5421        #[doc(hidden)]
5422        type UnderlyingRustTuple<'a> = ();
5423        #[cfg(test)]
5424        #[allow(dead_code, unreachable_patterns)]
5425        fn _type_assertion(
5426            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5427        ) {
5428            match _t {
5429                alloy_sol_types::private::AssertTypeEq::<
5430                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5431                >(_) => {}
5432            }
5433        }
5434        #[automatically_derived]
5435        #[doc(hidden)]
5436        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5437            fn from(value: InvalidAddress) -> Self {
5438                ()
5439            }
5440        }
5441        #[automatically_derived]
5442        #[doc(hidden)]
5443        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5444            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5445                Self
5446            }
5447        }
5448        #[automatically_derived]
5449        impl alloy_sol_types::SolError for InvalidAddress {
5450            type Parameters<'a> = UnderlyingSolTuple<'a>;
5451            type Token<'a> = <Self::Parameters<
5452                'a,
5453            > as alloy_sol_types::SolType>::Token<'a>;
5454            const SIGNATURE: &'static str = "InvalidAddress()";
5455            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5456            #[inline]
5457            fn new<'a>(
5458                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5459            ) -> Self {
5460                tuple.into()
5461            }
5462            #[inline]
5463            fn tokenize(&self) -> Self::Token<'_> {
5464                ()
5465            }
5466            #[inline]
5467            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5468                <Self::Parameters<
5469                    '_,
5470                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5471                    .map(Self::new)
5472            }
5473        }
5474    };
5475    #[derive(serde::Serialize, serde::Deserialize)]
5476    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5477    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5478```solidity
5479error InvalidArgs();
5480```*/
5481    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5482    #[derive(Clone)]
5483    pub struct InvalidArgs;
5484    #[allow(
5485        non_camel_case_types,
5486        non_snake_case,
5487        clippy::pub_underscore_fields,
5488        clippy::style
5489    )]
5490    const _: () = {
5491        use alloy::sol_types as alloy_sol_types;
5492        #[doc(hidden)]
5493        #[allow(dead_code)]
5494        type UnderlyingSolTuple<'a> = ();
5495        #[doc(hidden)]
5496        type UnderlyingRustTuple<'a> = ();
5497        #[cfg(test)]
5498        #[allow(dead_code, unreachable_patterns)]
5499        fn _type_assertion(
5500            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5501        ) {
5502            match _t {
5503                alloy_sol_types::private::AssertTypeEq::<
5504                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5505                >(_) => {}
5506            }
5507        }
5508        #[automatically_derived]
5509        #[doc(hidden)]
5510        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5511            fn from(value: InvalidArgs) -> Self {
5512                ()
5513            }
5514        }
5515        #[automatically_derived]
5516        #[doc(hidden)]
5517        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5518            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5519                Self
5520            }
5521        }
5522        #[automatically_derived]
5523        impl alloy_sol_types::SolError for InvalidArgs {
5524            type Parameters<'a> = UnderlyingSolTuple<'a>;
5525            type Token<'a> = <Self::Parameters<
5526                'a,
5527            > as alloy_sol_types::SolType>::Token<'a>;
5528            const SIGNATURE: &'static str = "InvalidArgs()";
5529            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5530            #[inline]
5531            fn new<'a>(
5532                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5533            ) -> Self {
5534                tuple.into()
5535            }
5536            #[inline]
5537            fn tokenize(&self) -> Self::Token<'_> {
5538                ()
5539            }
5540            #[inline]
5541            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5542                <Self::Parameters<
5543                    '_,
5544                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5545                    .map(Self::new)
5546            }
5547        }
5548    };
5549    #[derive(serde::Serialize, serde::Deserialize)]
5550    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5551    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5552```solidity
5553error InvalidHotShotBlockForCommitmentCheck();
5554```*/
5555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5556    #[derive(Clone)]
5557    pub struct InvalidHotShotBlockForCommitmentCheck;
5558    #[allow(
5559        non_camel_case_types,
5560        non_snake_case,
5561        clippy::pub_underscore_fields,
5562        clippy::style
5563    )]
5564    const _: () = {
5565        use alloy::sol_types as alloy_sol_types;
5566        #[doc(hidden)]
5567        #[allow(dead_code)]
5568        type UnderlyingSolTuple<'a> = ();
5569        #[doc(hidden)]
5570        type UnderlyingRustTuple<'a> = ();
5571        #[cfg(test)]
5572        #[allow(dead_code, unreachable_patterns)]
5573        fn _type_assertion(
5574            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5575        ) {
5576            match _t {
5577                alloy_sol_types::private::AssertTypeEq::<
5578                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5579                >(_) => {}
5580            }
5581        }
5582        #[automatically_derived]
5583        #[doc(hidden)]
5584        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5585        for UnderlyingRustTuple<'_> {
5586            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5587                ()
5588            }
5589        }
5590        #[automatically_derived]
5591        #[doc(hidden)]
5592        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5593        for InvalidHotShotBlockForCommitmentCheck {
5594            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5595                Self
5596            }
5597        }
5598        #[automatically_derived]
5599        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5600            type Parameters<'a> = UnderlyingSolTuple<'a>;
5601            type Token<'a> = <Self::Parameters<
5602                'a,
5603            > as alloy_sol_types::SolType>::Token<'a>;
5604            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5605            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5606            #[inline]
5607            fn new<'a>(
5608                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5609            ) -> Self {
5610                tuple.into()
5611            }
5612            #[inline]
5613            fn tokenize(&self) -> Self::Token<'_> {
5614                ()
5615            }
5616            #[inline]
5617            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5618                <Self::Parameters<
5619                    '_,
5620                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5621                    .map(Self::new)
5622            }
5623        }
5624    };
5625    #[derive(serde::Serialize, serde::Deserialize)]
5626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5627    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5628```solidity
5629error InvalidInitialization();
5630```*/
5631    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5632    #[derive(Clone)]
5633    pub struct InvalidInitialization;
5634    #[allow(
5635        non_camel_case_types,
5636        non_snake_case,
5637        clippy::pub_underscore_fields,
5638        clippy::style
5639    )]
5640    const _: () = {
5641        use alloy::sol_types as alloy_sol_types;
5642        #[doc(hidden)]
5643        #[allow(dead_code)]
5644        type UnderlyingSolTuple<'a> = ();
5645        #[doc(hidden)]
5646        type UnderlyingRustTuple<'a> = ();
5647        #[cfg(test)]
5648        #[allow(dead_code, unreachable_patterns)]
5649        fn _type_assertion(
5650            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5651        ) {
5652            match _t {
5653                alloy_sol_types::private::AssertTypeEq::<
5654                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5655                >(_) => {}
5656            }
5657        }
5658        #[automatically_derived]
5659        #[doc(hidden)]
5660        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5661            fn from(value: InvalidInitialization) -> Self {
5662                ()
5663            }
5664        }
5665        #[automatically_derived]
5666        #[doc(hidden)]
5667        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5668            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5669                Self
5670            }
5671        }
5672        #[automatically_derived]
5673        impl alloy_sol_types::SolError for InvalidInitialization {
5674            type Parameters<'a> = UnderlyingSolTuple<'a>;
5675            type Token<'a> = <Self::Parameters<
5676                'a,
5677            > as alloy_sol_types::SolType>::Token<'a>;
5678            const SIGNATURE: &'static str = "InvalidInitialization()";
5679            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5680            #[inline]
5681            fn new<'a>(
5682                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5683            ) -> Self {
5684                tuple.into()
5685            }
5686            #[inline]
5687            fn tokenize(&self) -> Self::Token<'_> {
5688                ()
5689            }
5690            #[inline]
5691            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5692                <Self::Parameters<
5693                    '_,
5694                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5695                    .map(Self::new)
5696            }
5697        }
5698    };
5699    #[derive(serde::Serialize, serde::Deserialize)]
5700    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5701    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5702```solidity
5703error InvalidMaxStateHistory();
5704```*/
5705    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5706    #[derive(Clone)]
5707    pub struct InvalidMaxStateHistory;
5708    #[allow(
5709        non_camel_case_types,
5710        non_snake_case,
5711        clippy::pub_underscore_fields,
5712        clippy::style
5713    )]
5714    const _: () = {
5715        use alloy::sol_types as alloy_sol_types;
5716        #[doc(hidden)]
5717        #[allow(dead_code)]
5718        type UnderlyingSolTuple<'a> = ();
5719        #[doc(hidden)]
5720        type UnderlyingRustTuple<'a> = ();
5721        #[cfg(test)]
5722        #[allow(dead_code, unreachable_patterns)]
5723        fn _type_assertion(
5724            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5725        ) {
5726            match _t {
5727                alloy_sol_types::private::AssertTypeEq::<
5728                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5729                >(_) => {}
5730            }
5731        }
5732        #[automatically_derived]
5733        #[doc(hidden)]
5734        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5735            fn from(value: InvalidMaxStateHistory) -> Self {
5736                ()
5737            }
5738        }
5739        #[automatically_derived]
5740        #[doc(hidden)]
5741        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5742            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5743                Self
5744            }
5745        }
5746        #[automatically_derived]
5747        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5748            type Parameters<'a> = UnderlyingSolTuple<'a>;
5749            type Token<'a> = <Self::Parameters<
5750                'a,
5751            > as alloy_sol_types::SolType>::Token<'a>;
5752            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5753            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5754            #[inline]
5755            fn new<'a>(
5756                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5757            ) -> Self {
5758                tuple.into()
5759            }
5760            #[inline]
5761            fn tokenize(&self) -> Self::Token<'_> {
5762                ()
5763            }
5764            #[inline]
5765            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5766                <Self::Parameters<
5767                    '_,
5768                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5769                    .map(Self::new)
5770            }
5771        }
5772    };
5773    #[derive(serde::Serialize, serde::Deserialize)]
5774    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5775    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5776```solidity
5777error InvalidProof();
5778```*/
5779    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5780    #[derive(Clone)]
5781    pub struct InvalidProof;
5782    #[allow(
5783        non_camel_case_types,
5784        non_snake_case,
5785        clippy::pub_underscore_fields,
5786        clippy::style
5787    )]
5788    const _: () = {
5789        use alloy::sol_types as alloy_sol_types;
5790        #[doc(hidden)]
5791        #[allow(dead_code)]
5792        type UnderlyingSolTuple<'a> = ();
5793        #[doc(hidden)]
5794        type UnderlyingRustTuple<'a> = ();
5795        #[cfg(test)]
5796        #[allow(dead_code, unreachable_patterns)]
5797        fn _type_assertion(
5798            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5799        ) {
5800            match _t {
5801                alloy_sol_types::private::AssertTypeEq::<
5802                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5803                >(_) => {}
5804            }
5805        }
5806        #[automatically_derived]
5807        #[doc(hidden)]
5808        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5809            fn from(value: InvalidProof) -> Self {
5810                ()
5811            }
5812        }
5813        #[automatically_derived]
5814        #[doc(hidden)]
5815        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5816            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5817                Self
5818            }
5819        }
5820        #[automatically_derived]
5821        impl alloy_sol_types::SolError for InvalidProof {
5822            type Parameters<'a> = UnderlyingSolTuple<'a>;
5823            type Token<'a> = <Self::Parameters<
5824                'a,
5825            > as alloy_sol_types::SolType>::Token<'a>;
5826            const SIGNATURE: &'static str = "InvalidProof()";
5827            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5828            #[inline]
5829            fn new<'a>(
5830                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5831            ) -> Self {
5832                tuple.into()
5833            }
5834            #[inline]
5835            fn tokenize(&self) -> Self::Token<'_> {
5836                ()
5837            }
5838            #[inline]
5839            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5840                <Self::Parameters<
5841                    '_,
5842                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5843                    .map(Self::new)
5844            }
5845        }
5846    };
5847    #[derive(serde::Serialize, serde::Deserialize)]
5848    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5849    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5850```solidity
5851error InvalidScalar();
5852```*/
5853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5854    #[derive(Clone)]
5855    pub struct InvalidScalar;
5856    #[allow(
5857        non_camel_case_types,
5858        non_snake_case,
5859        clippy::pub_underscore_fields,
5860        clippy::style
5861    )]
5862    const _: () = {
5863        use alloy::sol_types as alloy_sol_types;
5864        #[doc(hidden)]
5865        #[allow(dead_code)]
5866        type UnderlyingSolTuple<'a> = ();
5867        #[doc(hidden)]
5868        type UnderlyingRustTuple<'a> = ();
5869        #[cfg(test)]
5870        #[allow(dead_code, unreachable_patterns)]
5871        fn _type_assertion(
5872            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5873        ) {
5874            match _t {
5875                alloy_sol_types::private::AssertTypeEq::<
5876                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5877                >(_) => {}
5878            }
5879        }
5880        #[automatically_derived]
5881        #[doc(hidden)]
5882        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5883            fn from(value: InvalidScalar) -> Self {
5884                ()
5885            }
5886        }
5887        #[automatically_derived]
5888        #[doc(hidden)]
5889        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5890            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5891                Self
5892            }
5893        }
5894        #[automatically_derived]
5895        impl alloy_sol_types::SolError for InvalidScalar {
5896            type Parameters<'a> = UnderlyingSolTuple<'a>;
5897            type Token<'a> = <Self::Parameters<
5898                'a,
5899            > as alloy_sol_types::SolType>::Token<'a>;
5900            const SIGNATURE: &'static str = "InvalidScalar()";
5901            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5902            #[inline]
5903            fn new<'a>(
5904                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5905            ) -> Self {
5906                tuple.into()
5907            }
5908            #[inline]
5909            fn tokenize(&self) -> Self::Token<'_> {
5910                ()
5911            }
5912            #[inline]
5913            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5914                <Self::Parameters<
5915                    '_,
5916                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5917                    .map(Self::new)
5918            }
5919        }
5920    };
5921    #[derive(serde::Serialize, serde::Deserialize)]
5922    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5923    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5924```solidity
5925error MissingEpochRootUpdate();
5926```*/
5927    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5928    #[derive(Clone)]
5929    pub struct MissingEpochRootUpdate;
5930    #[allow(
5931        non_camel_case_types,
5932        non_snake_case,
5933        clippy::pub_underscore_fields,
5934        clippy::style
5935    )]
5936    const _: () = {
5937        use alloy::sol_types as alloy_sol_types;
5938        #[doc(hidden)]
5939        #[allow(dead_code)]
5940        type UnderlyingSolTuple<'a> = ();
5941        #[doc(hidden)]
5942        type UnderlyingRustTuple<'a> = ();
5943        #[cfg(test)]
5944        #[allow(dead_code, unreachable_patterns)]
5945        fn _type_assertion(
5946            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5947        ) {
5948            match _t {
5949                alloy_sol_types::private::AssertTypeEq::<
5950                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5951                >(_) => {}
5952            }
5953        }
5954        #[automatically_derived]
5955        #[doc(hidden)]
5956        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5957            fn from(value: MissingEpochRootUpdate) -> Self {
5958                ()
5959            }
5960        }
5961        #[automatically_derived]
5962        #[doc(hidden)]
5963        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5964            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5965                Self
5966            }
5967        }
5968        #[automatically_derived]
5969        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5970            type Parameters<'a> = UnderlyingSolTuple<'a>;
5971            type Token<'a> = <Self::Parameters<
5972                'a,
5973            > as alloy_sol_types::SolType>::Token<'a>;
5974            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5975            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5976            #[inline]
5977            fn new<'a>(
5978                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5979            ) -> Self {
5980                tuple.into()
5981            }
5982            #[inline]
5983            fn tokenize(&self) -> Self::Token<'_> {
5984                ()
5985            }
5986            #[inline]
5987            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5988                <Self::Parameters<
5989                    '_,
5990                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5991                    .map(Self::new)
5992            }
5993        }
5994    };
5995    #[derive(serde::Serialize, serde::Deserialize)]
5996    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5997    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5998```solidity
5999error NoChangeRequired();
6000```*/
6001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6002    #[derive(Clone)]
6003    pub struct NoChangeRequired;
6004    #[allow(
6005        non_camel_case_types,
6006        non_snake_case,
6007        clippy::pub_underscore_fields,
6008        clippy::style
6009    )]
6010    const _: () = {
6011        use alloy::sol_types as alloy_sol_types;
6012        #[doc(hidden)]
6013        #[allow(dead_code)]
6014        type UnderlyingSolTuple<'a> = ();
6015        #[doc(hidden)]
6016        type UnderlyingRustTuple<'a> = ();
6017        #[cfg(test)]
6018        #[allow(dead_code, unreachable_patterns)]
6019        fn _type_assertion(
6020            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6021        ) {
6022            match _t {
6023                alloy_sol_types::private::AssertTypeEq::<
6024                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6025                >(_) => {}
6026            }
6027        }
6028        #[automatically_derived]
6029        #[doc(hidden)]
6030        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6031            fn from(value: NoChangeRequired) -> Self {
6032                ()
6033            }
6034        }
6035        #[automatically_derived]
6036        #[doc(hidden)]
6037        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6038            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6039                Self
6040            }
6041        }
6042        #[automatically_derived]
6043        impl alloy_sol_types::SolError for NoChangeRequired {
6044            type Parameters<'a> = UnderlyingSolTuple<'a>;
6045            type Token<'a> = <Self::Parameters<
6046                'a,
6047            > as alloy_sol_types::SolType>::Token<'a>;
6048            const SIGNATURE: &'static str = "NoChangeRequired()";
6049            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6050            #[inline]
6051            fn new<'a>(
6052                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6053            ) -> Self {
6054                tuple.into()
6055            }
6056            #[inline]
6057            fn tokenize(&self) -> Self::Token<'_> {
6058                ()
6059            }
6060            #[inline]
6061            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6062                <Self::Parameters<
6063                    '_,
6064                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6065                    .map(Self::new)
6066            }
6067        }
6068    };
6069    #[derive(serde::Serialize, serde::Deserialize)]
6070    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6071    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6072```solidity
6073error NotInitializing();
6074```*/
6075    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6076    #[derive(Clone)]
6077    pub struct NotInitializing;
6078    #[allow(
6079        non_camel_case_types,
6080        non_snake_case,
6081        clippy::pub_underscore_fields,
6082        clippy::style
6083    )]
6084    const _: () = {
6085        use alloy::sol_types as alloy_sol_types;
6086        #[doc(hidden)]
6087        #[allow(dead_code)]
6088        type UnderlyingSolTuple<'a> = ();
6089        #[doc(hidden)]
6090        type UnderlyingRustTuple<'a> = ();
6091        #[cfg(test)]
6092        #[allow(dead_code, unreachable_patterns)]
6093        fn _type_assertion(
6094            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6095        ) {
6096            match _t {
6097                alloy_sol_types::private::AssertTypeEq::<
6098                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6099                >(_) => {}
6100            }
6101        }
6102        #[automatically_derived]
6103        #[doc(hidden)]
6104        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6105            fn from(value: NotInitializing) -> Self {
6106                ()
6107            }
6108        }
6109        #[automatically_derived]
6110        #[doc(hidden)]
6111        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6112            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6113                Self
6114            }
6115        }
6116        #[automatically_derived]
6117        impl alloy_sol_types::SolError for NotInitializing {
6118            type Parameters<'a> = UnderlyingSolTuple<'a>;
6119            type Token<'a> = <Self::Parameters<
6120                'a,
6121            > as alloy_sol_types::SolType>::Token<'a>;
6122            const SIGNATURE: &'static str = "NotInitializing()";
6123            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6124            #[inline]
6125            fn new<'a>(
6126                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6127            ) -> Self {
6128                tuple.into()
6129            }
6130            #[inline]
6131            fn tokenize(&self) -> Self::Token<'_> {
6132                ()
6133            }
6134            #[inline]
6135            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6136                <Self::Parameters<
6137                    '_,
6138                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6139                    .map(Self::new)
6140            }
6141        }
6142    };
6143    #[derive(serde::Serialize, serde::Deserialize)]
6144    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6145    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6146```solidity
6147error OutdatedState();
6148```*/
6149    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6150    #[derive(Clone)]
6151    pub struct OutdatedState;
6152    #[allow(
6153        non_camel_case_types,
6154        non_snake_case,
6155        clippy::pub_underscore_fields,
6156        clippy::style
6157    )]
6158    const _: () = {
6159        use alloy::sol_types as alloy_sol_types;
6160        #[doc(hidden)]
6161        #[allow(dead_code)]
6162        type UnderlyingSolTuple<'a> = ();
6163        #[doc(hidden)]
6164        type UnderlyingRustTuple<'a> = ();
6165        #[cfg(test)]
6166        #[allow(dead_code, unreachable_patterns)]
6167        fn _type_assertion(
6168            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6169        ) {
6170            match _t {
6171                alloy_sol_types::private::AssertTypeEq::<
6172                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6173                >(_) => {}
6174            }
6175        }
6176        #[automatically_derived]
6177        #[doc(hidden)]
6178        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6179            fn from(value: OutdatedState) -> Self {
6180                ()
6181            }
6182        }
6183        #[automatically_derived]
6184        #[doc(hidden)]
6185        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6186            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6187                Self
6188            }
6189        }
6190        #[automatically_derived]
6191        impl alloy_sol_types::SolError for OutdatedState {
6192            type Parameters<'a> = UnderlyingSolTuple<'a>;
6193            type Token<'a> = <Self::Parameters<
6194                'a,
6195            > as alloy_sol_types::SolType>::Token<'a>;
6196            const SIGNATURE: &'static str = "OutdatedState()";
6197            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6198            #[inline]
6199            fn new<'a>(
6200                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6201            ) -> Self {
6202                tuple.into()
6203            }
6204            #[inline]
6205            fn tokenize(&self) -> Self::Token<'_> {
6206                ()
6207            }
6208            #[inline]
6209            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6210                <Self::Parameters<
6211                    '_,
6212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6213                    .map(Self::new)
6214            }
6215        }
6216    };
6217    #[derive(serde::Serialize, serde::Deserialize)]
6218    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6219    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6220```solidity
6221error OwnableInvalidOwner(address owner);
6222```*/
6223    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6224    #[derive(Clone)]
6225    pub struct OwnableInvalidOwner {
6226        #[allow(missing_docs)]
6227        pub owner: alloy::sol_types::private::Address,
6228    }
6229    #[allow(
6230        non_camel_case_types,
6231        non_snake_case,
6232        clippy::pub_underscore_fields,
6233        clippy::style
6234    )]
6235    const _: () = {
6236        use alloy::sol_types as alloy_sol_types;
6237        #[doc(hidden)]
6238        #[allow(dead_code)]
6239        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6240        #[doc(hidden)]
6241        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6242        #[cfg(test)]
6243        #[allow(dead_code, unreachable_patterns)]
6244        fn _type_assertion(
6245            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6246        ) {
6247            match _t {
6248                alloy_sol_types::private::AssertTypeEq::<
6249                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6250                >(_) => {}
6251            }
6252        }
6253        #[automatically_derived]
6254        #[doc(hidden)]
6255        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6256            fn from(value: OwnableInvalidOwner) -> Self {
6257                (value.owner,)
6258            }
6259        }
6260        #[automatically_derived]
6261        #[doc(hidden)]
6262        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6263            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6264                Self { owner: tuple.0 }
6265            }
6266        }
6267        #[automatically_derived]
6268        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6269            type Parameters<'a> = UnderlyingSolTuple<'a>;
6270            type Token<'a> = <Self::Parameters<
6271                'a,
6272            > as alloy_sol_types::SolType>::Token<'a>;
6273            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6274            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6275            #[inline]
6276            fn new<'a>(
6277                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6278            ) -> Self {
6279                tuple.into()
6280            }
6281            #[inline]
6282            fn tokenize(&self) -> Self::Token<'_> {
6283                (
6284                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6285                        &self.owner,
6286                    ),
6287                )
6288            }
6289            #[inline]
6290            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6291                <Self::Parameters<
6292                    '_,
6293                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6294                    .map(Self::new)
6295            }
6296        }
6297    };
6298    #[derive(serde::Serialize, serde::Deserialize)]
6299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6300    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6301```solidity
6302error OwnableUnauthorizedAccount(address account);
6303```*/
6304    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6305    #[derive(Clone)]
6306    pub struct OwnableUnauthorizedAccount {
6307        #[allow(missing_docs)]
6308        pub account: alloy::sol_types::private::Address,
6309    }
6310    #[allow(
6311        non_camel_case_types,
6312        non_snake_case,
6313        clippy::pub_underscore_fields,
6314        clippy::style
6315    )]
6316    const _: () = {
6317        use alloy::sol_types as alloy_sol_types;
6318        #[doc(hidden)]
6319        #[allow(dead_code)]
6320        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6321        #[doc(hidden)]
6322        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6323        #[cfg(test)]
6324        #[allow(dead_code, unreachable_patterns)]
6325        fn _type_assertion(
6326            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6327        ) {
6328            match _t {
6329                alloy_sol_types::private::AssertTypeEq::<
6330                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6331                >(_) => {}
6332            }
6333        }
6334        #[automatically_derived]
6335        #[doc(hidden)]
6336        impl ::core::convert::From<OwnableUnauthorizedAccount>
6337        for UnderlyingRustTuple<'_> {
6338            fn from(value: OwnableUnauthorizedAccount) -> Self {
6339                (value.account,)
6340            }
6341        }
6342        #[automatically_derived]
6343        #[doc(hidden)]
6344        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6345        for OwnableUnauthorizedAccount {
6346            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6347                Self { account: tuple.0 }
6348            }
6349        }
6350        #[automatically_derived]
6351        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6352            type Parameters<'a> = UnderlyingSolTuple<'a>;
6353            type Token<'a> = <Self::Parameters<
6354                'a,
6355            > as alloy_sol_types::SolType>::Token<'a>;
6356            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6357            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6358            #[inline]
6359            fn new<'a>(
6360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6361            ) -> Self {
6362                tuple.into()
6363            }
6364            #[inline]
6365            fn tokenize(&self) -> Self::Token<'_> {
6366                (
6367                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6368                        &self.account,
6369                    ),
6370                )
6371            }
6372            #[inline]
6373            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6374                <Self::Parameters<
6375                    '_,
6376                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6377                    .map(Self::new)
6378            }
6379        }
6380    };
6381    #[derive(serde::Serialize, serde::Deserialize)]
6382    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6383    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6384```solidity
6385error ProverNotPermissioned();
6386```*/
6387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6388    #[derive(Clone)]
6389    pub struct ProverNotPermissioned;
6390    #[allow(
6391        non_camel_case_types,
6392        non_snake_case,
6393        clippy::pub_underscore_fields,
6394        clippy::style
6395    )]
6396    const _: () = {
6397        use alloy::sol_types as alloy_sol_types;
6398        #[doc(hidden)]
6399        #[allow(dead_code)]
6400        type UnderlyingSolTuple<'a> = ();
6401        #[doc(hidden)]
6402        type UnderlyingRustTuple<'a> = ();
6403        #[cfg(test)]
6404        #[allow(dead_code, unreachable_patterns)]
6405        fn _type_assertion(
6406            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6407        ) {
6408            match _t {
6409                alloy_sol_types::private::AssertTypeEq::<
6410                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6411                >(_) => {}
6412            }
6413        }
6414        #[automatically_derived]
6415        #[doc(hidden)]
6416        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6417            fn from(value: ProverNotPermissioned) -> Self {
6418                ()
6419            }
6420        }
6421        #[automatically_derived]
6422        #[doc(hidden)]
6423        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6424            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6425                Self
6426            }
6427        }
6428        #[automatically_derived]
6429        impl alloy_sol_types::SolError for ProverNotPermissioned {
6430            type Parameters<'a> = UnderlyingSolTuple<'a>;
6431            type Token<'a> = <Self::Parameters<
6432                'a,
6433            > as alloy_sol_types::SolType>::Token<'a>;
6434            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6435            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6436            #[inline]
6437            fn new<'a>(
6438                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6439            ) -> Self {
6440                tuple.into()
6441            }
6442            #[inline]
6443            fn tokenize(&self) -> Self::Token<'_> {
6444                ()
6445            }
6446            #[inline]
6447            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6448                <Self::Parameters<
6449                    '_,
6450                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6451                    .map(Self::new)
6452            }
6453        }
6454    };
6455    #[derive(serde::Serialize, serde::Deserialize)]
6456    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6457    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6458```solidity
6459error UUPSUnauthorizedCallContext();
6460```*/
6461    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6462    #[derive(Clone)]
6463    pub struct UUPSUnauthorizedCallContext;
6464    #[allow(
6465        non_camel_case_types,
6466        non_snake_case,
6467        clippy::pub_underscore_fields,
6468        clippy::style
6469    )]
6470    const _: () = {
6471        use alloy::sol_types as alloy_sol_types;
6472        #[doc(hidden)]
6473        #[allow(dead_code)]
6474        type UnderlyingSolTuple<'a> = ();
6475        #[doc(hidden)]
6476        type UnderlyingRustTuple<'a> = ();
6477        #[cfg(test)]
6478        #[allow(dead_code, unreachable_patterns)]
6479        fn _type_assertion(
6480            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6481        ) {
6482            match _t {
6483                alloy_sol_types::private::AssertTypeEq::<
6484                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6485                >(_) => {}
6486            }
6487        }
6488        #[automatically_derived]
6489        #[doc(hidden)]
6490        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6491        for UnderlyingRustTuple<'_> {
6492            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6493                ()
6494            }
6495        }
6496        #[automatically_derived]
6497        #[doc(hidden)]
6498        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6499        for UUPSUnauthorizedCallContext {
6500            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6501                Self
6502            }
6503        }
6504        #[automatically_derived]
6505        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6506            type Parameters<'a> = UnderlyingSolTuple<'a>;
6507            type Token<'a> = <Self::Parameters<
6508                'a,
6509            > as alloy_sol_types::SolType>::Token<'a>;
6510            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6511            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6512            #[inline]
6513            fn new<'a>(
6514                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6515            ) -> Self {
6516                tuple.into()
6517            }
6518            #[inline]
6519            fn tokenize(&self) -> Self::Token<'_> {
6520                ()
6521            }
6522            #[inline]
6523            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6524                <Self::Parameters<
6525                    '_,
6526                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6527                    .map(Self::new)
6528            }
6529        }
6530    };
6531    #[derive(serde::Serialize, serde::Deserialize)]
6532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6533    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6534```solidity
6535error UUPSUnsupportedProxiableUUID(bytes32 slot);
6536```*/
6537    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6538    #[derive(Clone)]
6539    pub struct UUPSUnsupportedProxiableUUID {
6540        #[allow(missing_docs)]
6541        pub slot: alloy::sol_types::private::FixedBytes<32>,
6542    }
6543    #[allow(
6544        non_camel_case_types,
6545        non_snake_case,
6546        clippy::pub_underscore_fields,
6547        clippy::style
6548    )]
6549    const _: () = {
6550        use alloy::sol_types as alloy_sol_types;
6551        #[doc(hidden)]
6552        #[allow(dead_code)]
6553        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6554        #[doc(hidden)]
6555        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6556        #[cfg(test)]
6557        #[allow(dead_code, unreachable_patterns)]
6558        fn _type_assertion(
6559            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6560        ) {
6561            match _t {
6562                alloy_sol_types::private::AssertTypeEq::<
6563                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6564                >(_) => {}
6565            }
6566        }
6567        #[automatically_derived]
6568        #[doc(hidden)]
6569        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6570        for UnderlyingRustTuple<'_> {
6571            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6572                (value.slot,)
6573            }
6574        }
6575        #[automatically_derived]
6576        #[doc(hidden)]
6577        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6578        for UUPSUnsupportedProxiableUUID {
6579            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6580                Self { slot: tuple.0 }
6581            }
6582        }
6583        #[automatically_derived]
6584        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6585            type Parameters<'a> = UnderlyingSolTuple<'a>;
6586            type Token<'a> = <Self::Parameters<
6587                'a,
6588            > as alloy_sol_types::SolType>::Token<'a>;
6589            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6590            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6591            #[inline]
6592            fn new<'a>(
6593                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6594            ) -> Self {
6595                tuple.into()
6596            }
6597            #[inline]
6598            fn tokenize(&self) -> Self::Token<'_> {
6599                (
6600                    <alloy::sol_types::sol_data::FixedBytes<
6601                        32,
6602                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6603                )
6604            }
6605            #[inline]
6606            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6607                <Self::Parameters<
6608                    '_,
6609                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6610                    .map(Self::new)
6611            }
6612        }
6613    };
6614    #[derive(serde::Serialize, serde::Deserialize)]
6615    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6616    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6617```solidity
6618error WrongStakeTableUsed();
6619```*/
6620    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6621    #[derive(Clone)]
6622    pub struct WrongStakeTableUsed;
6623    #[allow(
6624        non_camel_case_types,
6625        non_snake_case,
6626        clippy::pub_underscore_fields,
6627        clippy::style
6628    )]
6629    const _: () = {
6630        use alloy::sol_types as alloy_sol_types;
6631        #[doc(hidden)]
6632        #[allow(dead_code)]
6633        type UnderlyingSolTuple<'a> = ();
6634        #[doc(hidden)]
6635        type UnderlyingRustTuple<'a> = ();
6636        #[cfg(test)]
6637        #[allow(dead_code, unreachable_patterns)]
6638        fn _type_assertion(
6639            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6640        ) {
6641            match _t {
6642                alloy_sol_types::private::AssertTypeEq::<
6643                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6644                >(_) => {}
6645            }
6646        }
6647        #[automatically_derived]
6648        #[doc(hidden)]
6649        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6650            fn from(value: WrongStakeTableUsed) -> Self {
6651                ()
6652            }
6653        }
6654        #[automatically_derived]
6655        #[doc(hidden)]
6656        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6657            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6658                Self
6659            }
6660        }
6661        #[automatically_derived]
6662        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6663            type Parameters<'a> = UnderlyingSolTuple<'a>;
6664            type Token<'a> = <Self::Parameters<
6665                'a,
6666            > as alloy_sol_types::SolType>::Token<'a>;
6667            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6668            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6669            #[inline]
6670            fn new<'a>(
6671                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6672            ) -> Self {
6673                tuple.into()
6674            }
6675            #[inline]
6676            fn tokenize(&self) -> Self::Token<'_> {
6677                ()
6678            }
6679            #[inline]
6680            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6681                <Self::Parameters<
6682                    '_,
6683                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6684                    .map(Self::new)
6685            }
6686        }
6687    };
6688    #[derive(serde::Serialize, serde::Deserialize)]
6689    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6690    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6691```solidity
6692event Initialized(uint64 version);
6693```*/
6694    #[allow(
6695        non_camel_case_types,
6696        non_snake_case,
6697        clippy::pub_underscore_fields,
6698        clippy::style
6699    )]
6700    #[derive(Clone)]
6701    pub struct Initialized {
6702        #[allow(missing_docs)]
6703        pub version: u64,
6704    }
6705    #[allow(
6706        non_camel_case_types,
6707        non_snake_case,
6708        clippy::pub_underscore_fields,
6709        clippy::style
6710    )]
6711    const _: () = {
6712        use alloy::sol_types as alloy_sol_types;
6713        #[automatically_derived]
6714        impl alloy_sol_types::SolEvent for Initialized {
6715            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6716            type DataToken<'a> = <Self::DataTuple<
6717                'a,
6718            > as alloy_sol_types::SolType>::Token<'a>;
6719            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6720            const SIGNATURE: &'static str = "Initialized(uint64)";
6721            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6722                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6723                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6724                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6725            ]);
6726            const ANONYMOUS: bool = false;
6727            #[allow(unused_variables)]
6728            #[inline]
6729            fn new(
6730                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6731                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6732            ) -> Self {
6733                Self { version: data.0 }
6734            }
6735            #[inline]
6736            fn check_signature(
6737                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6738            ) -> alloy_sol_types::Result<()> {
6739                if topics.0 != Self::SIGNATURE_HASH {
6740                    return Err(
6741                        alloy_sol_types::Error::invalid_event_signature_hash(
6742                            Self::SIGNATURE,
6743                            topics.0,
6744                            Self::SIGNATURE_HASH,
6745                        ),
6746                    );
6747                }
6748                Ok(())
6749            }
6750            #[inline]
6751            fn tokenize_body(&self) -> Self::DataToken<'_> {
6752                (
6753                    <alloy::sol_types::sol_data::Uint<
6754                        64,
6755                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6756                )
6757            }
6758            #[inline]
6759            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6760                (Self::SIGNATURE_HASH.into(),)
6761            }
6762            #[inline]
6763            fn encode_topics_raw(
6764                &self,
6765                out: &mut [alloy_sol_types::abi::token::WordToken],
6766            ) -> alloy_sol_types::Result<()> {
6767                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6768                    return Err(alloy_sol_types::Error::Overrun);
6769                }
6770                out[0usize] = alloy_sol_types::abi::token::WordToken(
6771                    Self::SIGNATURE_HASH,
6772                );
6773                Ok(())
6774            }
6775        }
6776        #[automatically_derived]
6777        impl alloy_sol_types::private::IntoLogData for Initialized {
6778            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6779                From::from(self)
6780            }
6781            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6782                From::from(&self)
6783            }
6784        }
6785        #[automatically_derived]
6786        impl From<&Initialized> for alloy_sol_types::private::LogData {
6787            #[inline]
6788            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6789                alloy_sol_types::SolEvent::encode_log_data(this)
6790            }
6791        }
6792    };
6793    #[derive(serde::Serialize, serde::Deserialize)]
6794    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6795    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6796```solidity
6797event NewEpoch(uint64 epoch);
6798```*/
6799    #[allow(
6800        non_camel_case_types,
6801        non_snake_case,
6802        clippy::pub_underscore_fields,
6803        clippy::style
6804    )]
6805    #[derive(Clone)]
6806    pub struct NewEpoch {
6807        #[allow(missing_docs)]
6808        pub epoch: u64,
6809    }
6810    #[allow(
6811        non_camel_case_types,
6812        non_snake_case,
6813        clippy::pub_underscore_fields,
6814        clippy::style
6815    )]
6816    const _: () = {
6817        use alloy::sol_types as alloy_sol_types;
6818        #[automatically_derived]
6819        impl alloy_sol_types::SolEvent for NewEpoch {
6820            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6821            type DataToken<'a> = <Self::DataTuple<
6822                'a,
6823            > as alloy_sol_types::SolType>::Token<'a>;
6824            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6825            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6826            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6827                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6828                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6829                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6830            ]);
6831            const ANONYMOUS: bool = false;
6832            #[allow(unused_variables)]
6833            #[inline]
6834            fn new(
6835                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6836                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6837            ) -> Self {
6838                Self { epoch: data.0 }
6839            }
6840            #[inline]
6841            fn check_signature(
6842                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6843            ) -> alloy_sol_types::Result<()> {
6844                if topics.0 != Self::SIGNATURE_HASH {
6845                    return Err(
6846                        alloy_sol_types::Error::invalid_event_signature_hash(
6847                            Self::SIGNATURE,
6848                            topics.0,
6849                            Self::SIGNATURE_HASH,
6850                        ),
6851                    );
6852                }
6853                Ok(())
6854            }
6855            #[inline]
6856            fn tokenize_body(&self) -> Self::DataToken<'_> {
6857                (
6858                    <alloy::sol_types::sol_data::Uint<
6859                        64,
6860                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6861                )
6862            }
6863            #[inline]
6864            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6865                (Self::SIGNATURE_HASH.into(),)
6866            }
6867            #[inline]
6868            fn encode_topics_raw(
6869                &self,
6870                out: &mut [alloy_sol_types::abi::token::WordToken],
6871            ) -> alloy_sol_types::Result<()> {
6872                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6873                    return Err(alloy_sol_types::Error::Overrun);
6874                }
6875                out[0usize] = alloy_sol_types::abi::token::WordToken(
6876                    Self::SIGNATURE_HASH,
6877                );
6878                Ok(())
6879            }
6880        }
6881        #[automatically_derived]
6882        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6883            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6884                From::from(self)
6885            }
6886            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6887                From::from(&self)
6888            }
6889        }
6890        #[automatically_derived]
6891        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6892            #[inline]
6893            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6894                alloy_sol_types::SolEvent::encode_log_data(this)
6895            }
6896        }
6897    };
6898    #[derive(serde::Serialize, serde::Deserialize)]
6899    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6900    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6901```solidity
6902event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6903```*/
6904    #[allow(
6905        non_camel_case_types,
6906        non_snake_case,
6907        clippy::pub_underscore_fields,
6908        clippy::style
6909    )]
6910    #[derive(Clone)]
6911    pub struct NewState {
6912        #[allow(missing_docs)]
6913        pub viewNum: u64,
6914        #[allow(missing_docs)]
6915        pub blockHeight: u64,
6916        #[allow(missing_docs)]
6917        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6918    }
6919    #[allow(
6920        non_camel_case_types,
6921        non_snake_case,
6922        clippy::pub_underscore_fields,
6923        clippy::style
6924    )]
6925    const _: () = {
6926        use alloy::sol_types as alloy_sol_types;
6927        #[automatically_derived]
6928        impl alloy_sol_types::SolEvent for NewState {
6929            type DataTuple<'a> = (BN254::ScalarField,);
6930            type DataToken<'a> = <Self::DataTuple<
6931                'a,
6932            > as alloy_sol_types::SolType>::Token<'a>;
6933            type TopicList = (
6934                alloy_sol_types::sol_data::FixedBytes<32>,
6935                alloy::sol_types::sol_data::Uint<64>,
6936                alloy::sol_types::sol_data::Uint<64>,
6937            );
6938            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6939            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6940                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6941                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6942                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6943            ]);
6944            const ANONYMOUS: bool = false;
6945            #[allow(unused_variables)]
6946            #[inline]
6947            fn new(
6948                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6949                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6950            ) -> Self {
6951                Self {
6952                    viewNum: topics.1,
6953                    blockHeight: topics.2,
6954                    blockCommRoot: data.0,
6955                }
6956            }
6957            #[inline]
6958            fn check_signature(
6959                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6960            ) -> alloy_sol_types::Result<()> {
6961                if topics.0 != Self::SIGNATURE_HASH {
6962                    return Err(
6963                        alloy_sol_types::Error::invalid_event_signature_hash(
6964                            Self::SIGNATURE,
6965                            topics.0,
6966                            Self::SIGNATURE_HASH,
6967                        ),
6968                    );
6969                }
6970                Ok(())
6971            }
6972            #[inline]
6973            fn tokenize_body(&self) -> Self::DataToken<'_> {
6974                (
6975                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6976                        &self.blockCommRoot,
6977                    ),
6978                )
6979            }
6980            #[inline]
6981            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6982                (
6983                    Self::SIGNATURE_HASH.into(),
6984                    self.viewNum.clone(),
6985                    self.blockHeight.clone(),
6986                )
6987            }
6988            #[inline]
6989            fn encode_topics_raw(
6990                &self,
6991                out: &mut [alloy_sol_types::abi::token::WordToken],
6992            ) -> alloy_sol_types::Result<()> {
6993                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6994                    return Err(alloy_sol_types::Error::Overrun);
6995                }
6996                out[0usize] = alloy_sol_types::abi::token::WordToken(
6997                    Self::SIGNATURE_HASH,
6998                );
6999                out[1usize] = <alloy::sol_types::sol_data::Uint<
7000                    64,
7001                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7002                out[2usize] = <alloy::sol_types::sol_data::Uint<
7003                    64,
7004                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7005                Ok(())
7006            }
7007        }
7008        #[automatically_derived]
7009        impl alloy_sol_types::private::IntoLogData for NewState {
7010            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7011                From::from(self)
7012            }
7013            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7014                From::from(&self)
7015            }
7016        }
7017        #[automatically_derived]
7018        impl From<&NewState> for alloy_sol_types::private::LogData {
7019            #[inline]
7020            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7021                alloy_sol_types::SolEvent::encode_log_data(this)
7022            }
7023        }
7024    };
7025    #[derive(serde::Serialize, serde::Deserialize)]
7026    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7027    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7028```solidity
7029event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7030```*/
7031    #[allow(
7032        non_camel_case_types,
7033        non_snake_case,
7034        clippy::pub_underscore_fields,
7035        clippy::style
7036    )]
7037    #[derive(Clone)]
7038    pub struct OwnershipTransferred {
7039        #[allow(missing_docs)]
7040        pub previousOwner: alloy::sol_types::private::Address,
7041        #[allow(missing_docs)]
7042        pub newOwner: alloy::sol_types::private::Address,
7043    }
7044    #[allow(
7045        non_camel_case_types,
7046        non_snake_case,
7047        clippy::pub_underscore_fields,
7048        clippy::style
7049    )]
7050    const _: () = {
7051        use alloy::sol_types as alloy_sol_types;
7052        #[automatically_derived]
7053        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7054            type DataTuple<'a> = ();
7055            type DataToken<'a> = <Self::DataTuple<
7056                'a,
7057            > as alloy_sol_types::SolType>::Token<'a>;
7058            type TopicList = (
7059                alloy_sol_types::sol_data::FixedBytes<32>,
7060                alloy::sol_types::sol_data::Address,
7061                alloy::sol_types::sol_data::Address,
7062            );
7063            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7064            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7065                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7066                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7067                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7068            ]);
7069            const ANONYMOUS: bool = false;
7070            #[allow(unused_variables)]
7071            #[inline]
7072            fn new(
7073                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7074                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7075            ) -> Self {
7076                Self {
7077                    previousOwner: topics.1,
7078                    newOwner: topics.2,
7079                }
7080            }
7081            #[inline]
7082            fn check_signature(
7083                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7084            ) -> alloy_sol_types::Result<()> {
7085                if topics.0 != Self::SIGNATURE_HASH {
7086                    return Err(
7087                        alloy_sol_types::Error::invalid_event_signature_hash(
7088                            Self::SIGNATURE,
7089                            topics.0,
7090                            Self::SIGNATURE_HASH,
7091                        ),
7092                    );
7093                }
7094                Ok(())
7095            }
7096            #[inline]
7097            fn tokenize_body(&self) -> Self::DataToken<'_> {
7098                ()
7099            }
7100            #[inline]
7101            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7102                (
7103                    Self::SIGNATURE_HASH.into(),
7104                    self.previousOwner.clone(),
7105                    self.newOwner.clone(),
7106                )
7107            }
7108            #[inline]
7109            fn encode_topics_raw(
7110                &self,
7111                out: &mut [alloy_sol_types::abi::token::WordToken],
7112            ) -> alloy_sol_types::Result<()> {
7113                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7114                    return Err(alloy_sol_types::Error::Overrun);
7115                }
7116                out[0usize] = alloy_sol_types::abi::token::WordToken(
7117                    Self::SIGNATURE_HASH,
7118                );
7119                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7120                    &self.previousOwner,
7121                );
7122                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7123                    &self.newOwner,
7124                );
7125                Ok(())
7126            }
7127        }
7128        #[automatically_derived]
7129        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7130            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7131                From::from(self)
7132            }
7133            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7134                From::from(&self)
7135            }
7136        }
7137        #[automatically_derived]
7138        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7139            #[inline]
7140            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7141                alloy_sol_types::SolEvent::encode_log_data(this)
7142            }
7143        }
7144    };
7145    #[derive(serde::Serialize, serde::Deserialize)]
7146    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7147    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7148```solidity
7149event PermissionedProverNotRequired();
7150```*/
7151    #[allow(
7152        non_camel_case_types,
7153        non_snake_case,
7154        clippy::pub_underscore_fields,
7155        clippy::style
7156    )]
7157    #[derive(Clone)]
7158    pub struct PermissionedProverNotRequired;
7159    #[allow(
7160        non_camel_case_types,
7161        non_snake_case,
7162        clippy::pub_underscore_fields,
7163        clippy::style
7164    )]
7165    const _: () = {
7166        use alloy::sol_types as alloy_sol_types;
7167        #[automatically_derived]
7168        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7169            type DataTuple<'a> = ();
7170            type DataToken<'a> = <Self::DataTuple<
7171                'a,
7172            > as alloy_sol_types::SolType>::Token<'a>;
7173            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7174            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7175            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7176                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7177                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7178                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7179            ]);
7180            const ANONYMOUS: bool = false;
7181            #[allow(unused_variables)]
7182            #[inline]
7183            fn new(
7184                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7185                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7186            ) -> Self {
7187                Self {}
7188            }
7189            #[inline]
7190            fn check_signature(
7191                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7192            ) -> alloy_sol_types::Result<()> {
7193                if topics.0 != Self::SIGNATURE_HASH {
7194                    return Err(
7195                        alloy_sol_types::Error::invalid_event_signature_hash(
7196                            Self::SIGNATURE,
7197                            topics.0,
7198                            Self::SIGNATURE_HASH,
7199                        ),
7200                    );
7201                }
7202                Ok(())
7203            }
7204            #[inline]
7205            fn tokenize_body(&self) -> Self::DataToken<'_> {
7206                ()
7207            }
7208            #[inline]
7209            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7210                (Self::SIGNATURE_HASH.into(),)
7211            }
7212            #[inline]
7213            fn encode_topics_raw(
7214                &self,
7215                out: &mut [alloy_sol_types::abi::token::WordToken],
7216            ) -> alloy_sol_types::Result<()> {
7217                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7218                    return Err(alloy_sol_types::Error::Overrun);
7219                }
7220                out[0usize] = alloy_sol_types::abi::token::WordToken(
7221                    Self::SIGNATURE_HASH,
7222                );
7223                Ok(())
7224            }
7225        }
7226        #[automatically_derived]
7227        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7228            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7229                From::from(self)
7230            }
7231            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7232                From::from(&self)
7233            }
7234        }
7235        #[automatically_derived]
7236        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7237            #[inline]
7238            fn from(
7239                this: &PermissionedProverNotRequired,
7240            ) -> alloy_sol_types::private::LogData {
7241                alloy_sol_types::SolEvent::encode_log_data(this)
7242            }
7243        }
7244    };
7245    #[derive(serde::Serialize, serde::Deserialize)]
7246    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7247    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7248```solidity
7249event PermissionedProverRequired(address permissionedProver);
7250```*/
7251    #[allow(
7252        non_camel_case_types,
7253        non_snake_case,
7254        clippy::pub_underscore_fields,
7255        clippy::style
7256    )]
7257    #[derive(Clone)]
7258    pub struct PermissionedProverRequired {
7259        #[allow(missing_docs)]
7260        pub permissionedProver: alloy::sol_types::private::Address,
7261    }
7262    #[allow(
7263        non_camel_case_types,
7264        non_snake_case,
7265        clippy::pub_underscore_fields,
7266        clippy::style
7267    )]
7268    const _: () = {
7269        use alloy::sol_types as alloy_sol_types;
7270        #[automatically_derived]
7271        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7272            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7273            type DataToken<'a> = <Self::DataTuple<
7274                'a,
7275            > as alloy_sol_types::SolType>::Token<'a>;
7276            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7277            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7278            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7279                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7280                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7281                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7282            ]);
7283            const ANONYMOUS: bool = false;
7284            #[allow(unused_variables)]
7285            #[inline]
7286            fn new(
7287                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7288                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7289            ) -> Self {
7290                Self { permissionedProver: data.0 }
7291            }
7292            #[inline]
7293            fn check_signature(
7294                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7295            ) -> alloy_sol_types::Result<()> {
7296                if topics.0 != Self::SIGNATURE_HASH {
7297                    return Err(
7298                        alloy_sol_types::Error::invalid_event_signature_hash(
7299                            Self::SIGNATURE,
7300                            topics.0,
7301                            Self::SIGNATURE_HASH,
7302                        ),
7303                    );
7304                }
7305                Ok(())
7306            }
7307            #[inline]
7308            fn tokenize_body(&self) -> Self::DataToken<'_> {
7309                (
7310                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7311                        &self.permissionedProver,
7312                    ),
7313                )
7314            }
7315            #[inline]
7316            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7317                (Self::SIGNATURE_HASH.into(),)
7318            }
7319            #[inline]
7320            fn encode_topics_raw(
7321                &self,
7322                out: &mut [alloy_sol_types::abi::token::WordToken],
7323            ) -> alloy_sol_types::Result<()> {
7324                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7325                    return Err(alloy_sol_types::Error::Overrun);
7326                }
7327                out[0usize] = alloy_sol_types::abi::token::WordToken(
7328                    Self::SIGNATURE_HASH,
7329                );
7330                Ok(())
7331            }
7332        }
7333        #[automatically_derived]
7334        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7335            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7336                From::from(self)
7337            }
7338            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7339                From::from(&self)
7340            }
7341        }
7342        #[automatically_derived]
7343        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7344            #[inline]
7345            fn from(
7346                this: &PermissionedProverRequired,
7347            ) -> alloy_sol_types::private::LogData {
7348                alloy_sol_types::SolEvent::encode_log_data(this)
7349            }
7350        }
7351    };
7352    #[derive(serde::Serialize, serde::Deserialize)]
7353    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7354    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7355```solidity
7356event Upgrade(address implementation);
7357```*/
7358    #[allow(
7359        non_camel_case_types,
7360        non_snake_case,
7361        clippy::pub_underscore_fields,
7362        clippy::style
7363    )]
7364    #[derive(Clone)]
7365    pub struct Upgrade {
7366        #[allow(missing_docs)]
7367        pub implementation: alloy::sol_types::private::Address,
7368    }
7369    #[allow(
7370        non_camel_case_types,
7371        non_snake_case,
7372        clippy::pub_underscore_fields,
7373        clippy::style
7374    )]
7375    const _: () = {
7376        use alloy::sol_types as alloy_sol_types;
7377        #[automatically_derived]
7378        impl alloy_sol_types::SolEvent for Upgrade {
7379            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7380            type DataToken<'a> = <Self::DataTuple<
7381                'a,
7382            > as alloy_sol_types::SolType>::Token<'a>;
7383            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7384            const SIGNATURE: &'static str = "Upgrade(address)";
7385            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7386                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7387                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7388                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7389            ]);
7390            const ANONYMOUS: bool = false;
7391            #[allow(unused_variables)]
7392            #[inline]
7393            fn new(
7394                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7395                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7396            ) -> Self {
7397                Self { implementation: data.0 }
7398            }
7399            #[inline]
7400            fn check_signature(
7401                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7402            ) -> alloy_sol_types::Result<()> {
7403                if topics.0 != Self::SIGNATURE_HASH {
7404                    return Err(
7405                        alloy_sol_types::Error::invalid_event_signature_hash(
7406                            Self::SIGNATURE,
7407                            topics.0,
7408                            Self::SIGNATURE_HASH,
7409                        ),
7410                    );
7411                }
7412                Ok(())
7413            }
7414            #[inline]
7415            fn tokenize_body(&self) -> Self::DataToken<'_> {
7416                (
7417                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7418                        &self.implementation,
7419                    ),
7420                )
7421            }
7422            #[inline]
7423            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7424                (Self::SIGNATURE_HASH.into(),)
7425            }
7426            #[inline]
7427            fn encode_topics_raw(
7428                &self,
7429                out: &mut [alloy_sol_types::abi::token::WordToken],
7430            ) -> alloy_sol_types::Result<()> {
7431                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7432                    return Err(alloy_sol_types::Error::Overrun);
7433                }
7434                out[0usize] = alloy_sol_types::abi::token::WordToken(
7435                    Self::SIGNATURE_HASH,
7436                );
7437                Ok(())
7438            }
7439        }
7440        #[automatically_derived]
7441        impl alloy_sol_types::private::IntoLogData for Upgrade {
7442            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7443                From::from(self)
7444            }
7445            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7446                From::from(&self)
7447            }
7448        }
7449        #[automatically_derived]
7450        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7451            #[inline]
7452            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7453                alloy_sol_types::SolEvent::encode_log_data(this)
7454            }
7455        }
7456    };
7457    #[derive(serde::Serialize, serde::Deserialize)]
7458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7459    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7460```solidity
7461event Upgraded(address indexed implementation);
7462```*/
7463    #[allow(
7464        non_camel_case_types,
7465        non_snake_case,
7466        clippy::pub_underscore_fields,
7467        clippy::style
7468    )]
7469    #[derive(Clone)]
7470    pub struct Upgraded {
7471        #[allow(missing_docs)]
7472        pub implementation: alloy::sol_types::private::Address,
7473    }
7474    #[allow(
7475        non_camel_case_types,
7476        non_snake_case,
7477        clippy::pub_underscore_fields,
7478        clippy::style
7479    )]
7480    const _: () = {
7481        use alloy::sol_types as alloy_sol_types;
7482        #[automatically_derived]
7483        impl alloy_sol_types::SolEvent for Upgraded {
7484            type DataTuple<'a> = ();
7485            type DataToken<'a> = <Self::DataTuple<
7486                'a,
7487            > as alloy_sol_types::SolType>::Token<'a>;
7488            type TopicList = (
7489                alloy_sol_types::sol_data::FixedBytes<32>,
7490                alloy::sol_types::sol_data::Address,
7491            );
7492            const SIGNATURE: &'static str = "Upgraded(address)";
7493            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7494                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7495                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7496                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7497            ]);
7498            const ANONYMOUS: bool = false;
7499            #[allow(unused_variables)]
7500            #[inline]
7501            fn new(
7502                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7503                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7504            ) -> Self {
7505                Self { implementation: topics.1 }
7506            }
7507            #[inline]
7508            fn check_signature(
7509                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7510            ) -> alloy_sol_types::Result<()> {
7511                if topics.0 != Self::SIGNATURE_HASH {
7512                    return Err(
7513                        alloy_sol_types::Error::invalid_event_signature_hash(
7514                            Self::SIGNATURE,
7515                            topics.0,
7516                            Self::SIGNATURE_HASH,
7517                        ),
7518                    );
7519                }
7520                Ok(())
7521            }
7522            #[inline]
7523            fn tokenize_body(&self) -> Self::DataToken<'_> {
7524                ()
7525            }
7526            #[inline]
7527            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7528                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7529            }
7530            #[inline]
7531            fn encode_topics_raw(
7532                &self,
7533                out: &mut [alloy_sol_types::abi::token::WordToken],
7534            ) -> alloy_sol_types::Result<()> {
7535                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7536                    return Err(alloy_sol_types::Error::Overrun);
7537                }
7538                out[0usize] = alloy_sol_types::abi::token::WordToken(
7539                    Self::SIGNATURE_HASH,
7540                );
7541                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7542                    &self.implementation,
7543                );
7544                Ok(())
7545            }
7546        }
7547        #[automatically_derived]
7548        impl alloy_sol_types::private::IntoLogData for Upgraded {
7549            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7550                From::from(self)
7551            }
7552            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7553                From::from(&self)
7554            }
7555        }
7556        #[automatically_derived]
7557        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7558            #[inline]
7559            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7560                alloy_sol_types::SolEvent::encode_log_data(this)
7561            }
7562        }
7563    };
7564    #[derive(serde::Serialize, serde::Deserialize)]
7565    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7566    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7567```solidity
7568function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7569```*/
7570    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7571    #[derive(Clone)]
7572    pub struct UPGRADE_INTERFACE_VERSIONCall;
7573    #[derive(serde::Serialize, serde::Deserialize)]
7574    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7575    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7576    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7577    #[derive(Clone)]
7578    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7579        #[allow(missing_docs)]
7580        pub _0: alloy::sol_types::private::String,
7581    }
7582    #[allow(
7583        non_camel_case_types,
7584        non_snake_case,
7585        clippy::pub_underscore_fields,
7586        clippy::style
7587    )]
7588    const _: () = {
7589        use alloy::sol_types as alloy_sol_types;
7590        {
7591            #[doc(hidden)]
7592            #[allow(dead_code)]
7593            type UnderlyingSolTuple<'a> = ();
7594            #[doc(hidden)]
7595            type UnderlyingRustTuple<'a> = ();
7596            #[cfg(test)]
7597            #[allow(dead_code, unreachable_patterns)]
7598            fn _type_assertion(
7599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7600            ) {
7601                match _t {
7602                    alloy_sol_types::private::AssertTypeEq::<
7603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7604                    >(_) => {}
7605                }
7606            }
7607            #[automatically_derived]
7608            #[doc(hidden)]
7609            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7610            for UnderlyingRustTuple<'_> {
7611                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7612                    ()
7613                }
7614            }
7615            #[automatically_derived]
7616            #[doc(hidden)]
7617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7618            for UPGRADE_INTERFACE_VERSIONCall {
7619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7620                    Self
7621                }
7622            }
7623        }
7624        {
7625            #[doc(hidden)]
7626            #[allow(dead_code)]
7627            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7628            #[doc(hidden)]
7629            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7630            #[cfg(test)]
7631            #[allow(dead_code, unreachable_patterns)]
7632            fn _type_assertion(
7633                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7634            ) {
7635                match _t {
7636                    alloy_sol_types::private::AssertTypeEq::<
7637                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7638                    >(_) => {}
7639                }
7640            }
7641            #[automatically_derived]
7642            #[doc(hidden)]
7643            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7644            for UnderlyingRustTuple<'_> {
7645                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7646                    (value._0,)
7647                }
7648            }
7649            #[automatically_derived]
7650            #[doc(hidden)]
7651            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7652            for UPGRADE_INTERFACE_VERSIONReturn {
7653                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7654                    Self { _0: tuple.0 }
7655                }
7656            }
7657        }
7658        #[automatically_derived]
7659        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7660            type Parameters<'a> = ();
7661            type Token<'a> = <Self::Parameters<
7662                'a,
7663            > as alloy_sol_types::SolType>::Token<'a>;
7664            type Return = alloy::sol_types::private::String;
7665            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7666            type ReturnToken<'a> = <Self::ReturnTuple<
7667                'a,
7668            > as alloy_sol_types::SolType>::Token<'a>;
7669            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7670            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7671            #[inline]
7672            fn new<'a>(
7673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7674            ) -> Self {
7675                tuple.into()
7676            }
7677            #[inline]
7678            fn tokenize(&self) -> Self::Token<'_> {
7679                ()
7680            }
7681            #[inline]
7682            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7683                (
7684                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7685                        ret,
7686                    ),
7687                )
7688            }
7689            #[inline]
7690            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7691                <Self::ReturnTuple<
7692                    '_,
7693                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7694                    .map(|r| {
7695                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7696                        r._0
7697                    })
7698            }
7699            #[inline]
7700            fn abi_decode_returns_validate(
7701                data: &[u8],
7702            ) -> alloy_sol_types::Result<Self::Return> {
7703                <Self::ReturnTuple<
7704                    '_,
7705                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7706                    .map(|r| {
7707                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7708                        r._0
7709                    })
7710            }
7711        }
7712    };
7713    #[derive(serde::Serialize, serde::Deserialize)]
7714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7715    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7716```solidity
7717function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7718```*/
7719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7720    #[derive(Clone)]
7721    pub struct _getVkCall;
7722    #[derive(serde::Serialize, serde::Deserialize)]
7723    #[derive()]
7724    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7725    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7726    #[derive(Clone)]
7727    pub struct _getVkReturn {
7728        #[allow(missing_docs)]
7729        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7730    }
7731    #[allow(
7732        non_camel_case_types,
7733        non_snake_case,
7734        clippy::pub_underscore_fields,
7735        clippy::style
7736    )]
7737    const _: () = {
7738        use alloy::sol_types as alloy_sol_types;
7739        {
7740            #[doc(hidden)]
7741            #[allow(dead_code)]
7742            type UnderlyingSolTuple<'a> = ();
7743            #[doc(hidden)]
7744            type UnderlyingRustTuple<'a> = ();
7745            #[cfg(test)]
7746            #[allow(dead_code, unreachable_patterns)]
7747            fn _type_assertion(
7748                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7749            ) {
7750                match _t {
7751                    alloy_sol_types::private::AssertTypeEq::<
7752                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7753                    >(_) => {}
7754                }
7755            }
7756            #[automatically_derived]
7757            #[doc(hidden)]
7758            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7759                fn from(value: _getVkCall) -> Self {
7760                    ()
7761                }
7762            }
7763            #[automatically_derived]
7764            #[doc(hidden)]
7765            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7766                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7767                    Self
7768                }
7769            }
7770        }
7771        {
7772            #[doc(hidden)]
7773            #[allow(dead_code)]
7774            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7775            #[doc(hidden)]
7776            type UnderlyingRustTuple<'a> = (
7777                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7778            );
7779            #[cfg(test)]
7780            #[allow(dead_code, unreachable_patterns)]
7781            fn _type_assertion(
7782                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7783            ) {
7784                match _t {
7785                    alloy_sol_types::private::AssertTypeEq::<
7786                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7787                    >(_) => {}
7788                }
7789            }
7790            #[automatically_derived]
7791            #[doc(hidden)]
7792            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7793                fn from(value: _getVkReturn) -> Self {
7794                    (value.vk,)
7795                }
7796            }
7797            #[automatically_derived]
7798            #[doc(hidden)]
7799            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7800                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7801                    Self { vk: tuple.0 }
7802                }
7803            }
7804        }
7805        #[automatically_derived]
7806        impl alloy_sol_types::SolCall for _getVkCall {
7807            type Parameters<'a> = ();
7808            type Token<'a> = <Self::Parameters<
7809                'a,
7810            > as alloy_sol_types::SolType>::Token<'a>;
7811            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7812            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7813            type ReturnToken<'a> = <Self::ReturnTuple<
7814                'a,
7815            > as alloy_sol_types::SolType>::Token<'a>;
7816            const SIGNATURE: &'static str = "_getVk()";
7817            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7818            #[inline]
7819            fn new<'a>(
7820                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7821            ) -> Self {
7822                tuple.into()
7823            }
7824            #[inline]
7825            fn tokenize(&self) -> Self::Token<'_> {
7826                ()
7827            }
7828            #[inline]
7829            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7830                (
7831                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7832                        ret,
7833                    ),
7834                )
7835            }
7836            #[inline]
7837            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7838                <Self::ReturnTuple<
7839                    '_,
7840                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7841                    .map(|r| {
7842                        let r: _getVkReturn = r.into();
7843                        r.vk
7844                    })
7845            }
7846            #[inline]
7847            fn abi_decode_returns_validate(
7848                data: &[u8],
7849            ) -> alloy_sol_types::Result<Self::Return> {
7850                <Self::ReturnTuple<
7851                    '_,
7852                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7853                    .map(|r| {
7854                        let r: _getVkReturn = r.into();
7855                        r.vk
7856                    })
7857            }
7858        }
7859    };
7860    #[derive(serde::Serialize, serde::Deserialize)]
7861    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7862    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7863```solidity
7864function blocksPerEpoch() external view returns (uint64);
7865```*/
7866    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7867    #[derive(Clone)]
7868    pub struct blocksPerEpochCall;
7869    #[derive(serde::Serialize, serde::Deserialize)]
7870    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7871    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7872    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7873    #[derive(Clone)]
7874    pub struct blocksPerEpochReturn {
7875        #[allow(missing_docs)]
7876        pub _0: u64,
7877    }
7878    #[allow(
7879        non_camel_case_types,
7880        non_snake_case,
7881        clippy::pub_underscore_fields,
7882        clippy::style
7883    )]
7884    const _: () = {
7885        use alloy::sol_types as alloy_sol_types;
7886        {
7887            #[doc(hidden)]
7888            #[allow(dead_code)]
7889            type UnderlyingSolTuple<'a> = ();
7890            #[doc(hidden)]
7891            type UnderlyingRustTuple<'a> = ();
7892            #[cfg(test)]
7893            #[allow(dead_code, unreachable_patterns)]
7894            fn _type_assertion(
7895                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7896            ) {
7897                match _t {
7898                    alloy_sol_types::private::AssertTypeEq::<
7899                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7900                    >(_) => {}
7901                }
7902            }
7903            #[automatically_derived]
7904            #[doc(hidden)]
7905            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7906                fn from(value: blocksPerEpochCall) -> Self {
7907                    ()
7908                }
7909            }
7910            #[automatically_derived]
7911            #[doc(hidden)]
7912            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7913                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7914                    Self
7915                }
7916            }
7917        }
7918        {
7919            #[doc(hidden)]
7920            #[allow(dead_code)]
7921            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7922            #[doc(hidden)]
7923            type UnderlyingRustTuple<'a> = (u64,);
7924            #[cfg(test)]
7925            #[allow(dead_code, unreachable_patterns)]
7926            fn _type_assertion(
7927                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7928            ) {
7929                match _t {
7930                    alloy_sol_types::private::AssertTypeEq::<
7931                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7932                    >(_) => {}
7933                }
7934            }
7935            #[automatically_derived]
7936            #[doc(hidden)]
7937            impl ::core::convert::From<blocksPerEpochReturn>
7938            for UnderlyingRustTuple<'_> {
7939                fn from(value: blocksPerEpochReturn) -> Self {
7940                    (value._0,)
7941                }
7942            }
7943            #[automatically_derived]
7944            #[doc(hidden)]
7945            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7946            for blocksPerEpochReturn {
7947                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7948                    Self { _0: tuple.0 }
7949                }
7950            }
7951        }
7952        #[automatically_derived]
7953        impl alloy_sol_types::SolCall for blocksPerEpochCall {
7954            type Parameters<'a> = ();
7955            type Token<'a> = <Self::Parameters<
7956                'a,
7957            > as alloy_sol_types::SolType>::Token<'a>;
7958            type Return = u64;
7959            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7960            type ReturnToken<'a> = <Self::ReturnTuple<
7961                'a,
7962            > as alloy_sol_types::SolType>::Token<'a>;
7963            const SIGNATURE: &'static str = "blocksPerEpoch()";
7964            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
7965            #[inline]
7966            fn new<'a>(
7967                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7968            ) -> Self {
7969                tuple.into()
7970            }
7971            #[inline]
7972            fn tokenize(&self) -> Self::Token<'_> {
7973                ()
7974            }
7975            #[inline]
7976            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7977                (
7978                    <alloy::sol_types::sol_data::Uint<
7979                        64,
7980                    > as alloy_sol_types::SolType>::tokenize(ret),
7981                )
7982            }
7983            #[inline]
7984            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7985                <Self::ReturnTuple<
7986                    '_,
7987                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7988                    .map(|r| {
7989                        let r: blocksPerEpochReturn = r.into();
7990                        r._0
7991                    })
7992            }
7993            #[inline]
7994            fn abi_decode_returns_validate(
7995                data: &[u8],
7996            ) -> alloy_sol_types::Result<Self::Return> {
7997                <Self::ReturnTuple<
7998                    '_,
7999                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8000                    .map(|r| {
8001                        let r: blocksPerEpochReturn = r.into();
8002                        r._0
8003                    })
8004            }
8005        }
8006    };
8007    #[derive(serde::Serialize, serde::Deserialize)]
8008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8009    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8010```solidity
8011function currentBlockNumber() external view returns (uint256);
8012```*/
8013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8014    #[derive(Clone)]
8015    pub struct currentBlockNumberCall;
8016    #[derive(serde::Serialize, serde::Deserialize)]
8017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8018    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8019    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8020    #[derive(Clone)]
8021    pub struct currentBlockNumberReturn {
8022        #[allow(missing_docs)]
8023        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8024    }
8025    #[allow(
8026        non_camel_case_types,
8027        non_snake_case,
8028        clippy::pub_underscore_fields,
8029        clippy::style
8030    )]
8031    const _: () = {
8032        use alloy::sol_types as alloy_sol_types;
8033        {
8034            #[doc(hidden)]
8035            #[allow(dead_code)]
8036            type UnderlyingSolTuple<'a> = ();
8037            #[doc(hidden)]
8038            type UnderlyingRustTuple<'a> = ();
8039            #[cfg(test)]
8040            #[allow(dead_code, unreachable_patterns)]
8041            fn _type_assertion(
8042                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8043            ) {
8044                match _t {
8045                    alloy_sol_types::private::AssertTypeEq::<
8046                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8047                    >(_) => {}
8048                }
8049            }
8050            #[automatically_derived]
8051            #[doc(hidden)]
8052            impl ::core::convert::From<currentBlockNumberCall>
8053            for UnderlyingRustTuple<'_> {
8054                fn from(value: currentBlockNumberCall) -> Self {
8055                    ()
8056                }
8057            }
8058            #[automatically_derived]
8059            #[doc(hidden)]
8060            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8061            for currentBlockNumberCall {
8062                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8063                    Self
8064                }
8065            }
8066        }
8067        {
8068            #[doc(hidden)]
8069            #[allow(dead_code)]
8070            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8071            #[doc(hidden)]
8072            type UnderlyingRustTuple<'a> = (
8073                alloy::sol_types::private::primitives::aliases::U256,
8074            );
8075            #[cfg(test)]
8076            #[allow(dead_code, unreachable_patterns)]
8077            fn _type_assertion(
8078                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8079            ) {
8080                match _t {
8081                    alloy_sol_types::private::AssertTypeEq::<
8082                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8083                    >(_) => {}
8084                }
8085            }
8086            #[automatically_derived]
8087            #[doc(hidden)]
8088            impl ::core::convert::From<currentBlockNumberReturn>
8089            for UnderlyingRustTuple<'_> {
8090                fn from(value: currentBlockNumberReturn) -> Self {
8091                    (value._0,)
8092                }
8093            }
8094            #[automatically_derived]
8095            #[doc(hidden)]
8096            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8097            for currentBlockNumberReturn {
8098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8099                    Self { _0: tuple.0 }
8100                }
8101            }
8102        }
8103        #[automatically_derived]
8104        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8105            type Parameters<'a> = ();
8106            type Token<'a> = <Self::Parameters<
8107                'a,
8108            > as alloy_sol_types::SolType>::Token<'a>;
8109            type Return = alloy::sol_types::private::primitives::aliases::U256;
8110            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8111            type ReturnToken<'a> = <Self::ReturnTuple<
8112                'a,
8113            > as alloy_sol_types::SolType>::Token<'a>;
8114            const SIGNATURE: &'static str = "currentBlockNumber()";
8115            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8116            #[inline]
8117            fn new<'a>(
8118                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8119            ) -> Self {
8120                tuple.into()
8121            }
8122            #[inline]
8123            fn tokenize(&self) -> Self::Token<'_> {
8124                ()
8125            }
8126            #[inline]
8127            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8128                (
8129                    <alloy::sol_types::sol_data::Uint<
8130                        256,
8131                    > as alloy_sol_types::SolType>::tokenize(ret),
8132                )
8133            }
8134            #[inline]
8135            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8136                <Self::ReturnTuple<
8137                    '_,
8138                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8139                    .map(|r| {
8140                        let r: currentBlockNumberReturn = r.into();
8141                        r._0
8142                    })
8143            }
8144            #[inline]
8145            fn abi_decode_returns_validate(
8146                data: &[u8],
8147            ) -> alloy_sol_types::Result<Self::Return> {
8148                <Self::ReturnTuple<
8149                    '_,
8150                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8151                    .map(|r| {
8152                        let r: currentBlockNumberReturn = r.into();
8153                        r._0
8154                    })
8155            }
8156        }
8157    };
8158    #[derive(serde::Serialize, serde::Deserialize)]
8159    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8160    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8161```solidity
8162function currentEpoch() external view returns (uint64);
8163```*/
8164    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8165    #[derive(Clone)]
8166    pub struct currentEpochCall;
8167    #[derive(serde::Serialize, serde::Deserialize)]
8168    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8169    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8170    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8171    #[derive(Clone)]
8172    pub struct currentEpochReturn {
8173        #[allow(missing_docs)]
8174        pub _0: u64,
8175    }
8176    #[allow(
8177        non_camel_case_types,
8178        non_snake_case,
8179        clippy::pub_underscore_fields,
8180        clippy::style
8181    )]
8182    const _: () = {
8183        use alloy::sol_types as alloy_sol_types;
8184        {
8185            #[doc(hidden)]
8186            #[allow(dead_code)]
8187            type UnderlyingSolTuple<'a> = ();
8188            #[doc(hidden)]
8189            type UnderlyingRustTuple<'a> = ();
8190            #[cfg(test)]
8191            #[allow(dead_code, unreachable_patterns)]
8192            fn _type_assertion(
8193                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8194            ) {
8195                match _t {
8196                    alloy_sol_types::private::AssertTypeEq::<
8197                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8198                    >(_) => {}
8199                }
8200            }
8201            #[automatically_derived]
8202            #[doc(hidden)]
8203            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8204                fn from(value: currentEpochCall) -> Self {
8205                    ()
8206                }
8207            }
8208            #[automatically_derived]
8209            #[doc(hidden)]
8210            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8211                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8212                    Self
8213                }
8214            }
8215        }
8216        {
8217            #[doc(hidden)]
8218            #[allow(dead_code)]
8219            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8220            #[doc(hidden)]
8221            type UnderlyingRustTuple<'a> = (u64,);
8222            #[cfg(test)]
8223            #[allow(dead_code, unreachable_patterns)]
8224            fn _type_assertion(
8225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8226            ) {
8227                match _t {
8228                    alloy_sol_types::private::AssertTypeEq::<
8229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8230                    >(_) => {}
8231                }
8232            }
8233            #[automatically_derived]
8234            #[doc(hidden)]
8235            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8236                fn from(value: currentEpochReturn) -> Self {
8237                    (value._0,)
8238                }
8239            }
8240            #[automatically_derived]
8241            #[doc(hidden)]
8242            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8243                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8244                    Self { _0: tuple.0 }
8245                }
8246            }
8247        }
8248        #[automatically_derived]
8249        impl alloy_sol_types::SolCall for currentEpochCall {
8250            type Parameters<'a> = ();
8251            type Token<'a> = <Self::Parameters<
8252                'a,
8253            > as alloy_sol_types::SolType>::Token<'a>;
8254            type Return = u64;
8255            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8256            type ReturnToken<'a> = <Self::ReturnTuple<
8257                'a,
8258            > as alloy_sol_types::SolType>::Token<'a>;
8259            const SIGNATURE: &'static str = "currentEpoch()";
8260            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8261            #[inline]
8262            fn new<'a>(
8263                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8264            ) -> Self {
8265                tuple.into()
8266            }
8267            #[inline]
8268            fn tokenize(&self) -> Self::Token<'_> {
8269                ()
8270            }
8271            #[inline]
8272            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8273                (
8274                    <alloy::sol_types::sol_data::Uint<
8275                        64,
8276                    > as alloy_sol_types::SolType>::tokenize(ret),
8277                )
8278            }
8279            #[inline]
8280            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8281                <Self::ReturnTuple<
8282                    '_,
8283                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8284                    .map(|r| {
8285                        let r: currentEpochReturn = r.into();
8286                        r._0
8287                    })
8288            }
8289            #[inline]
8290            fn abi_decode_returns_validate(
8291                data: &[u8],
8292            ) -> alloy_sol_types::Result<Self::Return> {
8293                <Self::ReturnTuple<
8294                    '_,
8295                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8296                    .map(|r| {
8297                        let r: currentEpochReturn = r.into();
8298                        r._0
8299                    })
8300            }
8301        }
8302    };
8303    #[derive(serde::Serialize, serde::Deserialize)]
8304    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8305    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8306```solidity
8307function disablePermissionedProverMode() external;
8308```*/
8309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8310    #[derive(Clone)]
8311    pub struct disablePermissionedProverModeCall;
8312    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8313    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8314    #[derive(Clone)]
8315    pub struct disablePermissionedProverModeReturn {}
8316    #[allow(
8317        non_camel_case_types,
8318        non_snake_case,
8319        clippy::pub_underscore_fields,
8320        clippy::style
8321    )]
8322    const _: () = {
8323        use alloy::sol_types as alloy_sol_types;
8324        {
8325            #[doc(hidden)]
8326            #[allow(dead_code)]
8327            type UnderlyingSolTuple<'a> = ();
8328            #[doc(hidden)]
8329            type UnderlyingRustTuple<'a> = ();
8330            #[cfg(test)]
8331            #[allow(dead_code, unreachable_patterns)]
8332            fn _type_assertion(
8333                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8334            ) {
8335                match _t {
8336                    alloy_sol_types::private::AssertTypeEq::<
8337                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8338                    >(_) => {}
8339                }
8340            }
8341            #[automatically_derived]
8342            #[doc(hidden)]
8343            impl ::core::convert::From<disablePermissionedProverModeCall>
8344            for UnderlyingRustTuple<'_> {
8345                fn from(value: disablePermissionedProverModeCall) -> Self {
8346                    ()
8347                }
8348            }
8349            #[automatically_derived]
8350            #[doc(hidden)]
8351            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8352            for disablePermissionedProverModeCall {
8353                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8354                    Self
8355                }
8356            }
8357        }
8358        {
8359            #[doc(hidden)]
8360            #[allow(dead_code)]
8361            type UnderlyingSolTuple<'a> = ();
8362            #[doc(hidden)]
8363            type UnderlyingRustTuple<'a> = ();
8364            #[cfg(test)]
8365            #[allow(dead_code, unreachable_patterns)]
8366            fn _type_assertion(
8367                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8368            ) {
8369                match _t {
8370                    alloy_sol_types::private::AssertTypeEq::<
8371                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8372                    >(_) => {}
8373                }
8374            }
8375            #[automatically_derived]
8376            #[doc(hidden)]
8377            impl ::core::convert::From<disablePermissionedProverModeReturn>
8378            for UnderlyingRustTuple<'_> {
8379                fn from(value: disablePermissionedProverModeReturn) -> Self {
8380                    ()
8381                }
8382            }
8383            #[automatically_derived]
8384            #[doc(hidden)]
8385            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8386            for disablePermissionedProverModeReturn {
8387                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8388                    Self {}
8389                }
8390            }
8391        }
8392        impl disablePermissionedProverModeReturn {
8393            fn _tokenize(
8394                &self,
8395            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8396                '_,
8397            > {
8398                ()
8399            }
8400        }
8401        #[automatically_derived]
8402        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8403            type Parameters<'a> = ();
8404            type Token<'a> = <Self::Parameters<
8405                'a,
8406            > as alloy_sol_types::SolType>::Token<'a>;
8407            type Return = disablePermissionedProverModeReturn;
8408            type ReturnTuple<'a> = ();
8409            type ReturnToken<'a> = <Self::ReturnTuple<
8410                'a,
8411            > as alloy_sol_types::SolType>::Token<'a>;
8412            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8413            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8414            #[inline]
8415            fn new<'a>(
8416                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8417            ) -> Self {
8418                tuple.into()
8419            }
8420            #[inline]
8421            fn tokenize(&self) -> Self::Token<'_> {
8422                ()
8423            }
8424            #[inline]
8425            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8426                disablePermissionedProverModeReturn::_tokenize(ret)
8427            }
8428            #[inline]
8429            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8430                <Self::ReturnTuple<
8431                    '_,
8432                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8433                    .map(Into::into)
8434            }
8435            #[inline]
8436            fn abi_decode_returns_validate(
8437                data: &[u8],
8438            ) -> alloy_sol_types::Result<Self::Return> {
8439                <Self::ReturnTuple<
8440                    '_,
8441                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8442                    .map(Into::into)
8443            }
8444        }
8445    };
8446    #[derive(serde::Serialize, serde::Deserialize)]
8447    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8448    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8449```solidity
8450function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8451```*/
8452    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8453    #[derive(Clone)]
8454    pub struct epochFromBlockNumberCall {
8455        #[allow(missing_docs)]
8456        pub _blockNum: u64,
8457        #[allow(missing_docs)]
8458        pub _blocksPerEpoch: u64,
8459    }
8460    #[derive(serde::Serialize, serde::Deserialize)]
8461    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8462    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8463    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8464    #[derive(Clone)]
8465    pub struct epochFromBlockNumberReturn {
8466        #[allow(missing_docs)]
8467        pub _0: u64,
8468    }
8469    #[allow(
8470        non_camel_case_types,
8471        non_snake_case,
8472        clippy::pub_underscore_fields,
8473        clippy::style
8474    )]
8475    const _: () = {
8476        use alloy::sol_types as alloy_sol_types;
8477        {
8478            #[doc(hidden)]
8479            #[allow(dead_code)]
8480            type UnderlyingSolTuple<'a> = (
8481                alloy::sol_types::sol_data::Uint<64>,
8482                alloy::sol_types::sol_data::Uint<64>,
8483            );
8484            #[doc(hidden)]
8485            type UnderlyingRustTuple<'a> = (u64, u64);
8486            #[cfg(test)]
8487            #[allow(dead_code, unreachable_patterns)]
8488            fn _type_assertion(
8489                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8490            ) {
8491                match _t {
8492                    alloy_sol_types::private::AssertTypeEq::<
8493                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8494                    >(_) => {}
8495                }
8496            }
8497            #[automatically_derived]
8498            #[doc(hidden)]
8499            impl ::core::convert::From<epochFromBlockNumberCall>
8500            for UnderlyingRustTuple<'_> {
8501                fn from(value: epochFromBlockNumberCall) -> Self {
8502                    (value._blockNum, value._blocksPerEpoch)
8503                }
8504            }
8505            #[automatically_derived]
8506            #[doc(hidden)]
8507            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8508            for epochFromBlockNumberCall {
8509                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8510                    Self {
8511                        _blockNum: tuple.0,
8512                        _blocksPerEpoch: tuple.1,
8513                    }
8514                }
8515            }
8516        }
8517        {
8518            #[doc(hidden)]
8519            #[allow(dead_code)]
8520            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8521            #[doc(hidden)]
8522            type UnderlyingRustTuple<'a> = (u64,);
8523            #[cfg(test)]
8524            #[allow(dead_code, unreachable_patterns)]
8525            fn _type_assertion(
8526                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8527            ) {
8528                match _t {
8529                    alloy_sol_types::private::AssertTypeEq::<
8530                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8531                    >(_) => {}
8532                }
8533            }
8534            #[automatically_derived]
8535            #[doc(hidden)]
8536            impl ::core::convert::From<epochFromBlockNumberReturn>
8537            for UnderlyingRustTuple<'_> {
8538                fn from(value: epochFromBlockNumberReturn) -> Self {
8539                    (value._0,)
8540                }
8541            }
8542            #[automatically_derived]
8543            #[doc(hidden)]
8544            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8545            for epochFromBlockNumberReturn {
8546                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8547                    Self { _0: tuple.0 }
8548                }
8549            }
8550        }
8551        #[automatically_derived]
8552        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8553            type Parameters<'a> = (
8554                alloy::sol_types::sol_data::Uint<64>,
8555                alloy::sol_types::sol_data::Uint<64>,
8556            );
8557            type Token<'a> = <Self::Parameters<
8558                'a,
8559            > as alloy_sol_types::SolType>::Token<'a>;
8560            type Return = u64;
8561            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8562            type ReturnToken<'a> = <Self::ReturnTuple<
8563                'a,
8564            > as alloy_sol_types::SolType>::Token<'a>;
8565            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8566            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8567            #[inline]
8568            fn new<'a>(
8569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8570            ) -> Self {
8571                tuple.into()
8572            }
8573            #[inline]
8574            fn tokenize(&self) -> Self::Token<'_> {
8575                (
8576                    <alloy::sol_types::sol_data::Uint<
8577                        64,
8578                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8579                    <alloy::sol_types::sol_data::Uint<
8580                        64,
8581                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8582                )
8583            }
8584            #[inline]
8585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8586                (
8587                    <alloy::sol_types::sol_data::Uint<
8588                        64,
8589                    > as alloy_sol_types::SolType>::tokenize(ret),
8590                )
8591            }
8592            #[inline]
8593            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8594                <Self::ReturnTuple<
8595                    '_,
8596                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8597                    .map(|r| {
8598                        let r: epochFromBlockNumberReturn = r.into();
8599                        r._0
8600                    })
8601            }
8602            #[inline]
8603            fn abi_decode_returns_validate(
8604                data: &[u8],
8605            ) -> alloy_sol_types::Result<Self::Return> {
8606                <Self::ReturnTuple<
8607                    '_,
8608                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8609                    .map(|r| {
8610                        let r: epochFromBlockNumberReturn = r.into();
8611                        r._0
8612                    })
8613            }
8614        }
8615    };
8616    #[derive(serde::Serialize, serde::Deserialize)]
8617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8618    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8619```solidity
8620function epochStartBlock() external view returns (uint64);
8621```*/
8622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8623    #[derive(Clone)]
8624    pub struct epochStartBlockCall;
8625    #[derive(serde::Serialize, serde::Deserialize)]
8626    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8627    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8628    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8629    #[derive(Clone)]
8630    pub struct epochStartBlockReturn {
8631        #[allow(missing_docs)]
8632        pub _0: u64,
8633    }
8634    #[allow(
8635        non_camel_case_types,
8636        non_snake_case,
8637        clippy::pub_underscore_fields,
8638        clippy::style
8639    )]
8640    const _: () = {
8641        use alloy::sol_types as alloy_sol_types;
8642        {
8643            #[doc(hidden)]
8644            #[allow(dead_code)]
8645            type UnderlyingSolTuple<'a> = ();
8646            #[doc(hidden)]
8647            type UnderlyingRustTuple<'a> = ();
8648            #[cfg(test)]
8649            #[allow(dead_code, unreachable_patterns)]
8650            fn _type_assertion(
8651                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8652            ) {
8653                match _t {
8654                    alloy_sol_types::private::AssertTypeEq::<
8655                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8656                    >(_) => {}
8657                }
8658            }
8659            #[automatically_derived]
8660            #[doc(hidden)]
8661            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8662                fn from(value: epochStartBlockCall) -> Self {
8663                    ()
8664                }
8665            }
8666            #[automatically_derived]
8667            #[doc(hidden)]
8668            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8669                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8670                    Self
8671                }
8672            }
8673        }
8674        {
8675            #[doc(hidden)]
8676            #[allow(dead_code)]
8677            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8678            #[doc(hidden)]
8679            type UnderlyingRustTuple<'a> = (u64,);
8680            #[cfg(test)]
8681            #[allow(dead_code, unreachable_patterns)]
8682            fn _type_assertion(
8683                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8684            ) {
8685                match _t {
8686                    alloy_sol_types::private::AssertTypeEq::<
8687                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8688                    >(_) => {}
8689                }
8690            }
8691            #[automatically_derived]
8692            #[doc(hidden)]
8693            impl ::core::convert::From<epochStartBlockReturn>
8694            for UnderlyingRustTuple<'_> {
8695                fn from(value: epochStartBlockReturn) -> Self {
8696                    (value._0,)
8697                }
8698            }
8699            #[automatically_derived]
8700            #[doc(hidden)]
8701            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8702            for epochStartBlockReturn {
8703                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8704                    Self { _0: tuple.0 }
8705                }
8706            }
8707        }
8708        #[automatically_derived]
8709        impl alloy_sol_types::SolCall for epochStartBlockCall {
8710            type Parameters<'a> = ();
8711            type Token<'a> = <Self::Parameters<
8712                'a,
8713            > as alloy_sol_types::SolType>::Token<'a>;
8714            type Return = u64;
8715            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8716            type ReturnToken<'a> = <Self::ReturnTuple<
8717                'a,
8718            > as alloy_sol_types::SolType>::Token<'a>;
8719            const SIGNATURE: &'static str = "epochStartBlock()";
8720            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8721            #[inline]
8722            fn new<'a>(
8723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8724            ) -> Self {
8725                tuple.into()
8726            }
8727            #[inline]
8728            fn tokenize(&self) -> Self::Token<'_> {
8729                ()
8730            }
8731            #[inline]
8732            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8733                (
8734                    <alloy::sol_types::sol_data::Uint<
8735                        64,
8736                    > as alloy_sol_types::SolType>::tokenize(ret),
8737                )
8738            }
8739            #[inline]
8740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8741                <Self::ReturnTuple<
8742                    '_,
8743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8744                    .map(|r| {
8745                        let r: epochStartBlockReturn = r.into();
8746                        r._0
8747                    })
8748            }
8749            #[inline]
8750            fn abi_decode_returns_validate(
8751                data: &[u8],
8752            ) -> alloy_sol_types::Result<Self::Return> {
8753                <Self::ReturnTuple<
8754                    '_,
8755                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8756                    .map(|r| {
8757                        let r: epochStartBlockReturn = r.into();
8758                        r._0
8759                    })
8760            }
8761        }
8762    };
8763    #[derive(serde::Serialize, serde::Deserialize)]
8764    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8765    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8766```solidity
8767function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8768```*/
8769    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8770    #[derive(Clone)]
8771    pub struct finalizedStateCall;
8772    #[derive(serde::Serialize, serde::Deserialize)]
8773    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8774    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8776    #[derive(Clone)]
8777    pub struct finalizedStateReturn {
8778        #[allow(missing_docs)]
8779        pub viewNum: u64,
8780        #[allow(missing_docs)]
8781        pub blockHeight: u64,
8782        #[allow(missing_docs)]
8783        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8784    }
8785    #[allow(
8786        non_camel_case_types,
8787        non_snake_case,
8788        clippy::pub_underscore_fields,
8789        clippy::style
8790    )]
8791    const _: () = {
8792        use alloy::sol_types as alloy_sol_types;
8793        {
8794            #[doc(hidden)]
8795            #[allow(dead_code)]
8796            type UnderlyingSolTuple<'a> = ();
8797            #[doc(hidden)]
8798            type UnderlyingRustTuple<'a> = ();
8799            #[cfg(test)]
8800            #[allow(dead_code, unreachable_patterns)]
8801            fn _type_assertion(
8802                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8803            ) {
8804                match _t {
8805                    alloy_sol_types::private::AssertTypeEq::<
8806                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8807                    >(_) => {}
8808                }
8809            }
8810            #[automatically_derived]
8811            #[doc(hidden)]
8812            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8813                fn from(value: finalizedStateCall) -> Self {
8814                    ()
8815                }
8816            }
8817            #[automatically_derived]
8818            #[doc(hidden)]
8819            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8820                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8821                    Self
8822                }
8823            }
8824        }
8825        {
8826            #[doc(hidden)]
8827            #[allow(dead_code)]
8828            type UnderlyingSolTuple<'a> = (
8829                alloy::sol_types::sol_data::Uint<64>,
8830                alloy::sol_types::sol_data::Uint<64>,
8831                BN254::ScalarField,
8832            );
8833            #[doc(hidden)]
8834            type UnderlyingRustTuple<'a> = (
8835                u64,
8836                u64,
8837                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8838            );
8839            #[cfg(test)]
8840            #[allow(dead_code, unreachable_patterns)]
8841            fn _type_assertion(
8842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8843            ) {
8844                match _t {
8845                    alloy_sol_types::private::AssertTypeEq::<
8846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8847                    >(_) => {}
8848                }
8849            }
8850            #[automatically_derived]
8851            #[doc(hidden)]
8852            impl ::core::convert::From<finalizedStateReturn>
8853            for UnderlyingRustTuple<'_> {
8854                fn from(value: finalizedStateReturn) -> Self {
8855                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8856                }
8857            }
8858            #[automatically_derived]
8859            #[doc(hidden)]
8860            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8861            for finalizedStateReturn {
8862                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8863                    Self {
8864                        viewNum: tuple.0,
8865                        blockHeight: tuple.1,
8866                        blockCommRoot: tuple.2,
8867                    }
8868                }
8869            }
8870        }
8871        impl finalizedStateReturn {
8872            fn _tokenize(
8873                &self,
8874            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8875                (
8876                    <alloy::sol_types::sol_data::Uint<
8877                        64,
8878                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8879                    <alloy::sol_types::sol_data::Uint<
8880                        64,
8881                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8883                        &self.blockCommRoot,
8884                    ),
8885                )
8886            }
8887        }
8888        #[automatically_derived]
8889        impl alloy_sol_types::SolCall for finalizedStateCall {
8890            type Parameters<'a> = ();
8891            type Token<'a> = <Self::Parameters<
8892                'a,
8893            > as alloy_sol_types::SolType>::Token<'a>;
8894            type Return = finalizedStateReturn;
8895            type ReturnTuple<'a> = (
8896                alloy::sol_types::sol_data::Uint<64>,
8897                alloy::sol_types::sol_data::Uint<64>,
8898                BN254::ScalarField,
8899            );
8900            type ReturnToken<'a> = <Self::ReturnTuple<
8901                'a,
8902            > as alloy_sol_types::SolType>::Token<'a>;
8903            const SIGNATURE: &'static str = "finalizedState()";
8904            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8905            #[inline]
8906            fn new<'a>(
8907                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8908            ) -> Self {
8909                tuple.into()
8910            }
8911            #[inline]
8912            fn tokenize(&self) -> Self::Token<'_> {
8913                ()
8914            }
8915            #[inline]
8916            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8917                finalizedStateReturn::_tokenize(ret)
8918            }
8919            #[inline]
8920            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8921                <Self::ReturnTuple<
8922                    '_,
8923                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8924                    .map(Into::into)
8925            }
8926            #[inline]
8927            fn abi_decode_returns_validate(
8928                data: &[u8],
8929            ) -> alloy_sol_types::Result<Self::Return> {
8930                <Self::ReturnTuple<
8931                    '_,
8932                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8933                    .map(Into::into)
8934            }
8935        }
8936    };
8937    #[derive(serde::Serialize, serde::Deserialize)]
8938    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8939    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8940```solidity
8941function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8942```*/
8943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8944    #[derive(Clone)]
8945    pub struct genesisStakeTableStateCall;
8946    #[derive(serde::Serialize, serde::Deserialize)]
8947    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8948    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8950    #[derive(Clone)]
8951    pub struct genesisStakeTableStateReturn {
8952        #[allow(missing_docs)]
8953        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8954        #[allow(missing_docs)]
8955        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8956        #[allow(missing_docs)]
8957        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8958        #[allow(missing_docs)]
8959        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8960    }
8961    #[allow(
8962        non_camel_case_types,
8963        non_snake_case,
8964        clippy::pub_underscore_fields,
8965        clippy::style
8966    )]
8967    const _: () = {
8968        use alloy::sol_types as alloy_sol_types;
8969        {
8970            #[doc(hidden)]
8971            #[allow(dead_code)]
8972            type UnderlyingSolTuple<'a> = ();
8973            #[doc(hidden)]
8974            type UnderlyingRustTuple<'a> = ();
8975            #[cfg(test)]
8976            #[allow(dead_code, unreachable_patterns)]
8977            fn _type_assertion(
8978                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8979            ) {
8980                match _t {
8981                    alloy_sol_types::private::AssertTypeEq::<
8982                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8983                    >(_) => {}
8984                }
8985            }
8986            #[automatically_derived]
8987            #[doc(hidden)]
8988            impl ::core::convert::From<genesisStakeTableStateCall>
8989            for UnderlyingRustTuple<'_> {
8990                fn from(value: genesisStakeTableStateCall) -> Self {
8991                    ()
8992                }
8993            }
8994            #[automatically_derived]
8995            #[doc(hidden)]
8996            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8997            for genesisStakeTableStateCall {
8998                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8999                    Self
9000                }
9001            }
9002        }
9003        {
9004            #[doc(hidden)]
9005            #[allow(dead_code)]
9006            type UnderlyingSolTuple<'a> = (
9007                alloy::sol_types::sol_data::Uint<256>,
9008                BN254::ScalarField,
9009                BN254::ScalarField,
9010                BN254::ScalarField,
9011            );
9012            #[doc(hidden)]
9013            type UnderlyingRustTuple<'a> = (
9014                alloy::sol_types::private::primitives::aliases::U256,
9015                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9016                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9017                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9018            );
9019            #[cfg(test)]
9020            #[allow(dead_code, unreachable_patterns)]
9021            fn _type_assertion(
9022                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9023            ) {
9024                match _t {
9025                    alloy_sol_types::private::AssertTypeEq::<
9026                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9027                    >(_) => {}
9028                }
9029            }
9030            #[automatically_derived]
9031            #[doc(hidden)]
9032            impl ::core::convert::From<genesisStakeTableStateReturn>
9033            for UnderlyingRustTuple<'_> {
9034                fn from(value: genesisStakeTableStateReturn) -> Self {
9035                    (
9036                        value.threshold,
9037                        value.blsKeyComm,
9038                        value.schnorrKeyComm,
9039                        value.amountComm,
9040                    )
9041                }
9042            }
9043            #[automatically_derived]
9044            #[doc(hidden)]
9045            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9046            for genesisStakeTableStateReturn {
9047                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9048                    Self {
9049                        threshold: tuple.0,
9050                        blsKeyComm: tuple.1,
9051                        schnorrKeyComm: tuple.2,
9052                        amountComm: tuple.3,
9053                    }
9054                }
9055            }
9056        }
9057        impl genesisStakeTableStateReturn {
9058            fn _tokenize(
9059                &self,
9060            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9061                '_,
9062            > {
9063                (
9064                    <alloy::sol_types::sol_data::Uint<
9065                        256,
9066                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9067                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9068                        &self.blsKeyComm,
9069                    ),
9070                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9071                        &self.schnorrKeyComm,
9072                    ),
9073                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9074                        &self.amountComm,
9075                    ),
9076                )
9077            }
9078        }
9079        #[automatically_derived]
9080        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9081            type Parameters<'a> = ();
9082            type Token<'a> = <Self::Parameters<
9083                'a,
9084            > as alloy_sol_types::SolType>::Token<'a>;
9085            type Return = genesisStakeTableStateReturn;
9086            type ReturnTuple<'a> = (
9087                alloy::sol_types::sol_data::Uint<256>,
9088                BN254::ScalarField,
9089                BN254::ScalarField,
9090                BN254::ScalarField,
9091            );
9092            type ReturnToken<'a> = <Self::ReturnTuple<
9093                'a,
9094            > as alloy_sol_types::SolType>::Token<'a>;
9095            const SIGNATURE: &'static str = "genesisStakeTableState()";
9096            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9097            #[inline]
9098            fn new<'a>(
9099                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9100            ) -> Self {
9101                tuple.into()
9102            }
9103            #[inline]
9104            fn tokenize(&self) -> Self::Token<'_> {
9105                ()
9106            }
9107            #[inline]
9108            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9109                genesisStakeTableStateReturn::_tokenize(ret)
9110            }
9111            #[inline]
9112            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9113                <Self::ReturnTuple<
9114                    '_,
9115                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9116                    .map(Into::into)
9117            }
9118            #[inline]
9119            fn abi_decode_returns_validate(
9120                data: &[u8],
9121            ) -> alloy_sol_types::Result<Self::Return> {
9122                <Self::ReturnTuple<
9123                    '_,
9124                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9125                    .map(Into::into)
9126            }
9127        }
9128    };
9129    #[derive(serde::Serialize, serde::Deserialize)]
9130    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9131    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9132```solidity
9133function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9134```*/
9135    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9136    #[derive(Clone)]
9137    pub struct genesisStateCall;
9138    #[derive(serde::Serialize, serde::Deserialize)]
9139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9140    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9142    #[derive(Clone)]
9143    pub struct genesisStateReturn {
9144        #[allow(missing_docs)]
9145        pub viewNum: u64,
9146        #[allow(missing_docs)]
9147        pub blockHeight: u64,
9148        #[allow(missing_docs)]
9149        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9150    }
9151    #[allow(
9152        non_camel_case_types,
9153        non_snake_case,
9154        clippy::pub_underscore_fields,
9155        clippy::style
9156    )]
9157    const _: () = {
9158        use alloy::sol_types as alloy_sol_types;
9159        {
9160            #[doc(hidden)]
9161            #[allow(dead_code)]
9162            type UnderlyingSolTuple<'a> = ();
9163            #[doc(hidden)]
9164            type UnderlyingRustTuple<'a> = ();
9165            #[cfg(test)]
9166            #[allow(dead_code, unreachable_patterns)]
9167            fn _type_assertion(
9168                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9169            ) {
9170                match _t {
9171                    alloy_sol_types::private::AssertTypeEq::<
9172                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9173                    >(_) => {}
9174                }
9175            }
9176            #[automatically_derived]
9177            #[doc(hidden)]
9178            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9179                fn from(value: genesisStateCall) -> Self {
9180                    ()
9181                }
9182            }
9183            #[automatically_derived]
9184            #[doc(hidden)]
9185            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9186                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9187                    Self
9188                }
9189            }
9190        }
9191        {
9192            #[doc(hidden)]
9193            #[allow(dead_code)]
9194            type UnderlyingSolTuple<'a> = (
9195                alloy::sol_types::sol_data::Uint<64>,
9196                alloy::sol_types::sol_data::Uint<64>,
9197                BN254::ScalarField,
9198            );
9199            #[doc(hidden)]
9200            type UnderlyingRustTuple<'a> = (
9201                u64,
9202                u64,
9203                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9204            );
9205            #[cfg(test)]
9206            #[allow(dead_code, unreachable_patterns)]
9207            fn _type_assertion(
9208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9209            ) {
9210                match _t {
9211                    alloy_sol_types::private::AssertTypeEq::<
9212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9213                    >(_) => {}
9214                }
9215            }
9216            #[automatically_derived]
9217            #[doc(hidden)]
9218            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9219                fn from(value: genesisStateReturn) -> Self {
9220                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9221                }
9222            }
9223            #[automatically_derived]
9224            #[doc(hidden)]
9225            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9227                    Self {
9228                        viewNum: tuple.0,
9229                        blockHeight: tuple.1,
9230                        blockCommRoot: tuple.2,
9231                    }
9232                }
9233            }
9234        }
9235        impl genesisStateReturn {
9236            fn _tokenize(
9237                &self,
9238            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9239                (
9240                    <alloy::sol_types::sol_data::Uint<
9241                        64,
9242                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9243                    <alloy::sol_types::sol_data::Uint<
9244                        64,
9245                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9246                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9247                        &self.blockCommRoot,
9248                    ),
9249                )
9250            }
9251        }
9252        #[automatically_derived]
9253        impl alloy_sol_types::SolCall for genesisStateCall {
9254            type Parameters<'a> = ();
9255            type Token<'a> = <Self::Parameters<
9256                'a,
9257            > as alloy_sol_types::SolType>::Token<'a>;
9258            type Return = genesisStateReturn;
9259            type ReturnTuple<'a> = (
9260                alloy::sol_types::sol_data::Uint<64>,
9261                alloy::sol_types::sol_data::Uint<64>,
9262                BN254::ScalarField,
9263            );
9264            type ReturnToken<'a> = <Self::ReturnTuple<
9265                'a,
9266            > as alloy_sol_types::SolType>::Token<'a>;
9267            const SIGNATURE: &'static str = "genesisState()";
9268            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9269            #[inline]
9270            fn new<'a>(
9271                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9272            ) -> Self {
9273                tuple.into()
9274            }
9275            #[inline]
9276            fn tokenize(&self) -> Self::Token<'_> {
9277                ()
9278            }
9279            #[inline]
9280            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9281                genesisStateReturn::_tokenize(ret)
9282            }
9283            #[inline]
9284            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9285                <Self::ReturnTuple<
9286                    '_,
9287                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9288                    .map(Into::into)
9289            }
9290            #[inline]
9291            fn abi_decode_returns_validate(
9292                data: &[u8],
9293            ) -> alloy_sol_types::Result<Self::Return> {
9294                <Self::ReturnTuple<
9295                    '_,
9296                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9297                    .map(Into::into)
9298            }
9299        }
9300    };
9301    #[derive(serde::Serialize, serde::Deserialize)]
9302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9303    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9304```solidity
9305function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9306```*/
9307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9308    #[derive(Clone)]
9309    pub struct getHotShotCommitmentCall {
9310        #[allow(missing_docs)]
9311        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9312    }
9313    #[derive(serde::Serialize, serde::Deserialize)]
9314    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9315    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9317    #[derive(Clone)]
9318    pub struct getHotShotCommitmentReturn {
9319        #[allow(missing_docs)]
9320        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9321        #[allow(missing_docs)]
9322        pub hotshotBlockHeight: u64,
9323    }
9324    #[allow(
9325        non_camel_case_types,
9326        non_snake_case,
9327        clippy::pub_underscore_fields,
9328        clippy::style
9329    )]
9330    const _: () = {
9331        use alloy::sol_types as alloy_sol_types;
9332        {
9333            #[doc(hidden)]
9334            #[allow(dead_code)]
9335            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9336            #[doc(hidden)]
9337            type UnderlyingRustTuple<'a> = (
9338                alloy::sol_types::private::primitives::aliases::U256,
9339            );
9340            #[cfg(test)]
9341            #[allow(dead_code, unreachable_patterns)]
9342            fn _type_assertion(
9343                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9344            ) {
9345                match _t {
9346                    alloy_sol_types::private::AssertTypeEq::<
9347                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9348                    >(_) => {}
9349                }
9350            }
9351            #[automatically_derived]
9352            #[doc(hidden)]
9353            impl ::core::convert::From<getHotShotCommitmentCall>
9354            for UnderlyingRustTuple<'_> {
9355                fn from(value: getHotShotCommitmentCall) -> Self {
9356                    (value.hotShotBlockHeight,)
9357                }
9358            }
9359            #[automatically_derived]
9360            #[doc(hidden)]
9361            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9362            for getHotShotCommitmentCall {
9363                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9364                    Self {
9365                        hotShotBlockHeight: tuple.0,
9366                    }
9367                }
9368            }
9369        }
9370        {
9371            #[doc(hidden)]
9372            #[allow(dead_code)]
9373            type UnderlyingSolTuple<'a> = (
9374                BN254::ScalarField,
9375                alloy::sol_types::sol_data::Uint<64>,
9376            );
9377            #[doc(hidden)]
9378            type UnderlyingRustTuple<'a> = (
9379                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9380                u64,
9381            );
9382            #[cfg(test)]
9383            #[allow(dead_code, unreachable_patterns)]
9384            fn _type_assertion(
9385                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9386            ) {
9387                match _t {
9388                    alloy_sol_types::private::AssertTypeEq::<
9389                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9390                    >(_) => {}
9391                }
9392            }
9393            #[automatically_derived]
9394            #[doc(hidden)]
9395            impl ::core::convert::From<getHotShotCommitmentReturn>
9396            for UnderlyingRustTuple<'_> {
9397                fn from(value: getHotShotCommitmentReturn) -> Self {
9398                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9399                }
9400            }
9401            #[automatically_derived]
9402            #[doc(hidden)]
9403            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9404            for getHotShotCommitmentReturn {
9405                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9406                    Self {
9407                        hotShotBlockCommRoot: tuple.0,
9408                        hotshotBlockHeight: tuple.1,
9409                    }
9410                }
9411            }
9412        }
9413        impl getHotShotCommitmentReturn {
9414            fn _tokenize(
9415                &self,
9416            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9417                '_,
9418            > {
9419                (
9420                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9421                        &self.hotShotBlockCommRoot,
9422                    ),
9423                    <alloy::sol_types::sol_data::Uint<
9424                        64,
9425                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9426                )
9427            }
9428        }
9429        #[automatically_derived]
9430        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9431            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9432            type Token<'a> = <Self::Parameters<
9433                'a,
9434            > as alloy_sol_types::SolType>::Token<'a>;
9435            type Return = getHotShotCommitmentReturn;
9436            type ReturnTuple<'a> = (
9437                BN254::ScalarField,
9438                alloy::sol_types::sol_data::Uint<64>,
9439            );
9440            type ReturnToken<'a> = <Self::ReturnTuple<
9441                'a,
9442            > as alloy_sol_types::SolType>::Token<'a>;
9443            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9444            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9445            #[inline]
9446            fn new<'a>(
9447                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9448            ) -> Self {
9449                tuple.into()
9450            }
9451            #[inline]
9452            fn tokenize(&self) -> Self::Token<'_> {
9453                (
9454                    <alloy::sol_types::sol_data::Uint<
9455                        256,
9456                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9457                )
9458            }
9459            #[inline]
9460            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9461                getHotShotCommitmentReturn::_tokenize(ret)
9462            }
9463            #[inline]
9464            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9465                <Self::ReturnTuple<
9466                    '_,
9467                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9468                    .map(Into::into)
9469            }
9470            #[inline]
9471            fn abi_decode_returns_validate(
9472                data: &[u8],
9473            ) -> alloy_sol_types::Result<Self::Return> {
9474                <Self::ReturnTuple<
9475                    '_,
9476                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9477                    .map(Into::into)
9478            }
9479        }
9480    };
9481    #[derive(serde::Serialize, serde::Deserialize)]
9482    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9483    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9484```solidity
9485function getStateHistoryCount() external view returns (uint256);
9486```*/
9487    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9488    #[derive(Clone)]
9489    pub struct getStateHistoryCountCall;
9490    #[derive(serde::Serialize, serde::Deserialize)]
9491    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9492    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9493    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9494    #[derive(Clone)]
9495    pub struct getStateHistoryCountReturn {
9496        #[allow(missing_docs)]
9497        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9498    }
9499    #[allow(
9500        non_camel_case_types,
9501        non_snake_case,
9502        clippy::pub_underscore_fields,
9503        clippy::style
9504    )]
9505    const _: () = {
9506        use alloy::sol_types as alloy_sol_types;
9507        {
9508            #[doc(hidden)]
9509            #[allow(dead_code)]
9510            type UnderlyingSolTuple<'a> = ();
9511            #[doc(hidden)]
9512            type UnderlyingRustTuple<'a> = ();
9513            #[cfg(test)]
9514            #[allow(dead_code, unreachable_patterns)]
9515            fn _type_assertion(
9516                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9517            ) {
9518                match _t {
9519                    alloy_sol_types::private::AssertTypeEq::<
9520                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9521                    >(_) => {}
9522                }
9523            }
9524            #[automatically_derived]
9525            #[doc(hidden)]
9526            impl ::core::convert::From<getStateHistoryCountCall>
9527            for UnderlyingRustTuple<'_> {
9528                fn from(value: getStateHistoryCountCall) -> Self {
9529                    ()
9530                }
9531            }
9532            #[automatically_derived]
9533            #[doc(hidden)]
9534            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9535            for getStateHistoryCountCall {
9536                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9537                    Self
9538                }
9539            }
9540        }
9541        {
9542            #[doc(hidden)]
9543            #[allow(dead_code)]
9544            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9545            #[doc(hidden)]
9546            type UnderlyingRustTuple<'a> = (
9547                alloy::sol_types::private::primitives::aliases::U256,
9548            );
9549            #[cfg(test)]
9550            #[allow(dead_code, unreachable_patterns)]
9551            fn _type_assertion(
9552                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9553            ) {
9554                match _t {
9555                    alloy_sol_types::private::AssertTypeEq::<
9556                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9557                    >(_) => {}
9558                }
9559            }
9560            #[automatically_derived]
9561            #[doc(hidden)]
9562            impl ::core::convert::From<getStateHistoryCountReturn>
9563            for UnderlyingRustTuple<'_> {
9564                fn from(value: getStateHistoryCountReturn) -> Self {
9565                    (value._0,)
9566                }
9567            }
9568            #[automatically_derived]
9569            #[doc(hidden)]
9570            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9571            for getStateHistoryCountReturn {
9572                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9573                    Self { _0: tuple.0 }
9574                }
9575            }
9576        }
9577        #[automatically_derived]
9578        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9579            type Parameters<'a> = ();
9580            type Token<'a> = <Self::Parameters<
9581                'a,
9582            > as alloy_sol_types::SolType>::Token<'a>;
9583            type Return = alloy::sol_types::private::primitives::aliases::U256;
9584            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9585            type ReturnToken<'a> = <Self::ReturnTuple<
9586                'a,
9587            > as alloy_sol_types::SolType>::Token<'a>;
9588            const SIGNATURE: &'static str = "getStateHistoryCount()";
9589            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9590            #[inline]
9591            fn new<'a>(
9592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9593            ) -> Self {
9594                tuple.into()
9595            }
9596            #[inline]
9597            fn tokenize(&self) -> Self::Token<'_> {
9598                ()
9599            }
9600            #[inline]
9601            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9602                (
9603                    <alloy::sol_types::sol_data::Uint<
9604                        256,
9605                    > as alloy_sol_types::SolType>::tokenize(ret),
9606                )
9607            }
9608            #[inline]
9609            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9610                <Self::ReturnTuple<
9611                    '_,
9612                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9613                    .map(|r| {
9614                        let r: getStateHistoryCountReturn = r.into();
9615                        r._0
9616                    })
9617            }
9618            #[inline]
9619            fn abi_decode_returns_validate(
9620                data: &[u8],
9621            ) -> alloy_sol_types::Result<Self::Return> {
9622                <Self::ReturnTuple<
9623                    '_,
9624                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9625                    .map(|r| {
9626                        let r: getStateHistoryCountReturn = r.into();
9627                        r._0
9628                    })
9629            }
9630        }
9631    };
9632    #[derive(serde::Serialize, serde::Deserialize)]
9633    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9634    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9635```solidity
9636function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9637```*/
9638    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9639    #[derive(Clone)]
9640    pub struct getVersionCall;
9641    #[derive(serde::Serialize, serde::Deserialize)]
9642    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9643    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9644    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9645    #[derive(Clone)]
9646    pub struct getVersionReturn {
9647        #[allow(missing_docs)]
9648        pub majorVersion: u8,
9649        #[allow(missing_docs)]
9650        pub minorVersion: u8,
9651        #[allow(missing_docs)]
9652        pub patchVersion: u8,
9653    }
9654    #[allow(
9655        non_camel_case_types,
9656        non_snake_case,
9657        clippy::pub_underscore_fields,
9658        clippy::style
9659    )]
9660    const _: () = {
9661        use alloy::sol_types as alloy_sol_types;
9662        {
9663            #[doc(hidden)]
9664            #[allow(dead_code)]
9665            type UnderlyingSolTuple<'a> = ();
9666            #[doc(hidden)]
9667            type UnderlyingRustTuple<'a> = ();
9668            #[cfg(test)]
9669            #[allow(dead_code, unreachable_patterns)]
9670            fn _type_assertion(
9671                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9672            ) {
9673                match _t {
9674                    alloy_sol_types::private::AssertTypeEq::<
9675                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9676                    >(_) => {}
9677                }
9678            }
9679            #[automatically_derived]
9680            #[doc(hidden)]
9681            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9682                fn from(value: getVersionCall) -> Self {
9683                    ()
9684                }
9685            }
9686            #[automatically_derived]
9687            #[doc(hidden)]
9688            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9689                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9690                    Self
9691                }
9692            }
9693        }
9694        {
9695            #[doc(hidden)]
9696            #[allow(dead_code)]
9697            type UnderlyingSolTuple<'a> = (
9698                alloy::sol_types::sol_data::Uint<8>,
9699                alloy::sol_types::sol_data::Uint<8>,
9700                alloy::sol_types::sol_data::Uint<8>,
9701            );
9702            #[doc(hidden)]
9703            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9704            #[cfg(test)]
9705            #[allow(dead_code, unreachable_patterns)]
9706            fn _type_assertion(
9707                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9708            ) {
9709                match _t {
9710                    alloy_sol_types::private::AssertTypeEq::<
9711                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9712                    >(_) => {}
9713                }
9714            }
9715            #[automatically_derived]
9716            #[doc(hidden)]
9717            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9718                fn from(value: getVersionReturn) -> Self {
9719                    (value.majorVersion, value.minorVersion, value.patchVersion)
9720                }
9721            }
9722            #[automatically_derived]
9723            #[doc(hidden)]
9724            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9725                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9726                    Self {
9727                        majorVersion: tuple.0,
9728                        minorVersion: tuple.1,
9729                        patchVersion: tuple.2,
9730                    }
9731                }
9732            }
9733        }
9734        impl getVersionReturn {
9735            fn _tokenize(
9736                &self,
9737            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9738                (
9739                    <alloy::sol_types::sol_data::Uint<
9740                        8,
9741                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
9742                    <alloy::sol_types::sol_data::Uint<
9743                        8,
9744                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
9745                    <alloy::sol_types::sol_data::Uint<
9746                        8,
9747                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
9748                )
9749            }
9750        }
9751        #[automatically_derived]
9752        impl alloy_sol_types::SolCall for getVersionCall {
9753            type Parameters<'a> = ();
9754            type Token<'a> = <Self::Parameters<
9755                'a,
9756            > as alloy_sol_types::SolType>::Token<'a>;
9757            type Return = getVersionReturn;
9758            type ReturnTuple<'a> = (
9759                alloy::sol_types::sol_data::Uint<8>,
9760                alloy::sol_types::sol_data::Uint<8>,
9761                alloy::sol_types::sol_data::Uint<8>,
9762            );
9763            type ReturnToken<'a> = <Self::ReturnTuple<
9764                'a,
9765            > as alloy_sol_types::SolType>::Token<'a>;
9766            const SIGNATURE: &'static str = "getVersion()";
9767            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9768            #[inline]
9769            fn new<'a>(
9770                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9771            ) -> Self {
9772                tuple.into()
9773            }
9774            #[inline]
9775            fn tokenize(&self) -> Self::Token<'_> {
9776                ()
9777            }
9778            #[inline]
9779            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9780                getVersionReturn::_tokenize(ret)
9781            }
9782            #[inline]
9783            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9784                <Self::ReturnTuple<
9785                    '_,
9786                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9787                    .map(Into::into)
9788            }
9789            #[inline]
9790            fn abi_decode_returns_validate(
9791                data: &[u8],
9792            ) -> alloy_sol_types::Result<Self::Return> {
9793                <Self::ReturnTuple<
9794                    '_,
9795                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9796                    .map(Into::into)
9797            }
9798        }
9799    };
9800    #[derive(serde::Serialize, serde::Deserialize)]
9801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9802    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9803```solidity
9804function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9805```*/
9806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9807    #[derive(Clone)]
9808    pub struct initializeCall {
9809        #[allow(missing_docs)]
9810        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9811        #[allow(missing_docs)]
9812        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9813        #[allow(missing_docs)]
9814        pub _stateHistoryRetentionPeriod: u32,
9815        #[allow(missing_docs)]
9816        pub owner: alloy::sol_types::private::Address,
9817    }
9818    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9820    #[derive(Clone)]
9821    pub struct initializeReturn {}
9822    #[allow(
9823        non_camel_case_types,
9824        non_snake_case,
9825        clippy::pub_underscore_fields,
9826        clippy::style
9827    )]
9828    const _: () = {
9829        use alloy::sol_types as alloy_sol_types;
9830        {
9831            #[doc(hidden)]
9832            #[allow(dead_code)]
9833            type UnderlyingSolTuple<'a> = (
9834                LightClient::LightClientState,
9835                LightClient::StakeTableState,
9836                alloy::sol_types::sol_data::Uint<32>,
9837                alloy::sol_types::sol_data::Address,
9838            );
9839            #[doc(hidden)]
9840            type UnderlyingRustTuple<'a> = (
9841                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9842                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9843                u32,
9844                alloy::sol_types::private::Address,
9845            );
9846            #[cfg(test)]
9847            #[allow(dead_code, unreachable_patterns)]
9848            fn _type_assertion(
9849                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9850            ) {
9851                match _t {
9852                    alloy_sol_types::private::AssertTypeEq::<
9853                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9854                    >(_) => {}
9855                }
9856            }
9857            #[automatically_derived]
9858            #[doc(hidden)]
9859            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9860                fn from(value: initializeCall) -> Self {
9861                    (
9862                        value._genesis,
9863                        value._genesisStakeTableState,
9864                        value._stateHistoryRetentionPeriod,
9865                        value.owner,
9866                    )
9867                }
9868            }
9869            #[automatically_derived]
9870            #[doc(hidden)]
9871            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9872                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9873                    Self {
9874                        _genesis: tuple.0,
9875                        _genesisStakeTableState: tuple.1,
9876                        _stateHistoryRetentionPeriod: tuple.2,
9877                        owner: tuple.3,
9878                    }
9879                }
9880            }
9881        }
9882        {
9883            #[doc(hidden)]
9884            #[allow(dead_code)]
9885            type UnderlyingSolTuple<'a> = ();
9886            #[doc(hidden)]
9887            type UnderlyingRustTuple<'a> = ();
9888            #[cfg(test)]
9889            #[allow(dead_code, unreachable_patterns)]
9890            fn _type_assertion(
9891                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9892            ) {
9893                match _t {
9894                    alloy_sol_types::private::AssertTypeEq::<
9895                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9896                    >(_) => {}
9897                }
9898            }
9899            #[automatically_derived]
9900            #[doc(hidden)]
9901            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9902                fn from(value: initializeReturn) -> Self {
9903                    ()
9904                }
9905            }
9906            #[automatically_derived]
9907            #[doc(hidden)]
9908            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9909                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9910                    Self {}
9911                }
9912            }
9913        }
9914        impl initializeReturn {
9915            fn _tokenize(
9916                &self,
9917            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9918                ()
9919            }
9920        }
9921        #[automatically_derived]
9922        impl alloy_sol_types::SolCall for initializeCall {
9923            type Parameters<'a> = (
9924                LightClient::LightClientState,
9925                LightClient::StakeTableState,
9926                alloy::sol_types::sol_data::Uint<32>,
9927                alloy::sol_types::sol_data::Address,
9928            );
9929            type Token<'a> = <Self::Parameters<
9930                'a,
9931            > as alloy_sol_types::SolType>::Token<'a>;
9932            type Return = initializeReturn;
9933            type ReturnTuple<'a> = ();
9934            type ReturnToken<'a> = <Self::ReturnTuple<
9935                'a,
9936            > as alloy_sol_types::SolType>::Token<'a>;
9937            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9938            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9939            #[inline]
9940            fn new<'a>(
9941                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9942            ) -> Self {
9943                tuple.into()
9944            }
9945            #[inline]
9946            fn tokenize(&self) -> Self::Token<'_> {
9947                (
9948                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9949                        &self._genesis,
9950                    ),
9951                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9952                        &self._genesisStakeTableState,
9953                    ),
9954                    <alloy::sol_types::sol_data::Uint<
9955                        32,
9956                    > as alloy_sol_types::SolType>::tokenize(
9957                        &self._stateHistoryRetentionPeriod,
9958                    ),
9959                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9960                        &self.owner,
9961                    ),
9962                )
9963            }
9964            #[inline]
9965            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9966                initializeReturn::_tokenize(ret)
9967            }
9968            #[inline]
9969            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9970                <Self::ReturnTuple<
9971                    '_,
9972                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9973                    .map(Into::into)
9974            }
9975            #[inline]
9976            fn abi_decode_returns_validate(
9977                data: &[u8],
9978            ) -> alloy_sol_types::Result<Self::Return> {
9979                <Self::ReturnTuple<
9980                    '_,
9981                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9982                    .map(Into::into)
9983            }
9984        }
9985    };
9986    #[derive(serde::Serialize, serde::Deserialize)]
9987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9988    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
9989```solidity
9990function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
9991```*/
9992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9993    #[derive(Clone)]
9994    pub struct initializeV2Call {
9995        #[allow(missing_docs)]
9996        pub _blocksPerEpoch: u64,
9997        #[allow(missing_docs)]
9998        pub _epochStartBlock: u64,
9999    }
10000    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10001    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10002    #[derive(Clone)]
10003    pub struct initializeV2Return {}
10004    #[allow(
10005        non_camel_case_types,
10006        non_snake_case,
10007        clippy::pub_underscore_fields,
10008        clippy::style
10009    )]
10010    const _: () = {
10011        use alloy::sol_types as alloy_sol_types;
10012        {
10013            #[doc(hidden)]
10014            #[allow(dead_code)]
10015            type UnderlyingSolTuple<'a> = (
10016                alloy::sol_types::sol_data::Uint<64>,
10017                alloy::sol_types::sol_data::Uint<64>,
10018            );
10019            #[doc(hidden)]
10020            type UnderlyingRustTuple<'a> = (u64, u64);
10021            #[cfg(test)]
10022            #[allow(dead_code, unreachable_patterns)]
10023            fn _type_assertion(
10024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10025            ) {
10026                match _t {
10027                    alloy_sol_types::private::AssertTypeEq::<
10028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10029                    >(_) => {}
10030                }
10031            }
10032            #[automatically_derived]
10033            #[doc(hidden)]
10034            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10035                fn from(value: initializeV2Call) -> Self {
10036                    (value._blocksPerEpoch, value._epochStartBlock)
10037                }
10038            }
10039            #[automatically_derived]
10040            #[doc(hidden)]
10041            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10042                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10043                    Self {
10044                        _blocksPerEpoch: tuple.0,
10045                        _epochStartBlock: tuple.1,
10046                    }
10047                }
10048            }
10049        }
10050        {
10051            #[doc(hidden)]
10052            #[allow(dead_code)]
10053            type UnderlyingSolTuple<'a> = ();
10054            #[doc(hidden)]
10055            type UnderlyingRustTuple<'a> = ();
10056            #[cfg(test)]
10057            #[allow(dead_code, unreachable_patterns)]
10058            fn _type_assertion(
10059                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10060            ) {
10061                match _t {
10062                    alloy_sol_types::private::AssertTypeEq::<
10063                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10064                    >(_) => {}
10065                }
10066            }
10067            #[automatically_derived]
10068            #[doc(hidden)]
10069            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10070                fn from(value: initializeV2Return) -> Self {
10071                    ()
10072                }
10073            }
10074            #[automatically_derived]
10075            #[doc(hidden)]
10076            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10077                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10078                    Self {}
10079                }
10080            }
10081        }
10082        impl initializeV2Return {
10083            fn _tokenize(
10084                &self,
10085            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10086                ()
10087            }
10088        }
10089        #[automatically_derived]
10090        impl alloy_sol_types::SolCall for initializeV2Call {
10091            type Parameters<'a> = (
10092                alloy::sol_types::sol_data::Uint<64>,
10093                alloy::sol_types::sol_data::Uint<64>,
10094            );
10095            type Token<'a> = <Self::Parameters<
10096                'a,
10097            > as alloy_sol_types::SolType>::Token<'a>;
10098            type Return = initializeV2Return;
10099            type ReturnTuple<'a> = ();
10100            type ReturnToken<'a> = <Self::ReturnTuple<
10101                'a,
10102            > as alloy_sol_types::SolType>::Token<'a>;
10103            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10104            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10105            #[inline]
10106            fn new<'a>(
10107                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10108            ) -> Self {
10109                tuple.into()
10110            }
10111            #[inline]
10112            fn tokenize(&self) -> Self::Token<'_> {
10113                (
10114                    <alloy::sol_types::sol_data::Uint<
10115                        64,
10116                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10117                    <alloy::sol_types::sol_data::Uint<
10118                        64,
10119                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10120                )
10121            }
10122            #[inline]
10123            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10124                initializeV2Return::_tokenize(ret)
10125            }
10126            #[inline]
10127            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10128                <Self::ReturnTuple<
10129                    '_,
10130                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10131                    .map(Into::into)
10132            }
10133            #[inline]
10134            fn abi_decode_returns_validate(
10135                data: &[u8],
10136            ) -> alloy_sol_types::Result<Self::Return> {
10137                <Self::ReturnTuple<
10138                    '_,
10139                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10140                    .map(Into::into)
10141            }
10142        }
10143    };
10144    #[derive(serde::Serialize, serde::Deserialize)]
10145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10146    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10147```solidity
10148function isEpochRoot(uint64 blockHeight) external view returns (bool);
10149```*/
10150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10151    #[derive(Clone)]
10152    pub struct isEpochRootCall {
10153        #[allow(missing_docs)]
10154        pub blockHeight: u64,
10155    }
10156    #[derive(serde::Serialize, serde::Deserialize)]
10157    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10158    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10160    #[derive(Clone)]
10161    pub struct isEpochRootReturn {
10162        #[allow(missing_docs)]
10163        pub _0: bool,
10164    }
10165    #[allow(
10166        non_camel_case_types,
10167        non_snake_case,
10168        clippy::pub_underscore_fields,
10169        clippy::style
10170    )]
10171    const _: () = {
10172        use alloy::sol_types as alloy_sol_types;
10173        {
10174            #[doc(hidden)]
10175            #[allow(dead_code)]
10176            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10177            #[doc(hidden)]
10178            type UnderlyingRustTuple<'a> = (u64,);
10179            #[cfg(test)]
10180            #[allow(dead_code, unreachable_patterns)]
10181            fn _type_assertion(
10182                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10183            ) {
10184                match _t {
10185                    alloy_sol_types::private::AssertTypeEq::<
10186                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10187                    >(_) => {}
10188                }
10189            }
10190            #[automatically_derived]
10191            #[doc(hidden)]
10192            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10193                fn from(value: isEpochRootCall) -> Self {
10194                    (value.blockHeight,)
10195                }
10196            }
10197            #[automatically_derived]
10198            #[doc(hidden)]
10199            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10200                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10201                    Self { blockHeight: tuple.0 }
10202                }
10203            }
10204        }
10205        {
10206            #[doc(hidden)]
10207            #[allow(dead_code)]
10208            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10209            #[doc(hidden)]
10210            type UnderlyingRustTuple<'a> = (bool,);
10211            #[cfg(test)]
10212            #[allow(dead_code, unreachable_patterns)]
10213            fn _type_assertion(
10214                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10215            ) {
10216                match _t {
10217                    alloy_sol_types::private::AssertTypeEq::<
10218                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10219                    >(_) => {}
10220                }
10221            }
10222            #[automatically_derived]
10223            #[doc(hidden)]
10224            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10225                fn from(value: isEpochRootReturn) -> Self {
10226                    (value._0,)
10227                }
10228            }
10229            #[automatically_derived]
10230            #[doc(hidden)]
10231            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10232                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10233                    Self { _0: tuple.0 }
10234                }
10235            }
10236        }
10237        #[automatically_derived]
10238        impl alloy_sol_types::SolCall for isEpochRootCall {
10239            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10240            type Token<'a> = <Self::Parameters<
10241                'a,
10242            > as alloy_sol_types::SolType>::Token<'a>;
10243            type Return = bool;
10244            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10245            type ReturnToken<'a> = <Self::ReturnTuple<
10246                'a,
10247            > as alloy_sol_types::SolType>::Token<'a>;
10248            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10249            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10250            #[inline]
10251            fn new<'a>(
10252                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10253            ) -> Self {
10254                tuple.into()
10255            }
10256            #[inline]
10257            fn tokenize(&self) -> Self::Token<'_> {
10258                (
10259                    <alloy::sol_types::sol_data::Uint<
10260                        64,
10261                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10262                )
10263            }
10264            #[inline]
10265            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10266                (
10267                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10268                        ret,
10269                    ),
10270                )
10271            }
10272            #[inline]
10273            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10274                <Self::ReturnTuple<
10275                    '_,
10276                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10277                    .map(|r| {
10278                        let r: isEpochRootReturn = r.into();
10279                        r._0
10280                    })
10281            }
10282            #[inline]
10283            fn abi_decode_returns_validate(
10284                data: &[u8],
10285            ) -> alloy_sol_types::Result<Self::Return> {
10286                <Self::ReturnTuple<
10287                    '_,
10288                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10289                    .map(|r| {
10290                        let r: isEpochRootReturn = r.into();
10291                        r._0
10292                    })
10293            }
10294        }
10295    };
10296    #[derive(serde::Serialize, serde::Deserialize)]
10297    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10298    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10299```solidity
10300function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10301```*/
10302    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10303    #[derive(Clone)]
10304    pub struct isGtEpochRootCall {
10305        #[allow(missing_docs)]
10306        pub blockHeight: u64,
10307    }
10308    #[derive(serde::Serialize, serde::Deserialize)]
10309    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10310    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10311    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10312    #[derive(Clone)]
10313    pub struct isGtEpochRootReturn {
10314        #[allow(missing_docs)]
10315        pub _0: bool,
10316    }
10317    #[allow(
10318        non_camel_case_types,
10319        non_snake_case,
10320        clippy::pub_underscore_fields,
10321        clippy::style
10322    )]
10323    const _: () = {
10324        use alloy::sol_types as alloy_sol_types;
10325        {
10326            #[doc(hidden)]
10327            #[allow(dead_code)]
10328            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10329            #[doc(hidden)]
10330            type UnderlyingRustTuple<'a> = (u64,);
10331            #[cfg(test)]
10332            #[allow(dead_code, unreachable_patterns)]
10333            fn _type_assertion(
10334                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10335            ) {
10336                match _t {
10337                    alloy_sol_types::private::AssertTypeEq::<
10338                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10339                    >(_) => {}
10340                }
10341            }
10342            #[automatically_derived]
10343            #[doc(hidden)]
10344            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10345                fn from(value: isGtEpochRootCall) -> Self {
10346                    (value.blockHeight,)
10347                }
10348            }
10349            #[automatically_derived]
10350            #[doc(hidden)]
10351            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10352                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10353                    Self { blockHeight: tuple.0 }
10354                }
10355            }
10356        }
10357        {
10358            #[doc(hidden)]
10359            #[allow(dead_code)]
10360            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10361            #[doc(hidden)]
10362            type UnderlyingRustTuple<'a> = (bool,);
10363            #[cfg(test)]
10364            #[allow(dead_code, unreachable_patterns)]
10365            fn _type_assertion(
10366                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10367            ) {
10368                match _t {
10369                    alloy_sol_types::private::AssertTypeEq::<
10370                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10371                    >(_) => {}
10372                }
10373            }
10374            #[automatically_derived]
10375            #[doc(hidden)]
10376            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10377                fn from(value: isGtEpochRootReturn) -> Self {
10378                    (value._0,)
10379                }
10380            }
10381            #[automatically_derived]
10382            #[doc(hidden)]
10383            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10384                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10385                    Self { _0: tuple.0 }
10386                }
10387            }
10388        }
10389        #[automatically_derived]
10390        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10391            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10392            type Token<'a> = <Self::Parameters<
10393                'a,
10394            > as alloy_sol_types::SolType>::Token<'a>;
10395            type Return = bool;
10396            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10397            type ReturnToken<'a> = <Self::ReturnTuple<
10398                'a,
10399            > as alloy_sol_types::SolType>::Token<'a>;
10400            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10401            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10402            #[inline]
10403            fn new<'a>(
10404                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10405            ) -> Self {
10406                tuple.into()
10407            }
10408            #[inline]
10409            fn tokenize(&self) -> Self::Token<'_> {
10410                (
10411                    <alloy::sol_types::sol_data::Uint<
10412                        64,
10413                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10414                )
10415            }
10416            #[inline]
10417            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10418                (
10419                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10420                        ret,
10421                    ),
10422                )
10423            }
10424            #[inline]
10425            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10426                <Self::ReturnTuple<
10427                    '_,
10428                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10429                    .map(|r| {
10430                        let r: isGtEpochRootReturn = r.into();
10431                        r._0
10432                    })
10433            }
10434            #[inline]
10435            fn abi_decode_returns_validate(
10436                data: &[u8],
10437            ) -> alloy_sol_types::Result<Self::Return> {
10438                <Self::ReturnTuple<
10439                    '_,
10440                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10441                    .map(|r| {
10442                        let r: isGtEpochRootReturn = r.into();
10443                        r._0
10444                    })
10445            }
10446        }
10447    };
10448    #[derive(serde::Serialize, serde::Deserialize)]
10449    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10450    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10451```solidity
10452function isPermissionedProverEnabled() external view returns (bool);
10453```*/
10454    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10455    #[derive(Clone)]
10456    pub struct isPermissionedProverEnabledCall;
10457    #[derive(serde::Serialize, serde::Deserialize)]
10458    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10459    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10460    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10461    #[derive(Clone)]
10462    pub struct isPermissionedProverEnabledReturn {
10463        #[allow(missing_docs)]
10464        pub _0: bool,
10465    }
10466    #[allow(
10467        non_camel_case_types,
10468        non_snake_case,
10469        clippy::pub_underscore_fields,
10470        clippy::style
10471    )]
10472    const _: () = {
10473        use alloy::sol_types as alloy_sol_types;
10474        {
10475            #[doc(hidden)]
10476            #[allow(dead_code)]
10477            type UnderlyingSolTuple<'a> = ();
10478            #[doc(hidden)]
10479            type UnderlyingRustTuple<'a> = ();
10480            #[cfg(test)]
10481            #[allow(dead_code, unreachable_patterns)]
10482            fn _type_assertion(
10483                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10484            ) {
10485                match _t {
10486                    alloy_sol_types::private::AssertTypeEq::<
10487                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10488                    >(_) => {}
10489                }
10490            }
10491            #[automatically_derived]
10492            #[doc(hidden)]
10493            impl ::core::convert::From<isPermissionedProverEnabledCall>
10494            for UnderlyingRustTuple<'_> {
10495                fn from(value: isPermissionedProverEnabledCall) -> Self {
10496                    ()
10497                }
10498            }
10499            #[automatically_derived]
10500            #[doc(hidden)]
10501            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10502            for isPermissionedProverEnabledCall {
10503                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10504                    Self
10505                }
10506            }
10507        }
10508        {
10509            #[doc(hidden)]
10510            #[allow(dead_code)]
10511            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10512            #[doc(hidden)]
10513            type UnderlyingRustTuple<'a> = (bool,);
10514            #[cfg(test)]
10515            #[allow(dead_code, unreachable_patterns)]
10516            fn _type_assertion(
10517                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10518            ) {
10519                match _t {
10520                    alloy_sol_types::private::AssertTypeEq::<
10521                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10522                    >(_) => {}
10523                }
10524            }
10525            #[automatically_derived]
10526            #[doc(hidden)]
10527            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10528            for UnderlyingRustTuple<'_> {
10529                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10530                    (value._0,)
10531                }
10532            }
10533            #[automatically_derived]
10534            #[doc(hidden)]
10535            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10536            for isPermissionedProverEnabledReturn {
10537                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10538                    Self { _0: tuple.0 }
10539                }
10540            }
10541        }
10542        #[automatically_derived]
10543        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10544            type Parameters<'a> = ();
10545            type Token<'a> = <Self::Parameters<
10546                'a,
10547            > as alloy_sol_types::SolType>::Token<'a>;
10548            type Return = bool;
10549            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10550            type ReturnToken<'a> = <Self::ReturnTuple<
10551                'a,
10552            > as alloy_sol_types::SolType>::Token<'a>;
10553            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10554            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10555            #[inline]
10556            fn new<'a>(
10557                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10558            ) -> Self {
10559                tuple.into()
10560            }
10561            #[inline]
10562            fn tokenize(&self) -> Self::Token<'_> {
10563                ()
10564            }
10565            #[inline]
10566            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10567                (
10568                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10569                        ret,
10570                    ),
10571                )
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(|r| {
10579                        let r: isPermissionedProverEnabledReturn = r.into();
10580                        r._0
10581                    })
10582            }
10583            #[inline]
10584            fn abi_decode_returns_validate(
10585                data: &[u8],
10586            ) -> alloy_sol_types::Result<Self::Return> {
10587                <Self::ReturnTuple<
10588                    '_,
10589                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10590                    .map(|r| {
10591                        let r: isPermissionedProverEnabledReturn = r.into();
10592                        r._0
10593                    })
10594            }
10595        }
10596    };
10597    #[derive(serde::Serialize, serde::Deserialize)]
10598    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10599    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10600```solidity
10601function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10602```*/
10603    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10604    #[derive(Clone)]
10605    pub struct lagOverEscapeHatchThresholdCall {
10606        #[allow(missing_docs)]
10607        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10608        #[allow(missing_docs)]
10609        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10610    }
10611    #[derive(serde::Serialize, serde::Deserialize)]
10612    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10613    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10614    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10615    #[derive(Clone)]
10616    pub struct lagOverEscapeHatchThresholdReturn {
10617        #[allow(missing_docs)]
10618        pub _0: bool,
10619    }
10620    #[allow(
10621        non_camel_case_types,
10622        non_snake_case,
10623        clippy::pub_underscore_fields,
10624        clippy::style
10625    )]
10626    const _: () = {
10627        use alloy::sol_types as alloy_sol_types;
10628        {
10629            #[doc(hidden)]
10630            #[allow(dead_code)]
10631            type UnderlyingSolTuple<'a> = (
10632                alloy::sol_types::sol_data::Uint<256>,
10633                alloy::sol_types::sol_data::Uint<256>,
10634            );
10635            #[doc(hidden)]
10636            type UnderlyingRustTuple<'a> = (
10637                alloy::sol_types::private::primitives::aliases::U256,
10638                alloy::sol_types::private::primitives::aliases::U256,
10639            );
10640            #[cfg(test)]
10641            #[allow(dead_code, unreachable_patterns)]
10642            fn _type_assertion(
10643                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10644            ) {
10645                match _t {
10646                    alloy_sol_types::private::AssertTypeEq::<
10647                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10648                    >(_) => {}
10649                }
10650            }
10651            #[automatically_derived]
10652            #[doc(hidden)]
10653            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10654            for UnderlyingRustTuple<'_> {
10655                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10656                    (value.blockNumber, value.blockThreshold)
10657                }
10658            }
10659            #[automatically_derived]
10660            #[doc(hidden)]
10661            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10662            for lagOverEscapeHatchThresholdCall {
10663                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10664                    Self {
10665                        blockNumber: tuple.0,
10666                        blockThreshold: tuple.1,
10667                    }
10668                }
10669            }
10670        }
10671        {
10672            #[doc(hidden)]
10673            #[allow(dead_code)]
10674            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10675            #[doc(hidden)]
10676            type UnderlyingRustTuple<'a> = (bool,);
10677            #[cfg(test)]
10678            #[allow(dead_code, unreachable_patterns)]
10679            fn _type_assertion(
10680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10681            ) {
10682                match _t {
10683                    alloy_sol_types::private::AssertTypeEq::<
10684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10685                    >(_) => {}
10686                }
10687            }
10688            #[automatically_derived]
10689            #[doc(hidden)]
10690            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10691            for UnderlyingRustTuple<'_> {
10692                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10693                    (value._0,)
10694                }
10695            }
10696            #[automatically_derived]
10697            #[doc(hidden)]
10698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10699            for lagOverEscapeHatchThresholdReturn {
10700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10701                    Self { _0: tuple.0 }
10702                }
10703            }
10704        }
10705        #[automatically_derived]
10706        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10707            type Parameters<'a> = (
10708                alloy::sol_types::sol_data::Uint<256>,
10709                alloy::sol_types::sol_data::Uint<256>,
10710            );
10711            type Token<'a> = <Self::Parameters<
10712                'a,
10713            > as alloy_sol_types::SolType>::Token<'a>;
10714            type Return = bool;
10715            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10716            type ReturnToken<'a> = <Self::ReturnTuple<
10717                'a,
10718            > as alloy_sol_types::SolType>::Token<'a>;
10719            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10720            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10721            #[inline]
10722            fn new<'a>(
10723                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10724            ) -> Self {
10725                tuple.into()
10726            }
10727            #[inline]
10728            fn tokenize(&self) -> Self::Token<'_> {
10729                (
10730                    <alloy::sol_types::sol_data::Uint<
10731                        256,
10732                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10733                    <alloy::sol_types::sol_data::Uint<
10734                        256,
10735                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
10736                )
10737            }
10738            #[inline]
10739            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10740                (
10741                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10742                        ret,
10743                    ),
10744                )
10745            }
10746            #[inline]
10747            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10748                <Self::ReturnTuple<
10749                    '_,
10750                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10751                    .map(|r| {
10752                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10753                        r._0
10754                    })
10755            }
10756            #[inline]
10757            fn abi_decode_returns_validate(
10758                data: &[u8],
10759            ) -> alloy_sol_types::Result<Self::Return> {
10760                <Self::ReturnTuple<
10761                    '_,
10762                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10763                    .map(|r| {
10764                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10765                        r._0
10766                    })
10767            }
10768        }
10769    };
10770    #[derive(serde::Serialize, serde::Deserialize)]
10771    #[derive()]
10772    /**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`.
10773```solidity
10774function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10775```*/
10776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10777    #[derive(Clone)]
10778    pub struct newFinalizedState_0Call {
10779        #[allow(missing_docs)]
10780        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10781        #[allow(missing_docs)]
10782        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10783    }
10784    ///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.
10785    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10786    #[derive(Clone)]
10787    pub struct newFinalizedState_0Return {}
10788    #[allow(
10789        non_camel_case_types,
10790        non_snake_case,
10791        clippy::pub_underscore_fields,
10792        clippy::style
10793    )]
10794    const _: () = {
10795        use alloy::sol_types as alloy_sol_types;
10796        {
10797            #[doc(hidden)]
10798            #[allow(dead_code)]
10799            type UnderlyingSolTuple<'a> = (
10800                LightClient::LightClientState,
10801                IPlonkVerifier::PlonkProof,
10802            );
10803            #[doc(hidden)]
10804            type UnderlyingRustTuple<'a> = (
10805                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10806                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10807            );
10808            #[cfg(test)]
10809            #[allow(dead_code, unreachable_patterns)]
10810            fn _type_assertion(
10811                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10812            ) {
10813                match _t {
10814                    alloy_sol_types::private::AssertTypeEq::<
10815                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10816                    >(_) => {}
10817                }
10818            }
10819            #[automatically_derived]
10820            #[doc(hidden)]
10821            impl ::core::convert::From<newFinalizedState_0Call>
10822            for UnderlyingRustTuple<'_> {
10823                fn from(value: newFinalizedState_0Call) -> Self {
10824                    (value._0, value._1)
10825                }
10826            }
10827            #[automatically_derived]
10828            #[doc(hidden)]
10829            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10830            for newFinalizedState_0Call {
10831                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10832                    Self { _0: tuple.0, _1: tuple.1 }
10833                }
10834            }
10835        }
10836        {
10837            #[doc(hidden)]
10838            #[allow(dead_code)]
10839            type UnderlyingSolTuple<'a> = ();
10840            #[doc(hidden)]
10841            type UnderlyingRustTuple<'a> = ();
10842            #[cfg(test)]
10843            #[allow(dead_code, unreachable_patterns)]
10844            fn _type_assertion(
10845                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10846            ) {
10847                match _t {
10848                    alloy_sol_types::private::AssertTypeEq::<
10849                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10850                    >(_) => {}
10851                }
10852            }
10853            #[automatically_derived]
10854            #[doc(hidden)]
10855            impl ::core::convert::From<newFinalizedState_0Return>
10856            for UnderlyingRustTuple<'_> {
10857                fn from(value: newFinalizedState_0Return) -> Self {
10858                    ()
10859                }
10860            }
10861            #[automatically_derived]
10862            #[doc(hidden)]
10863            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10864            for newFinalizedState_0Return {
10865                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10866                    Self {}
10867                }
10868            }
10869        }
10870        impl newFinalizedState_0Return {
10871            fn _tokenize(
10872                &self,
10873            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10874                ()
10875            }
10876        }
10877        #[automatically_derived]
10878        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10879            type Parameters<'a> = (
10880                LightClient::LightClientState,
10881                IPlonkVerifier::PlonkProof,
10882            );
10883            type Token<'a> = <Self::Parameters<
10884                'a,
10885            > as alloy_sol_types::SolType>::Token<'a>;
10886            type Return = newFinalizedState_0Return;
10887            type ReturnTuple<'a> = ();
10888            type ReturnToken<'a> = <Self::ReturnTuple<
10889                'a,
10890            > as alloy_sol_types::SolType>::Token<'a>;
10891            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))";
10892            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10893            #[inline]
10894            fn new<'a>(
10895                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10896            ) -> Self {
10897                tuple.into()
10898            }
10899            #[inline]
10900            fn tokenize(&self) -> Self::Token<'_> {
10901                (
10902                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10903                        &self._0,
10904                    ),
10905                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10906                        &self._1,
10907                    ),
10908                )
10909            }
10910            #[inline]
10911            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10912                newFinalizedState_0Return::_tokenize(ret)
10913            }
10914            #[inline]
10915            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10916                <Self::ReturnTuple<
10917                    '_,
10918                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10919                    .map(Into::into)
10920            }
10921            #[inline]
10922            fn abi_decode_returns_validate(
10923                data: &[u8],
10924            ) -> alloy_sol_types::Result<Self::Return> {
10925                <Self::ReturnTuple<
10926                    '_,
10927                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10928                    .map(Into::into)
10929            }
10930        }
10931    };
10932    #[derive(serde::Serialize, serde::Deserialize)]
10933    #[derive()]
10934    /**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`.
10935```solidity
10936function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
10937```*/
10938    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10939    #[derive(Clone)]
10940    pub struct newFinalizedState_1Call {
10941        #[allow(missing_docs)]
10942        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10943        #[allow(missing_docs)]
10944        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10945        #[allow(missing_docs)]
10946        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10947    }
10948    ///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.
10949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10950    #[derive(Clone)]
10951    pub struct newFinalizedState_1Return {}
10952    #[allow(
10953        non_camel_case_types,
10954        non_snake_case,
10955        clippy::pub_underscore_fields,
10956        clippy::style
10957    )]
10958    const _: () = {
10959        use alloy::sol_types as alloy_sol_types;
10960        {
10961            #[doc(hidden)]
10962            #[allow(dead_code)]
10963            type UnderlyingSolTuple<'a> = (
10964                LightClient::LightClientState,
10965                LightClient::StakeTableState,
10966                IPlonkVerifier::PlonkProof,
10967            );
10968            #[doc(hidden)]
10969            type UnderlyingRustTuple<'a> = (
10970                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10971                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10972                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10973            );
10974            #[cfg(test)]
10975            #[allow(dead_code, unreachable_patterns)]
10976            fn _type_assertion(
10977                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10978            ) {
10979                match _t {
10980                    alloy_sol_types::private::AssertTypeEq::<
10981                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10982                    >(_) => {}
10983                }
10984            }
10985            #[automatically_derived]
10986            #[doc(hidden)]
10987            impl ::core::convert::From<newFinalizedState_1Call>
10988            for UnderlyingRustTuple<'_> {
10989                fn from(value: newFinalizedState_1Call) -> Self {
10990                    (value.newState, value.nextStakeTable, value.proof)
10991                }
10992            }
10993            #[automatically_derived]
10994            #[doc(hidden)]
10995            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10996            for newFinalizedState_1Call {
10997                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10998                    Self {
10999                        newState: tuple.0,
11000                        nextStakeTable: tuple.1,
11001                        proof: tuple.2,
11002                    }
11003                }
11004            }
11005        }
11006        {
11007            #[doc(hidden)]
11008            #[allow(dead_code)]
11009            type UnderlyingSolTuple<'a> = ();
11010            #[doc(hidden)]
11011            type UnderlyingRustTuple<'a> = ();
11012            #[cfg(test)]
11013            #[allow(dead_code, unreachable_patterns)]
11014            fn _type_assertion(
11015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11016            ) {
11017                match _t {
11018                    alloy_sol_types::private::AssertTypeEq::<
11019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11020                    >(_) => {}
11021                }
11022            }
11023            #[automatically_derived]
11024            #[doc(hidden)]
11025            impl ::core::convert::From<newFinalizedState_1Return>
11026            for UnderlyingRustTuple<'_> {
11027                fn from(value: newFinalizedState_1Return) -> Self {
11028                    ()
11029                }
11030            }
11031            #[automatically_derived]
11032            #[doc(hidden)]
11033            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11034            for newFinalizedState_1Return {
11035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11036                    Self {}
11037                }
11038            }
11039        }
11040        impl newFinalizedState_1Return {
11041            fn _tokenize(
11042                &self,
11043            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11044                ()
11045            }
11046        }
11047        #[automatically_derived]
11048        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11049            type Parameters<'a> = (
11050                LightClient::LightClientState,
11051                LightClient::StakeTableState,
11052                IPlonkVerifier::PlonkProof,
11053            );
11054            type Token<'a> = <Self::Parameters<
11055                'a,
11056            > as alloy_sol_types::SolType>::Token<'a>;
11057            type Return = newFinalizedState_1Return;
11058            type ReturnTuple<'a> = ();
11059            type ReturnToken<'a> = <Self::ReturnTuple<
11060                'a,
11061            > as alloy_sol_types::SolType>::Token<'a>;
11062            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))";
11063            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11064            #[inline]
11065            fn new<'a>(
11066                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11067            ) -> Self {
11068                tuple.into()
11069            }
11070            #[inline]
11071            fn tokenize(&self) -> Self::Token<'_> {
11072                (
11073                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11074                        &self.newState,
11075                    ),
11076                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11077                        &self.nextStakeTable,
11078                    ),
11079                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11080                        &self.proof,
11081                    ),
11082                )
11083            }
11084            #[inline]
11085            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11086                newFinalizedState_1Return::_tokenize(ret)
11087            }
11088            #[inline]
11089            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11090                <Self::ReturnTuple<
11091                    '_,
11092                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11093                    .map(Into::into)
11094            }
11095            #[inline]
11096            fn abi_decode_returns_validate(
11097                data: &[u8],
11098            ) -> alloy_sol_types::Result<Self::Return> {
11099                <Self::ReturnTuple<
11100                    '_,
11101                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11102                    .map(Into::into)
11103            }
11104        }
11105    };
11106    #[derive(serde::Serialize, serde::Deserialize)]
11107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11108    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11109```solidity
11110function owner() external view returns (address);
11111```*/
11112    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11113    #[derive(Clone)]
11114    pub struct ownerCall;
11115    #[derive(serde::Serialize, serde::Deserialize)]
11116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11117    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11118    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11119    #[derive(Clone)]
11120    pub struct ownerReturn {
11121        #[allow(missing_docs)]
11122        pub _0: alloy::sol_types::private::Address,
11123    }
11124    #[allow(
11125        non_camel_case_types,
11126        non_snake_case,
11127        clippy::pub_underscore_fields,
11128        clippy::style
11129    )]
11130    const _: () = {
11131        use alloy::sol_types as alloy_sol_types;
11132        {
11133            #[doc(hidden)]
11134            #[allow(dead_code)]
11135            type UnderlyingSolTuple<'a> = ();
11136            #[doc(hidden)]
11137            type UnderlyingRustTuple<'a> = ();
11138            #[cfg(test)]
11139            #[allow(dead_code, unreachable_patterns)]
11140            fn _type_assertion(
11141                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11142            ) {
11143                match _t {
11144                    alloy_sol_types::private::AssertTypeEq::<
11145                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11146                    >(_) => {}
11147                }
11148            }
11149            #[automatically_derived]
11150            #[doc(hidden)]
11151            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11152                fn from(value: ownerCall) -> Self {
11153                    ()
11154                }
11155            }
11156            #[automatically_derived]
11157            #[doc(hidden)]
11158            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11159                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11160                    Self
11161                }
11162            }
11163        }
11164        {
11165            #[doc(hidden)]
11166            #[allow(dead_code)]
11167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11168            #[doc(hidden)]
11169            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11170            #[cfg(test)]
11171            #[allow(dead_code, unreachable_patterns)]
11172            fn _type_assertion(
11173                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11174            ) {
11175                match _t {
11176                    alloy_sol_types::private::AssertTypeEq::<
11177                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11178                    >(_) => {}
11179                }
11180            }
11181            #[automatically_derived]
11182            #[doc(hidden)]
11183            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11184                fn from(value: ownerReturn) -> Self {
11185                    (value._0,)
11186                }
11187            }
11188            #[automatically_derived]
11189            #[doc(hidden)]
11190            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11191                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11192                    Self { _0: tuple.0 }
11193                }
11194            }
11195        }
11196        #[automatically_derived]
11197        impl alloy_sol_types::SolCall for ownerCall {
11198            type Parameters<'a> = ();
11199            type Token<'a> = <Self::Parameters<
11200                'a,
11201            > as alloy_sol_types::SolType>::Token<'a>;
11202            type Return = alloy::sol_types::private::Address;
11203            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11204            type ReturnToken<'a> = <Self::ReturnTuple<
11205                'a,
11206            > as alloy_sol_types::SolType>::Token<'a>;
11207            const SIGNATURE: &'static str = "owner()";
11208            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11209            #[inline]
11210            fn new<'a>(
11211                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11212            ) -> Self {
11213                tuple.into()
11214            }
11215            #[inline]
11216            fn tokenize(&self) -> Self::Token<'_> {
11217                ()
11218            }
11219            #[inline]
11220            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11221                (
11222                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11223                        ret,
11224                    ),
11225                )
11226            }
11227            #[inline]
11228            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11229                <Self::ReturnTuple<
11230                    '_,
11231                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11232                    .map(|r| {
11233                        let r: ownerReturn = r.into();
11234                        r._0
11235                    })
11236            }
11237            #[inline]
11238            fn abi_decode_returns_validate(
11239                data: &[u8],
11240            ) -> alloy_sol_types::Result<Self::Return> {
11241                <Self::ReturnTuple<
11242                    '_,
11243                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11244                    .map(|r| {
11245                        let r: ownerReturn = r.into();
11246                        r._0
11247                    })
11248            }
11249        }
11250    };
11251    #[derive(serde::Serialize, serde::Deserialize)]
11252    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11253    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11254```solidity
11255function permissionedProver() external view returns (address);
11256```*/
11257    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11258    #[derive(Clone)]
11259    pub struct permissionedProverCall;
11260    #[derive(serde::Serialize, serde::Deserialize)]
11261    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11262    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11264    #[derive(Clone)]
11265    pub struct permissionedProverReturn {
11266        #[allow(missing_docs)]
11267        pub _0: alloy::sol_types::private::Address,
11268    }
11269    #[allow(
11270        non_camel_case_types,
11271        non_snake_case,
11272        clippy::pub_underscore_fields,
11273        clippy::style
11274    )]
11275    const _: () = {
11276        use alloy::sol_types as alloy_sol_types;
11277        {
11278            #[doc(hidden)]
11279            #[allow(dead_code)]
11280            type UnderlyingSolTuple<'a> = ();
11281            #[doc(hidden)]
11282            type UnderlyingRustTuple<'a> = ();
11283            #[cfg(test)]
11284            #[allow(dead_code, unreachable_patterns)]
11285            fn _type_assertion(
11286                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11287            ) {
11288                match _t {
11289                    alloy_sol_types::private::AssertTypeEq::<
11290                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11291                    >(_) => {}
11292                }
11293            }
11294            #[automatically_derived]
11295            #[doc(hidden)]
11296            impl ::core::convert::From<permissionedProverCall>
11297            for UnderlyingRustTuple<'_> {
11298                fn from(value: permissionedProverCall) -> Self {
11299                    ()
11300                }
11301            }
11302            #[automatically_derived]
11303            #[doc(hidden)]
11304            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11305            for permissionedProverCall {
11306                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11307                    Self
11308                }
11309            }
11310        }
11311        {
11312            #[doc(hidden)]
11313            #[allow(dead_code)]
11314            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11315            #[doc(hidden)]
11316            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11317            #[cfg(test)]
11318            #[allow(dead_code, unreachable_patterns)]
11319            fn _type_assertion(
11320                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11321            ) {
11322                match _t {
11323                    alloy_sol_types::private::AssertTypeEq::<
11324                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11325                    >(_) => {}
11326                }
11327            }
11328            #[automatically_derived]
11329            #[doc(hidden)]
11330            impl ::core::convert::From<permissionedProverReturn>
11331            for UnderlyingRustTuple<'_> {
11332                fn from(value: permissionedProverReturn) -> Self {
11333                    (value._0,)
11334                }
11335            }
11336            #[automatically_derived]
11337            #[doc(hidden)]
11338            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11339            for permissionedProverReturn {
11340                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11341                    Self { _0: tuple.0 }
11342                }
11343            }
11344        }
11345        #[automatically_derived]
11346        impl alloy_sol_types::SolCall for permissionedProverCall {
11347            type Parameters<'a> = ();
11348            type Token<'a> = <Self::Parameters<
11349                'a,
11350            > as alloy_sol_types::SolType>::Token<'a>;
11351            type Return = alloy::sol_types::private::Address;
11352            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11353            type ReturnToken<'a> = <Self::ReturnTuple<
11354                'a,
11355            > as alloy_sol_types::SolType>::Token<'a>;
11356            const SIGNATURE: &'static str = "permissionedProver()";
11357            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11358            #[inline]
11359            fn new<'a>(
11360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11361            ) -> Self {
11362                tuple.into()
11363            }
11364            #[inline]
11365            fn tokenize(&self) -> Self::Token<'_> {
11366                ()
11367            }
11368            #[inline]
11369            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11370                (
11371                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11372                        ret,
11373                    ),
11374                )
11375            }
11376            #[inline]
11377            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11378                <Self::ReturnTuple<
11379                    '_,
11380                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11381                    .map(|r| {
11382                        let r: permissionedProverReturn = r.into();
11383                        r._0
11384                    })
11385            }
11386            #[inline]
11387            fn abi_decode_returns_validate(
11388                data: &[u8],
11389            ) -> alloy_sol_types::Result<Self::Return> {
11390                <Self::ReturnTuple<
11391                    '_,
11392                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11393                    .map(|r| {
11394                        let r: permissionedProverReturn = r.into();
11395                        r._0
11396                    })
11397            }
11398        }
11399    };
11400    #[derive(serde::Serialize, serde::Deserialize)]
11401    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11402    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11403```solidity
11404function proxiableUUID() external view returns (bytes32);
11405```*/
11406    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11407    #[derive(Clone)]
11408    pub struct proxiableUUIDCall;
11409    #[derive(serde::Serialize, serde::Deserialize)]
11410    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11411    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11412    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11413    #[derive(Clone)]
11414    pub struct proxiableUUIDReturn {
11415        #[allow(missing_docs)]
11416        pub _0: alloy::sol_types::private::FixedBytes<32>,
11417    }
11418    #[allow(
11419        non_camel_case_types,
11420        non_snake_case,
11421        clippy::pub_underscore_fields,
11422        clippy::style
11423    )]
11424    const _: () = {
11425        use alloy::sol_types as alloy_sol_types;
11426        {
11427            #[doc(hidden)]
11428            #[allow(dead_code)]
11429            type UnderlyingSolTuple<'a> = ();
11430            #[doc(hidden)]
11431            type UnderlyingRustTuple<'a> = ();
11432            #[cfg(test)]
11433            #[allow(dead_code, unreachable_patterns)]
11434            fn _type_assertion(
11435                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11436            ) {
11437                match _t {
11438                    alloy_sol_types::private::AssertTypeEq::<
11439                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11440                    >(_) => {}
11441                }
11442            }
11443            #[automatically_derived]
11444            #[doc(hidden)]
11445            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11446                fn from(value: proxiableUUIDCall) -> Self {
11447                    ()
11448                }
11449            }
11450            #[automatically_derived]
11451            #[doc(hidden)]
11452            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11453                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11454                    Self
11455                }
11456            }
11457        }
11458        {
11459            #[doc(hidden)]
11460            #[allow(dead_code)]
11461            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11462            #[doc(hidden)]
11463            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11464            #[cfg(test)]
11465            #[allow(dead_code, unreachable_patterns)]
11466            fn _type_assertion(
11467                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11468            ) {
11469                match _t {
11470                    alloy_sol_types::private::AssertTypeEq::<
11471                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11472                    >(_) => {}
11473                }
11474            }
11475            #[automatically_derived]
11476            #[doc(hidden)]
11477            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11478                fn from(value: proxiableUUIDReturn) -> Self {
11479                    (value._0,)
11480                }
11481            }
11482            #[automatically_derived]
11483            #[doc(hidden)]
11484            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11485                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11486                    Self { _0: tuple.0 }
11487                }
11488            }
11489        }
11490        #[automatically_derived]
11491        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11492            type Parameters<'a> = ();
11493            type Token<'a> = <Self::Parameters<
11494                'a,
11495            > as alloy_sol_types::SolType>::Token<'a>;
11496            type Return = alloy::sol_types::private::FixedBytes<32>;
11497            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11498            type ReturnToken<'a> = <Self::ReturnTuple<
11499                'a,
11500            > as alloy_sol_types::SolType>::Token<'a>;
11501            const SIGNATURE: &'static str = "proxiableUUID()";
11502            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11503            #[inline]
11504            fn new<'a>(
11505                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11506            ) -> Self {
11507                tuple.into()
11508            }
11509            #[inline]
11510            fn tokenize(&self) -> Self::Token<'_> {
11511                ()
11512            }
11513            #[inline]
11514            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11515                (
11516                    <alloy::sol_types::sol_data::FixedBytes<
11517                        32,
11518                    > as alloy_sol_types::SolType>::tokenize(ret),
11519                )
11520            }
11521            #[inline]
11522            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11523                <Self::ReturnTuple<
11524                    '_,
11525                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11526                    .map(|r| {
11527                        let r: proxiableUUIDReturn = r.into();
11528                        r._0
11529                    })
11530            }
11531            #[inline]
11532            fn abi_decode_returns_validate(
11533                data: &[u8],
11534            ) -> alloy_sol_types::Result<Self::Return> {
11535                <Self::ReturnTuple<
11536                    '_,
11537                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11538                    .map(|r| {
11539                        let r: proxiableUUIDReturn = r.into();
11540                        r._0
11541                    })
11542            }
11543        }
11544    };
11545    #[derive(serde::Serialize, serde::Deserialize)]
11546    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11547    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11548```solidity
11549function renounceOwnership() external;
11550```*/
11551    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11552    #[derive(Clone)]
11553    pub struct renounceOwnershipCall;
11554    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11555    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11556    #[derive(Clone)]
11557    pub struct renounceOwnershipReturn {}
11558    #[allow(
11559        non_camel_case_types,
11560        non_snake_case,
11561        clippy::pub_underscore_fields,
11562        clippy::style
11563    )]
11564    const _: () = {
11565        use alloy::sol_types as alloy_sol_types;
11566        {
11567            #[doc(hidden)]
11568            #[allow(dead_code)]
11569            type UnderlyingSolTuple<'a> = ();
11570            #[doc(hidden)]
11571            type UnderlyingRustTuple<'a> = ();
11572            #[cfg(test)]
11573            #[allow(dead_code, unreachable_patterns)]
11574            fn _type_assertion(
11575                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11576            ) {
11577                match _t {
11578                    alloy_sol_types::private::AssertTypeEq::<
11579                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11580                    >(_) => {}
11581                }
11582            }
11583            #[automatically_derived]
11584            #[doc(hidden)]
11585            impl ::core::convert::From<renounceOwnershipCall>
11586            for UnderlyingRustTuple<'_> {
11587                fn from(value: renounceOwnershipCall) -> Self {
11588                    ()
11589                }
11590            }
11591            #[automatically_derived]
11592            #[doc(hidden)]
11593            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11594            for renounceOwnershipCall {
11595                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11596                    Self
11597                }
11598            }
11599        }
11600        {
11601            #[doc(hidden)]
11602            #[allow(dead_code)]
11603            type UnderlyingSolTuple<'a> = ();
11604            #[doc(hidden)]
11605            type UnderlyingRustTuple<'a> = ();
11606            #[cfg(test)]
11607            #[allow(dead_code, unreachable_patterns)]
11608            fn _type_assertion(
11609                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11610            ) {
11611                match _t {
11612                    alloy_sol_types::private::AssertTypeEq::<
11613                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11614                    >(_) => {}
11615                }
11616            }
11617            #[automatically_derived]
11618            #[doc(hidden)]
11619            impl ::core::convert::From<renounceOwnershipReturn>
11620            for UnderlyingRustTuple<'_> {
11621                fn from(value: renounceOwnershipReturn) -> Self {
11622                    ()
11623                }
11624            }
11625            #[automatically_derived]
11626            #[doc(hidden)]
11627            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11628            for renounceOwnershipReturn {
11629                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11630                    Self {}
11631                }
11632            }
11633        }
11634        impl renounceOwnershipReturn {
11635            fn _tokenize(
11636                &self,
11637            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11638                ()
11639            }
11640        }
11641        #[automatically_derived]
11642        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11643            type Parameters<'a> = ();
11644            type Token<'a> = <Self::Parameters<
11645                'a,
11646            > as alloy_sol_types::SolType>::Token<'a>;
11647            type Return = renounceOwnershipReturn;
11648            type ReturnTuple<'a> = ();
11649            type ReturnToken<'a> = <Self::ReturnTuple<
11650                'a,
11651            > as alloy_sol_types::SolType>::Token<'a>;
11652            const SIGNATURE: &'static str = "renounceOwnership()";
11653            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11654            #[inline]
11655            fn new<'a>(
11656                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11657            ) -> Self {
11658                tuple.into()
11659            }
11660            #[inline]
11661            fn tokenize(&self) -> Self::Token<'_> {
11662                ()
11663            }
11664            #[inline]
11665            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11666                renounceOwnershipReturn::_tokenize(ret)
11667            }
11668            #[inline]
11669            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11670                <Self::ReturnTuple<
11671                    '_,
11672                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11673                    .map(Into::into)
11674            }
11675            #[inline]
11676            fn abi_decode_returns_validate(
11677                data: &[u8],
11678            ) -> alloy_sol_types::Result<Self::Return> {
11679                <Self::ReturnTuple<
11680                    '_,
11681                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11682                    .map(Into::into)
11683            }
11684        }
11685    };
11686    #[derive(serde::Serialize, serde::Deserialize)]
11687    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11688    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11689```solidity
11690function setPermissionedProver(address prover) external;
11691```*/
11692    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11693    #[derive(Clone)]
11694    pub struct setPermissionedProverCall {
11695        #[allow(missing_docs)]
11696        pub prover: alloy::sol_types::private::Address,
11697    }
11698    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11700    #[derive(Clone)]
11701    pub struct setPermissionedProverReturn {}
11702    #[allow(
11703        non_camel_case_types,
11704        non_snake_case,
11705        clippy::pub_underscore_fields,
11706        clippy::style
11707    )]
11708    const _: () = {
11709        use alloy::sol_types as alloy_sol_types;
11710        {
11711            #[doc(hidden)]
11712            #[allow(dead_code)]
11713            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11714            #[doc(hidden)]
11715            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11716            #[cfg(test)]
11717            #[allow(dead_code, unreachable_patterns)]
11718            fn _type_assertion(
11719                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11720            ) {
11721                match _t {
11722                    alloy_sol_types::private::AssertTypeEq::<
11723                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11724                    >(_) => {}
11725                }
11726            }
11727            #[automatically_derived]
11728            #[doc(hidden)]
11729            impl ::core::convert::From<setPermissionedProverCall>
11730            for UnderlyingRustTuple<'_> {
11731                fn from(value: setPermissionedProverCall) -> Self {
11732                    (value.prover,)
11733                }
11734            }
11735            #[automatically_derived]
11736            #[doc(hidden)]
11737            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11738            for setPermissionedProverCall {
11739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11740                    Self { prover: tuple.0 }
11741                }
11742            }
11743        }
11744        {
11745            #[doc(hidden)]
11746            #[allow(dead_code)]
11747            type UnderlyingSolTuple<'a> = ();
11748            #[doc(hidden)]
11749            type UnderlyingRustTuple<'a> = ();
11750            #[cfg(test)]
11751            #[allow(dead_code, unreachable_patterns)]
11752            fn _type_assertion(
11753                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11754            ) {
11755                match _t {
11756                    alloy_sol_types::private::AssertTypeEq::<
11757                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11758                    >(_) => {}
11759                }
11760            }
11761            #[automatically_derived]
11762            #[doc(hidden)]
11763            impl ::core::convert::From<setPermissionedProverReturn>
11764            for UnderlyingRustTuple<'_> {
11765                fn from(value: setPermissionedProverReturn) -> Self {
11766                    ()
11767                }
11768            }
11769            #[automatically_derived]
11770            #[doc(hidden)]
11771            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11772            for setPermissionedProverReturn {
11773                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11774                    Self {}
11775                }
11776            }
11777        }
11778        impl setPermissionedProverReturn {
11779            fn _tokenize(
11780                &self,
11781            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
11782                '_,
11783            > {
11784                ()
11785            }
11786        }
11787        #[automatically_derived]
11788        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11789            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11790            type Token<'a> = <Self::Parameters<
11791                'a,
11792            > as alloy_sol_types::SolType>::Token<'a>;
11793            type Return = setPermissionedProverReturn;
11794            type ReturnTuple<'a> = ();
11795            type ReturnToken<'a> = <Self::ReturnTuple<
11796                'a,
11797            > as alloy_sol_types::SolType>::Token<'a>;
11798            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11799            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11800            #[inline]
11801            fn new<'a>(
11802                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11803            ) -> Self {
11804                tuple.into()
11805            }
11806            #[inline]
11807            fn tokenize(&self) -> Self::Token<'_> {
11808                (
11809                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11810                        &self.prover,
11811                    ),
11812                )
11813            }
11814            #[inline]
11815            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11816                setPermissionedProverReturn::_tokenize(ret)
11817            }
11818            #[inline]
11819            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11820                <Self::ReturnTuple<
11821                    '_,
11822                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11823                    .map(Into::into)
11824            }
11825            #[inline]
11826            fn abi_decode_returns_validate(
11827                data: &[u8],
11828            ) -> alloy_sol_types::Result<Self::Return> {
11829                <Self::ReturnTuple<
11830                    '_,
11831                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11832                    .map(Into::into)
11833            }
11834        }
11835    };
11836    #[derive(serde::Serialize, serde::Deserialize)]
11837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11838    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11839```solidity
11840function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11841```*/
11842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11843    #[derive(Clone)]
11844    pub struct setStateHistoryRetentionPeriodCall {
11845        #[allow(missing_docs)]
11846        pub historySeconds: u32,
11847    }
11848    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11849    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11850    #[derive(Clone)]
11851    pub struct setStateHistoryRetentionPeriodReturn {}
11852    #[allow(
11853        non_camel_case_types,
11854        non_snake_case,
11855        clippy::pub_underscore_fields,
11856        clippy::style
11857    )]
11858    const _: () = {
11859        use alloy::sol_types as alloy_sol_types;
11860        {
11861            #[doc(hidden)]
11862            #[allow(dead_code)]
11863            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11864            #[doc(hidden)]
11865            type UnderlyingRustTuple<'a> = (u32,);
11866            #[cfg(test)]
11867            #[allow(dead_code, unreachable_patterns)]
11868            fn _type_assertion(
11869                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11870            ) {
11871                match _t {
11872                    alloy_sol_types::private::AssertTypeEq::<
11873                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11874                    >(_) => {}
11875                }
11876            }
11877            #[automatically_derived]
11878            #[doc(hidden)]
11879            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
11880            for UnderlyingRustTuple<'_> {
11881                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11882                    (value.historySeconds,)
11883                }
11884            }
11885            #[automatically_derived]
11886            #[doc(hidden)]
11887            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11888            for setStateHistoryRetentionPeriodCall {
11889                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11890                    Self { historySeconds: tuple.0 }
11891                }
11892            }
11893        }
11894        {
11895            #[doc(hidden)]
11896            #[allow(dead_code)]
11897            type UnderlyingSolTuple<'a> = ();
11898            #[doc(hidden)]
11899            type UnderlyingRustTuple<'a> = ();
11900            #[cfg(test)]
11901            #[allow(dead_code, unreachable_patterns)]
11902            fn _type_assertion(
11903                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11904            ) {
11905                match _t {
11906                    alloy_sol_types::private::AssertTypeEq::<
11907                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11908                    >(_) => {}
11909                }
11910            }
11911            #[automatically_derived]
11912            #[doc(hidden)]
11913            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
11914            for UnderlyingRustTuple<'_> {
11915                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11916                    ()
11917                }
11918            }
11919            #[automatically_derived]
11920            #[doc(hidden)]
11921            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11922            for setStateHistoryRetentionPeriodReturn {
11923                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11924                    Self {}
11925                }
11926            }
11927        }
11928        impl setStateHistoryRetentionPeriodReturn {
11929            fn _tokenize(
11930                &self,
11931            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
11932                '_,
11933            > {
11934                ()
11935            }
11936        }
11937        #[automatically_derived]
11938        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
11939            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11940            type Token<'a> = <Self::Parameters<
11941                'a,
11942            > as alloy_sol_types::SolType>::Token<'a>;
11943            type Return = setStateHistoryRetentionPeriodReturn;
11944            type ReturnTuple<'a> = ();
11945            type ReturnToken<'a> = <Self::ReturnTuple<
11946                'a,
11947            > as alloy_sol_types::SolType>::Token<'a>;
11948            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
11949            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
11950            #[inline]
11951            fn new<'a>(
11952                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11953            ) -> Self {
11954                tuple.into()
11955            }
11956            #[inline]
11957            fn tokenize(&self) -> Self::Token<'_> {
11958                (
11959                    <alloy::sol_types::sol_data::Uint<
11960                        32,
11961                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11962                )
11963            }
11964            #[inline]
11965            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11966                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
11967            }
11968            #[inline]
11969            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11970                <Self::ReturnTuple<
11971                    '_,
11972                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11973                    .map(Into::into)
11974            }
11975            #[inline]
11976            fn abi_decode_returns_validate(
11977                data: &[u8],
11978            ) -> alloy_sol_types::Result<Self::Return> {
11979                <Self::ReturnTuple<
11980                    '_,
11981                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11982                    .map(Into::into)
11983            }
11984        }
11985    };
11986    #[derive(serde::Serialize, serde::Deserialize)]
11987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11988    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
11989```solidity
11990function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
11991```*/
11992    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11993    #[derive(Clone)]
11994    pub struct setstateHistoryRetentionPeriodCall {
11995        #[allow(missing_docs)]
11996        pub historySeconds: u32,
11997    }
11998    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11999    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12000    #[derive(Clone)]
12001    pub struct setstateHistoryRetentionPeriodReturn {}
12002    #[allow(
12003        non_camel_case_types,
12004        non_snake_case,
12005        clippy::pub_underscore_fields,
12006        clippy::style
12007    )]
12008    const _: () = {
12009        use alloy::sol_types as alloy_sol_types;
12010        {
12011            #[doc(hidden)]
12012            #[allow(dead_code)]
12013            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12014            #[doc(hidden)]
12015            type UnderlyingRustTuple<'a> = (u32,);
12016            #[cfg(test)]
12017            #[allow(dead_code, unreachable_patterns)]
12018            fn _type_assertion(
12019                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12020            ) {
12021                match _t {
12022                    alloy_sol_types::private::AssertTypeEq::<
12023                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12024                    >(_) => {}
12025                }
12026            }
12027            #[automatically_derived]
12028            #[doc(hidden)]
12029            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12030            for UnderlyingRustTuple<'_> {
12031                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12032                    (value.historySeconds,)
12033                }
12034            }
12035            #[automatically_derived]
12036            #[doc(hidden)]
12037            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12038            for setstateHistoryRetentionPeriodCall {
12039                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12040                    Self { historySeconds: tuple.0 }
12041                }
12042            }
12043        }
12044        {
12045            #[doc(hidden)]
12046            #[allow(dead_code)]
12047            type UnderlyingSolTuple<'a> = ();
12048            #[doc(hidden)]
12049            type UnderlyingRustTuple<'a> = ();
12050            #[cfg(test)]
12051            #[allow(dead_code, unreachable_patterns)]
12052            fn _type_assertion(
12053                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12054            ) {
12055                match _t {
12056                    alloy_sol_types::private::AssertTypeEq::<
12057                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12058                    >(_) => {}
12059                }
12060            }
12061            #[automatically_derived]
12062            #[doc(hidden)]
12063            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12064            for UnderlyingRustTuple<'_> {
12065                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12066                    ()
12067                }
12068            }
12069            #[automatically_derived]
12070            #[doc(hidden)]
12071            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12072            for setstateHistoryRetentionPeriodReturn {
12073                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12074                    Self {}
12075                }
12076            }
12077        }
12078        impl setstateHistoryRetentionPeriodReturn {
12079            fn _tokenize(
12080                &self,
12081            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12082                '_,
12083            > {
12084                ()
12085            }
12086        }
12087        #[automatically_derived]
12088        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12089            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12090            type Token<'a> = <Self::Parameters<
12091                'a,
12092            > as alloy_sol_types::SolType>::Token<'a>;
12093            type Return = setstateHistoryRetentionPeriodReturn;
12094            type ReturnTuple<'a> = ();
12095            type ReturnToken<'a> = <Self::ReturnTuple<
12096                'a,
12097            > as alloy_sol_types::SolType>::Token<'a>;
12098            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12099            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12100            #[inline]
12101            fn new<'a>(
12102                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12103            ) -> Self {
12104                tuple.into()
12105            }
12106            #[inline]
12107            fn tokenize(&self) -> Self::Token<'_> {
12108                (
12109                    <alloy::sol_types::sol_data::Uint<
12110                        32,
12111                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12112                )
12113            }
12114            #[inline]
12115            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12116                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12117            }
12118            #[inline]
12119            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12120                <Self::ReturnTuple<
12121                    '_,
12122                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12123                    .map(Into::into)
12124            }
12125            #[inline]
12126            fn abi_decode_returns_validate(
12127                data: &[u8],
12128            ) -> alloy_sol_types::Result<Self::Return> {
12129                <Self::ReturnTuple<
12130                    '_,
12131                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12132                    .map(Into::into)
12133            }
12134        }
12135    };
12136    #[derive(serde::Serialize, serde::Deserialize)]
12137    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12138    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12139```solidity
12140function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12141```*/
12142    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12143    #[derive(Clone)]
12144    pub struct stateHistoryCommitmentsCall(
12145        pub alloy::sol_types::private::primitives::aliases::U256,
12146    );
12147    #[derive(serde::Serialize, serde::Deserialize)]
12148    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12149    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12150    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12151    #[derive(Clone)]
12152    pub struct stateHistoryCommitmentsReturn {
12153        #[allow(missing_docs)]
12154        pub l1BlockHeight: u64,
12155        #[allow(missing_docs)]
12156        pub l1BlockTimestamp: u64,
12157        #[allow(missing_docs)]
12158        pub hotShotBlockHeight: u64,
12159        #[allow(missing_docs)]
12160        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12161    }
12162    #[allow(
12163        non_camel_case_types,
12164        non_snake_case,
12165        clippy::pub_underscore_fields,
12166        clippy::style
12167    )]
12168    const _: () = {
12169        use alloy::sol_types as alloy_sol_types;
12170        {
12171            #[doc(hidden)]
12172            #[allow(dead_code)]
12173            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12174            #[doc(hidden)]
12175            type UnderlyingRustTuple<'a> = (
12176                alloy::sol_types::private::primitives::aliases::U256,
12177            );
12178            #[cfg(test)]
12179            #[allow(dead_code, unreachable_patterns)]
12180            fn _type_assertion(
12181                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12182            ) {
12183                match _t {
12184                    alloy_sol_types::private::AssertTypeEq::<
12185                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12186                    >(_) => {}
12187                }
12188            }
12189            #[automatically_derived]
12190            #[doc(hidden)]
12191            impl ::core::convert::From<stateHistoryCommitmentsCall>
12192            for UnderlyingRustTuple<'_> {
12193                fn from(value: stateHistoryCommitmentsCall) -> Self {
12194                    (value.0,)
12195                }
12196            }
12197            #[automatically_derived]
12198            #[doc(hidden)]
12199            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12200            for stateHistoryCommitmentsCall {
12201                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12202                    Self(tuple.0)
12203                }
12204            }
12205        }
12206        {
12207            #[doc(hidden)]
12208            #[allow(dead_code)]
12209            type UnderlyingSolTuple<'a> = (
12210                alloy::sol_types::sol_data::Uint<64>,
12211                alloy::sol_types::sol_data::Uint<64>,
12212                alloy::sol_types::sol_data::Uint<64>,
12213                BN254::ScalarField,
12214            );
12215            #[doc(hidden)]
12216            type UnderlyingRustTuple<'a> = (
12217                u64,
12218                u64,
12219                u64,
12220                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12221            );
12222            #[cfg(test)]
12223            #[allow(dead_code, unreachable_patterns)]
12224            fn _type_assertion(
12225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12226            ) {
12227                match _t {
12228                    alloy_sol_types::private::AssertTypeEq::<
12229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12230                    >(_) => {}
12231                }
12232            }
12233            #[automatically_derived]
12234            #[doc(hidden)]
12235            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12236            for UnderlyingRustTuple<'_> {
12237                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12238                    (
12239                        value.l1BlockHeight,
12240                        value.l1BlockTimestamp,
12241                        value.hotShotBlockHeight,
12242                        value.hotShotBlockCommRoot,
12243                    )
12244                }
12245            }
12246            #[automatically_derived]
12247            #[doc(hidden)]
12248            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12249            for stateHistoryCommitmentsReturn {
12250                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12251                    Self {
12252                        l1BlockHeight: tuple.0,
12253                        l1BlockTimestamp: tuple.1,
12254                        hotShotBlockHeight: tuple.2,
12255                        hotShotBlockCommRoot: tuple.3,
12256                    }
12257                }
12258            }
12259        }
12260        impl stateHistoryCommitmentsReturn {
12261            fn _tokenize(
12262                &self,
12263            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
12264                '_,
12265            > {
12266                (
12267                    <alloy::sol_types::sol_data::Uint<
12268                        64,
12269                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
12270                    <alloy::sol_types::sol_data::Uint<
12271                        64,
12272                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
12273                    <alloy::sol_types::sol_data::Uint<
12274                        64,
12275                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
12276                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
12277                        &self.hotShotBlockCommRoot,
12278                    ),
12279                )
12280            }
12281        }
12282        #[automatically_derived]
12283        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12284            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12285            type Token<'a> = <Self::Parameters<
12286                'a,
12287            > as alloy_sol_types::SolType>::Token<'a>;
12288            type Return = stateHistoryCommitmentsReturn;
12289            type ReturnTuple<'a> = (
12290                alloy::sol_types::sol_data::Uint<64>,
12291                alloy::sol_types::sol_data::Uint<64>,
12292                alloy::sol_types::sol_data::Uint<64>,
12293                BN254::ScalarField,
12294            );
12295            type ReturnToken<'a> = <Self::ReturnTuple<
12296                'a,
12297            > as alloy_sol_types::SolType>::Token<'a>;
12298            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12299            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12300            #[inline]
12301            fn new<'a>(
12302                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12303            ) -> Self {
12304                tuple.into()
12305            }
12306            #[inline]
12307            fn tokenize(&self) -> Self::Token<'_> {
12308                (
12309                    <alloy::sol_types::sol_data::Uint<
12310                        256,
12311                    > as alloy_sol_types::SolType>::tokenize(&self.0),
12312                )
12313            }
12314            #[inline]
12315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12316                stateHistoryCommitmentsReturn::_tokenize(ret)
12317            }
12318            #[inline]
12319            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12320                <Self::ReturnTuple<
12321                    '_,
12322                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12323                    .map(Into::into)
12324            }
12325            #[inline]
12326            fn abi_decode_returns_validate(
12327                data: &[u8],
12328            ) -> alloy_sol_types::Result<Self::Return> {
12329                <Self::ReturnTuple<
12330                    '_,
12331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12332                    .map(Into::into)
12333            }
12334        }
12335    };
12336    #[derive(serde::Serialize, serde::Deserialize)]
12337    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12338    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12339```solidity
12340function stateHistoryFirstIndex() external view returns (uint64);
12341```*/
12342    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12343    #[derive(Clone)]
12344    pub struct stateHistoryFirstIndexCall;
12345    #[derive(serde::Serialize, serde::Deserialize)]
12346    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12347    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12348    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12349    #[derive(Clone)]
12350    pub struct stateHistoryFirstIndexReturn {
12351        #[allow(missing_docs)]
12352        pub _0: u64,
12353    }
12354    #[allow(
12355        non_camel_case_types,
12356        non_snake_case,
12357        clippy::pub_underscore_fields,
12358        clippy::style
12359    )]
12360    const _: () = {
12361        use alloy::sol_types as alloy_sol_types;
12362        {
12363            #[doc(hidden)]
12364            #[allow(dead_code)]
12365            type UnderlyingSolTuple<'a> = ();
12366            #[doc(hidden)]
12367            type UnderlyingRustTuple<'a> = ();
12368            #[cfg(test)]
12369            #[allow(dead_code, unreachable_patterns)]
12370            fn _type_assertion(
12371                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12372            ) {
12373                match _t {
12374                    alloy_sol_types::private::AssertTypeEq::<
12375                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12376                    >(_) => {}
12377                }
12378            }
12379            #[automatically_derived]
12380            #[doc(hidden)]
12381            impl ::core::convert::From<stateHistoryFirstIndexCall>
12382            for UnderlyingRustTuple<'_> {
12383                fn from(value: stateHistoryFirstIndexCall) -> Self {
12384                    ()
12385                }
12386            }
12387            #[automatically_derived]
12388            #[doc(hidden)]
12389            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12390            for stateHistoryFirstIndexCall {
12391                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12392                    Self
12393                }
12394            }
12395        }
12396        {
12397            #[doc(hidden)]
12398            #[allow(dead_code)]
12399            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12400            #[doc(hidden)]
12401            type UnderlyingRustTuple<'a> = (u64,);
12402            #[cfg(test)]
12403            #[allow(dead_code, unreachable_patterns)]
12404            fn _type_assertion(
12405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12406            ) {
12407                match _t {
12408                    alloy_sol_types::private::AssertTypeEq::<
12409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12410                    >(_) => {}
12411                }
12412            }
12413            #[automatically_derived]
12414            #[doc(hidden)]
12415            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12416            for UnderlyingRustTuple<'_> {
12417                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12418                    (value._0,)
12419                }
12420            }
12421            #[automatically_derived]
12422            #[doc(hidden)]
12423            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12424            for stateHistoryFirstIndexReturn {
12425                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12426                    Self { _0: tuple.0 }
12427                }
12428            }
12429        }
12430        #[automatically_derived]
12431        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12432            type Parameters<'a> = ();
12433            type Token<'a> = <Self::Parameters<
12434                'a,
12435            > as alloy_sol_types::SolType>::Token<'a>;
12436            type Return = u64;
12437            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12438            type ReturnToken<'a> = <Self::ReturnTuple<
12439                'a,
12440            > as alloy_sol_types::SolType>::Token<'a>;
12441            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12442            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12443            #[inline]
12444            fn new<'a>(
12445                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12446            ) -> Self {
12447                tuple.into()
12448            }
12449            #[inline]
12450            fn tokenize(&self) -> Self::Token<'_> {
12451                ()
12452            }
12453            #[inline]
12454            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12455                (
12456                    <alloy::sol_types::sol_data::Uint<
12457                        64,
12458                    > as alloy_sol_types::SolType>::tokenize(ret),
12459                )
12460            }
12461            #[inline]
12462            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12463                <Self::ReturnTuple<
12464                    '_,
12465                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12466                    .map(|r| {
12467                        let r: stateHistoryFirstIndexReturn = r.into();
12468                        r._0
12469                    })
12470            }
12471            #[inline]
12472            fn abi_decode_returns_validate(
12473                data: &[u8],
12474            ) -> alloy_sol_types::Result<Self::Return> {
12475                <Self::ReturnTuple<
12476                    '_,
12477                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12478                    .map(|r| {
12479                        let r: stateHistoryFirstIndexReturn = r.into();
12480                        r._0
12481                    })
12482            }
12483        }
12484    };
12485    #[derive(serde::Serialize, serde::Deserialize)]
12486    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12487    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12488```solidity
12489function stateHistoryRetentionPeriod() external view returns (uint32);
12490```*/
12491    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12492    #[derive(Clone)]
12493    pub struct stateHistoryRetentionPeriodCall;
12494    #[derive(serde::Serialize, serde::Deserialize)]
12495    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12496    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12497    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12498    #[derive(Clone)]
12499    pub struct stateHistoryRetentionPeriodReturn {
12500        #[allow(missing_docs)]
12501        pub _0: u32,
12502    }
12503    #[allow(
12504        non_camel_case_types,
12505        non_snake_case,
12506        clippy::pub_underscore_fields,
12507        clippy::style
12508    )]
12509    const _: () = {
12510        use alloy::sol_types as alloy_sol_types;
12511        {
12512            #[doc(hidden)]
12513            #[allow(dead_code)]
12514            type UnderlyingSolTuple<'a> = ();
12515            #[doc(hidden)]
12516            type UnderlyingRustTuple<'a> = ();
12517            #[cfg(test)]
12518            #[allow(dead_code, unreachable_patterns)]
12519            fn _type_assertion(
12520                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12521            ) {
12522                match _t {
12523                    alloy_sol_types::private::AssertTypeEq::<
12524                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12525                    >(_) => {}
12526                }
12527            }
12528            #[automatically_derived]
12529            #[doc(hidden)]
12530            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12531            for UnderlyingRustTuple<'_> {
12532                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12533                    ()
12534                }
12535            }
12536            #[automatically_derived]
12537            #[doc(hidden)]
12538            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12539            for stateHistoryRetentionPeriodCall {
12540                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12541                    Self
12542                }
12543            }
12544        }
12545        {
12546            #[doc(hidden)]
12547            #[allow(dead_code)]
12548            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12549            #[doc(hidden)]
12550            type UnderlyingRustTuple<'a> = (u32,);
12551            #[cfg(test)]
12552            #[allow(dead_code, unreachable_patterns)]
12553            fn _type_assertion(
12554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12555            ) {
12556                match _t {
12557                    alloy_sol_types::private::AssertTypeEq::<
12558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12559                    >(_) => {}
12560                }
12561            }
12562            #[automatically_derived]
12563            #[doc(hidden)]
12564            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12565            for UnderlyingRustTuple<'_> {
12566                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12567                    (value._0,)
12568                }
12569            }
12570            #[automatically_derived]
12571            #[doc(hidden)]
12572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12573            for stateHistoryRetentionPeriodReturn {
12574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12575                    Self { _0: tuple.0 }
12576                }
12577            }
12578        }
12579        #[automatically_derived]
12580        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12581            type Parameters<'a> = ();
12582            type Token<'a> = <Self::Parameters<
12583                'a,
12584            > as alloy_sol_types::SolType>::Token<'a>;
12585            type Return = u32;
12586            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12587            type ReturnToken<'a> = <Self::ReturnTuple<
12588                'a,
12589            > as alloy_sol_types::SolType>::Token<'a>;
12590            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12591            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12592            #[inline]
12593            fn new<'a>(
12594                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12595            ) -> Self {
12596                tuple.into()
12597            }
12598            #[inline]
12599            fn tokenize(&self) -> Self::Token<'_> {
12600                ()
12601            }
12602            #[inline]
12603            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12604                (
12605                    <alloy::sol_types::sol_data::Uint<
12606                        32,
12607                    > as alloy_sol_types::SolType>::tokenize(ret),
12608                )
12609            }
12610            #[inline]
12611            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12612                <Self::ReturnTuple<
12613                    '_,
12614                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12615                    .map(|r| {
12616                        let r: stateHistoryRetentionPeriodReturn = r.into();
12617                        r._0
12618                    })
12619            }
12620            #[inline]
12621            fn abi_decode_returns_validate(
12622                data: &[u8],
12623            ) -> alloy_sol_types::Result<Self::Return> {
12624                <Self::ReturnTuple<
12625                    '_,
12626                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12627                    .map(|r| {
12628                        let r: stateHistoryRetentionPeriodReturn = r.into();
12629                        r._0
12630                    })
12631            }
12632        }
12633    };
12634    #[derive(serde::Serialize, serde::Deserialize)]
12635    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12636    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12637```solidity
12638function transferOwnership(address newOwner) external;
12639```*/
12640    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12641    #[derive(Clone)]
12642    pub struct transferOwnershipCall {
12643        #[allow(missing_docs)]
12644        pub newOwner: alloy::sol_types::private::Address,
12645    }
12646    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12648    #[derive(Clone)]
12649    pub struct transferOwnershipReturn {}
12650    #[allow(
12651        non_camel_case_types,
12652        non_snake_case,
12653        clippy::pub_underscore_fields,
12654        clippy::style
12655    )]
12656    const _: () = {
12657        use alloy::sol_types as alloy_sol_types;
12658        {
12659            #[doc(hidden)]
12660            #[allow(dead_code)]
12661            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12662            #[doc(hidden)]
12663            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12664            #[cfg(test)]
12665            #[allow(dead_code, unreachable_patterns)]
12666            fn _type_assertion(
12667                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12668            ) {
12669                match _t {
12670                    alloy_sol_types::private::AssertTypeEq::<
12671                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12672                    >(_) => {}
12673                }
12674            }
12675            #[automatically_derived]
12676            #[doc(hidden)]
12677            impl ::core::convert::From<transferOwnershipCall>
12678            for UnderlyingRustTuple<'_> {
12679                fn from(value: transferOwnershipCall) -> Self {
12680                    (value.newOwner,)
12681                }
12682            }
12683            #[automatically_derived]
12684            #[doc(hidden)]
12685            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12686            for transferOwnershipCall {
12687                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12688                    Self { newOwner: tuple.0 }
12689                }
12690            }
12691        }
12692        {
12693            #[doc(hidden)]
12694            #[allow(dead_code)]
12695            type UnderlyingSolTuple<'a> = ();
12696            #[doc(hidden)]
12697            type UnderlyingRustTuple<'a> = ();
12698            #[cfg(test)]
12699            #[allow(dead_code, unreachable_patterns)]
12700            fn _type_assertion(
12701                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12702            ) {
12703                match _t {
12704                    alloy_sol_types::private::AssertTypeEq::<
12705                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12706                    >(_) => {}
12707                }
12708            }
12709            #[automatically_derived]
12710            #[doc(hidden)]
12711            impl ::core::convert::From<transferOwnershipReturn>
12712            for UnderlyingRustTuple<'_> {
12713                fn from(value: transferOwnershipReturn) -> Self {
12714                    ()
12715                }
12716            }
12717            #[automatically_derived]
12718            #[doc(hidden)]
12719            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12720            for transferOwnershipReturn {
12721                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12722                    Self {}
12723                }
12724            }
12725        }
12726        impl transferOwnershipReturn {
12727            fn _tokenize(
12728                &self,
12729            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12730                ()
12731            }
12732        }
12733        #[automatically_derived]
12734        impl alloy_sol_types::SolCall for transferOwnershipCall {
12735            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12736            type Token<'a> = <Self::Parameters<
12737                'a,
12738            > as alloy_sol_types::SolType>::Token<'a>;
12739            type Return = transferOwnershipReturn;
12740            type ReturnTuple<'a> = ();
12741            type ReturnToken<'a> = <Self::ReturnTuple<
12742                'a,
12743            > as alloy_sol_types::SolType>::Token<'a>;
12744            const SIGNATURE: &'static str = "transferOwnership(address)";
12745            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12746            #[inline]
12747            fn new<'a>(
12748                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12749            ) -> Self {
12750                tuple.into()
12751            }
12752            #[inline]
12753            fn tokenize(&self) -> Self::Token<'_> {
12754                (
12755                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12756                        &self.newOwner,
12757                    ),
12758                )
12759            }
12760            #[inline]
12761            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12762                transferOwnershipReturn::_tokenize(ret)
12763            }
12764            #[inline]
12765            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12766                <Self::ReturnTuple<
12767                    '_,
12768                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12769                    .map(Into::into)
12770            }
12771            #[inline]
12772            fn abi_decode_returns_validate(
12773                data: &[u8],
12774            ) -> alloy_sol_types::Result<Self::Return> {
12775                <Self::ReturnTuple<
12776                    '_,
12777                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12778                    .map(Into::into)
12779            }
12780        }
12781    };
12782    #[derive(serde::Serialize, serde::Deserialize)]
12783    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12784    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12785```solidity
12786function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12787```*/
12788    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12789    #[derive(Clone)]
12790    pub struct updateEpochStartBlockCall {
12791        #[allow(missing_docs)]
12792        pub newEpochStartBlock: u64,
12793    }
12794    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12795    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12796    #[derive(Clone)]
12797    pub struct updateEpochStartBlockReturn {}
12798    #[allow(
12799        non_camel_case_types,
12800        non_snake_case,
12801        clippy::pub_underscore_fields,
12802        clippy::style
12803    )]
12804    const _: () = {
12805        use alloy::sol_types as alloy_sol_types;
12806        {
12807            #[doc(hidden)]
12808            #[allow(dead_code)]
12809            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12810            #[doc(hidden)]
12811            type UnderlyingRustTuple<'a> = (u64,);
12812            #[cfg(test)]
12813            #[allow(dead_code, unreachable_patterns)]
12814            fn _type_assertion(
12815                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12816            ) {
12817                match _t {
12818                    alloy_sol_types::private::AssertTypeEq::<
12819                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12820                    >(_) => {}
12821                }
12822            }
12823            #[automatically_derived]
12824            #[doc(hidden)]
12825            impl ::core::convert::From<updateEpochStartBlockCall>
12826            for UnderlyingRustTuple<'_> {
12827                fn from(value: updateEpochStartBlockCall) -> Self {
12828                    (value.newEpochStartBlock,)
12829                }
12830            }
12831            #[automatically_derived]
12832            #[doc(hidden)]
12833            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12834            for updateEpochStartBlockCall {
12835                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12836                    Self {
12837                        newEpochStartBlock: tuple.0,
12838                    }
12839                }
12840            }
12841        }
12842        {
12843            #[doc(hidden)]
12844            #[allow(dead_code)]
12845            type UnderlyingSolTuple<'a> = ();
12846            #[doc(hidden)]
12847            type UnderlyingRustTuple<'a> = ();
12848            #[cfg(test)]
12849            #[allow(dead_code, unreachable_patterns)]
12850            fn _type_assertion(
12851                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12852            ) {
12853                match _t {
12854                    alloy_sol_types::private::AssertTypeEq::<
12855                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12856                    >(_) => {}
12857                }
12858            }
12859            #[automatically_derived]
12860            #[doc(hidden)]
12861            impl ::core::convert::From<updateEpochStartBlockReturn>
12862            for UnderlyingRustTuple<'_> {
12863                fn from(value: updateEpochStartBlockReturn) -> Self {
12864                    ()
12865                }
12866            }
12867            #[automatically_derived]
12868            #[doc(hidden)]
12869            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12870            for updateEpochStartBlockReturn {
12871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12872                    Self {}
12873                }
12874            }
12875        }
12876        impl updateEpochStartBlockReturn {
12877            fn _tokenize(
12878                &self,
12879            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
12880                '_,
12881            > {
12882                ()
12883            }
12884        }
12885        #[automatically_derived]
12886        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12887            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12888            type Token<'a> = <Self::Parameters<
12889                'a,
12890            > as alloy_sol_types::SolType>::Token<'a>;
12891            type Return = updateEpochStartBlockReturn;
12892            type ReturnTuple<'a> = ();
12893            type ReturnToken<'a> = <Self::ReturnTuple<
12894                'a,
12895            > as alloy_sol_types::SolType>::Token<'a>;
12896            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12897            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12898            #[inline]
12899            fn new<'a>(
12900                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12901            ) -> Self {
12902                tuple.into()
12903            }
12904            #[inline]
12905            fn tokenize(&self) -> Self::Token<'_> {
12906                (
12907                    <alloy::sol_types::sol_data::Uint<
12908                        64,
12909                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
12910                )
12911            }
12912            #[inline]
12913            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12914                updateEpochStartBlockReturn::_tokenize(ret)
12915            }
12916            #[inline]
12917            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12918                <Self::ReturnTuple<
12919                    '_,
12920                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12921                    .map(Into::into)
12922            }
12923            #[inline]
12924            fn abi_decode_returns_validate(
12925                data: &[u8],
12926            ) -> alloy_sol_types::Result<Self::Return> {
12927                <Self::ReturnTuple<
12928                    '_,
12929                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12930                    .map(Into::into)
12931            }
12932        }
12933    };
12934    #[derive(serde::Serialize, serde::Deserialize)]
12935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12936    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12937```solidity
12938function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12939```*/
12940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12941    #[derive(Clone)]
12942    pub struct upgradeToAndCallCall {
12943        #[allow(missing_docs)]
12944        pub newImplementation: alloy::sol_types::private::Address,
12945        #[allow(missing_docs)]
12946        pub data: alloy::sol_types::private::Bytes,
12947    }
12948    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12950    #[derive(Clone)]
12951    pub struct upgradeToAndCallReturn {}
12952    #[allow(
12953        non_camel_case_types,
12954        non_snake_case,
12955        clippy::pub_underscore_fields,
12956        clippy::style
12957    )]
12958    const _: () = {
12959        use alloy::sol_types as alloy_sol_types;
12960        {
12961            #[doc(hidden)]
12962            #[allow(dead_code)]
12963            type UnderlyingSolTuple<'a> = (
12964                alloy::sol_types::sol_data::Address,
12965                alloy::sol_types::sol_data::Bytes,
12966            );
12967            #[doc(hidden)]
12968            type UnderlyingRustTuple<'a> = (
12969                alloy::sol_types::private::Address,
12970                alloy::sol_types::private::Bytes,
12971            );
12972            #[cfg(test)]
12973            #[allow(dead_code, unreachable_patterns)]
12974            fn _type_assertion(
12975                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12976            ) {
12977                match _t {
12978                    alloy_sol_types::private::AssertTypeEq::<
12979                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12980                    >(_) => {}
12981                }
12982            }
12983            #[automatically_derived]
12984            #[doc(hidden)]
12985            impl ::core::convert::From<upgradeToAndCallCall>
12986            for UnderlyingRustTuple<'_> {
12987                fn from(value: upgradeToAndCallCall) -> Self {
12988                    (value.newImplementation, value.data)
12989                }
12990            }
12991            #[automatically_derived]
12992            #[doc(hidden)]
12993            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12994            for upgradeToAndCallCall {
12995                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12996                    Self {
12997                        newImplementation: tuple.0,
12998                        data: tuple.1,
12999                    }
13000                }
13001            }
13002        }
13003        {
13004            #[doc(hidden)]
13005            #[allow(dead_code)]
13006            type UnderlyingSolTuple<'a> = ();
13007            #[doc(hidden)]
13008            type UnderlyingRustTuple<'a> = ();
13009            #[cfg(test)]
13010            #[allow(dead_code, unreachable_patterns)]
13011            fn _type_assertion(
13012                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13013            ) {
13014                match _t {
13015                    alloy_sol_types::private::AssertTypeEq::<
13016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13017                    >(_) => {}
13018                }
13019            }
13020            #[automatically_derived]
13021            #[doc(hidden)]
13022            impl ::core::convert::From<upgradeToAndCallReturn>
13023            for UnderlyingRustTuple<'_> {
13024                fn from(value: upgradeToAndCallReturn) -> Self {
13025                    ()
13026                }
13027            }
13028            #[automatically_derived]
13029            #[doc(hidden)]
13030            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13031            for upgradeToAndCallReturn {
13032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13033                    Self {}
13034                }
13035            }
13036        }
13037        impl upgradeToAndCallReturn {
13038            fn _tokenize(
13039                &self,
13040            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13041                ()
13042            }
13043        }
13044        #[automatically_derived]
13045        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13046            type Parameters<'a> = (
13047                alloy::sol_types::sol_data::Address,
13048                alloy::sol_types::sol_data::Bytes,
13049            );
13050            type Token<'a> = <Self::Parameters<
13051                'a,
13052            > as alloy_sol_types::SolType>::Token<'a>;
13053            type Return = upgradeToAndCallReturn;
13054            type ReturnTuple<'a> = ();
13055            type ReturnToken<'a> = <Self::ReturnTuple<
13056                'a,
13057            > as alloy_sol_types::SolType>::Token<'a>;
13058            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13059            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13060            #[inline]
13061            fn new<'a>(
13062                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13063            ) -> Self {
13064                tuple.into()
13065            }
13066            #[inline]
13067            fn tokenize(&self) -> Self::Token<'_> {
13068                (
13069                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13070                        &self.newImplementation,
13071                    ),
13072                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13073                        &self.data,
13074                    ),
13075                )
13076            }
13077            #[inline]
13078            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13079                upgradeToAndCallReturn::_tokenize(ret)
13080            }
13081            #[inline]
13082            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13083                <Self::ReturnTuple<
13084                    '_,
13085                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13086                    .map(Into::into)
13087            }
13088            #[inline]
13089            fn abi_decode_returns_validate(
13090                data: &[u8],
13091            ) -> alloy_sol_types::Result<Self::Return> {
13092                <Self::ReturnTuple<
13093                    '_,
13094                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13095                    .map(Into::into)
13096            }
13097        }
13098    };
13099    #[derive(serde::Serialize, serde::Deserialize)]
13100    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13101    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13102```solidity
13103function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13104```*/
13105    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13106    #[derive(Clone)]
13107    pub struct votingStakeTableStateCall;
13108    #[derive(serde::Serialize, serde::Deserialize)]
13109    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13110    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13111    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13112    #[derive(Clone)]
13113    pub struct votingStakeTableStateReturn {
13114        #[allow(missing_docs)]
13115        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13116        #[allow(missing_docs)]
13117        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13118        #[allow(missing_docs)]
13119        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13120        #[allow(missing_docs)]
13121        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13122    }
13123    #[allow(
13124        non_camel_case_types,
13125        non_snake_case,
13126        clippy::pub_underscore_fields,
13127        clippy::style
13128    )]
13129    const _: () = {
13130        use alloy::sol_types as alloy_sol_types;
13131        {
13132            #[doc(hidden)]
13133            #[allow(dead_code)]
13134            type UnderlyingSolTuple<'a> = ();
13135            #[doc(hidden)]
13136            type UnderlyingRustTuple<'a> = ();
13137            #[cfg(test)]
13138            #[allow(dead_code, unreachable_patterns)]
13139            fn _type_assertion(
13140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13141            ) {
13142                match _t {
13143                    alloy_sol_types::private::AssertTypeEq::<
13144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13145                    >(_) => {}
13146                }
13147            }
13148            #[automatically_derived]
13149            #[doc(hidden)]
13150            impl ::core::convert::From<votingStakeTableStateCall>
13151            for UnderlyingRustTuple<'_> {
13152                fn from(value: votingStakeTableStateCall) -> Self {
13153                    ()
13154                }
13155            }
13156            #[automatically_derived]
13157            #[doc(hidden)]
13158            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13159            for votingStakeTableStateCall {
13160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13161                    Self
13162                }
13163            }
13164        }
13165        {
13166            #[doc(hidden)]
13167            #[allow(dead_code)]
13168            type UnderlyingSolTuple<'a> = (
13169                alloy::sol_types::sol_data::Uint<256>,
13170                BN254::ScalarField,
13171                BN254::ScalarField,
13172                BN254::ScalarField,
13173            );
13174            #[doc(hidden)]
13175            type UnderlyingRustTuple<'a> = (
13176                alloy::sol_types::private::primitives::aliases::U256,
13177                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13178                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13179                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13180            );
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<votingStakeTableStateReturn>
13195            for UnderlyingRustTuple<'_> {
13196                fn from(value: votingStakeTableStateReturn) -> Self {
13197                    (
13198                        value.threshold,
13199                        value.blsKeyComm,
13200                        value.schnorrKeyComm,
13201                        value.amountComm,
13202                    )
13203                }
13204            }
13205            #[automatically_derived]
13206            #[doc(hidden)]
13207            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13208            for votingStakeTableStateReturn {
13209                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13210                    Self {
13211                        threshold: tuple.0,
13212                        blsKeyComm: tuple.1,
13213                        schnorrKeyComm: tuple.2,
13214                        amountComm: tuple.3,
13215                    }
13216                }
13217            }
13218        }
13219        impl votingStakeTableStateReturn {
13220            fn _tokenize(
13221                &self,
13222            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13223                '_,
13224            > {
13225                (
13226                    <alloy::sol_types::sol_data::Uint<
13227                        256,
13228                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
13229                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13230                        &self.blsKeyComm,
13231                    ),
13232                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13233                        &self.schnorrKeyComm,
13234                    ),
13235                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13236                        &self.amountComm,
13237                    ),
13238                )
13239            }
13240        }
13241        #[automatically_derived]
13242        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13243            type Parameters<'a> = ();
13244            type Token<'a> = <Self::Parameters<
13245                'a,
13246            > as alloy_sol_types::SolType>::Token<'a>;
13247            type Return = votingStakeTableStateReturn;
13248            type ReturnTuple<'a> = (
13249                alloy::sol_types::sol_data::Uint<256>,
13250                BN254::ScalarField,
13251                BN254::ScalarField,
13252                BN254::ScalarField,
13253            );
13254            type ReturnToken<'a> = <Self::ReturnTuple<
13255                'a,
13256            > as alloy_sol_types::SolType>::Token<'a>;
13257            const SIGNATURE: &'static str = "votingStakeTableState()";
13258            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13259            #[inline]
13260            fn new<'a>(
13261                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13262            ) -> Self {
13263                tuple.into()
13264            }
13265            #[inline]
13266            fn tokenize(&self) -> Self::Token<'_> {
13267                ()
13268            }
13269            #[inline]
13270            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13271                votingStakeTableStateReturn::_tokenize(ret)
13272            }
13273            #[inline]
13274            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13275                <Self::ReturnTuple<
13276                    '_,
13277                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13278                    .map(Into::into)
13279            }
13280            #[inline]
13281            fn abi_decode_returns_validate(
13282                data: &[u8],
13283            ) -> alloy_sol_types::Result<Self::Return> {
13284                <Self::ReturnTuple<
13285                    '_,
13286                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13287                    .map(Into::into)
13288            }
13289        }
13290    };
13291    ///Container for all the [`LightClientV2`](self) function calls.
13292    #[derive(serde::Serialize, serde::Deserialize)]
13293    #[derive()]
13294    pub enum LightClientV2Calls {
13295        #[allow(missing_docs)]
13296        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13297        #[allow(missing_docs)]
13298        _getVk(_getVkCall),
13299        #[allow(missing_docs)]
13300        blocksPerEpoch(blocksPerEpochCall),
13301        #[allow(missing_docs)]
13302        currentBlockNumber(currentBlockNumberCall),
13303        #[allow(missing_docs)]
13304        currentEpoch(currentEpochCall),
13305        #[allow(missing_docs)]
13306        disablePermissionedProverMode(disablePermissionedProverModeCall),
13307        #[allow(missing_docs)]
13308        epochFromBlockNumber(epochFromBlockNumberCall),
13309        #[allow(missing_docs)]
13310        epochStartBlock(epochStartBlockCall),
13311        #[allow(missing_docs)]
13312        finalizedState(finalizedStateCall),
13313        #[allow(missing_docs)]
13314        genesisStakeTableState(genesisStakeTableStateCall),
13315        #[allow(missing_docs)]
13316        genesisState(genesisStateCall),
13317        #[allow(missing_docs)]
13318        getHotShotCommitment(getHotShotCommitmentCall),
13319        #[allow(missing_docs)]
13320        getStateHistoryCount(getStateHistoryCountCall),
13321        #[allow(missing_docs)]
13322        getVersion(getVersionCall),
13323        #[allow(missing_docs)]
13324        initialize(initializeCall),
13325        #[allow(missing_docs)]
13326        initializeV2(initializeV2Call),
13327        #[allow(missing_docs)]
13328        isEpochRoot(isEpochRootCall),
13329        #[allow(missing_docs)]
13330        isGtEpochRoot(isGtEpochRootCall),
13331        #[allow(missing_docs)]
13332        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13333        #[allow(missing_docs)]
13334        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13335        #[allow(missing_docs)]
13336        newFinalizedState_0(newFinalizedState_0Call),
13337        #[allow(missing_docs)]
13338        newFinalizedState_1(newFinalizedState_1Call),
13339        #[allow(missing_docs)]
13340        owner(ownerCall),
13341        #[allow(missing_docs)]
13342        permissionedProver(permissionedProverCall),
13343        #[allow(missing_docs)]
13344        proxiableUUID(proxiableUUIDCall),
13345        #[allow(missing_docs)]
13346        renounceOwnership(renounceOwnershipCall),
13347        #[allow(missing_docs)]
13348        setPermissionedProver(setPermissionedProverCall),
13349        #[allow(missing_docs)]
13350        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13351        #[allow(missing_docs)]
13352        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13353        #[allow(missing_docs)]
13354        stateHistoryCommitments(stateHistoryCommitmentsCall),
13355        #[allow(missing_docs)]
13356        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13357        #[allow(missing_docs)]
13358        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13359        #[allow(missing_docs)]
13360        transferOwnership(transferOwnershipCall),
13361        #[allow(missing_docs)]
13362        updateEpochStartBlock(updateEpochStartBlockCall),
13363        #[allow(missing_docs)]
13364        upgradeToAndCall(upgradeToAndCallCall),
13365        #[allow(missing_docs)]
13366        votingStakeTableState(votingStakeTableStateCall),
13367    }
13368    #[automatically_derived]
13369    impl LightClientV2Calls {
13370        /// All the selectors of this enum.
13371        ///
13372        /// Note that the selectors might not be in the same order as the variants.
13373        /// No guarantees are made about the order of the selectors.
13374        ///
13375        /// Prefer using `SolInterface` methods instead.
13376        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13377            [1u8, 63u8, 165u8, 252u8],
13378            [2u8, 181u8, 146u8, 243u8],
13379            [6u8, 37u8, 225u8, 155u8],
13380            [13u8, 142u8, 110u8, 44u8],
13381            [18u8, 23u8, 60u8, 44u8],
13382            [22u8, 122u8, 198u8, 24u8],
13383            [32u8, 99u8, 212u8, 247u8],
13384            [37u8, 41u8, 116u8, 39u8],
13385            [47u8, 121u8, 136u8, 157u8],
13386            [48u8, 12u8, 137u8, 221u8],
13387            [49u8, 61u8, 247u8, 177u8],
13388            [55u8, 142u8, 194u8, 59u8],
13389            [62u8, 213u8, 91u8, 123u8],
13390            [66u8, 109u8, 49u8, 148u8],
13391            [67u8, 61u8, 186u8, 159u8],
13392            [79u8, 30u8, 242u8, 134u8],
13393            [82u8, 209u8, 144u8, 45u8],
13394            [105u8, 204u8, 106u8, 4u8],
13395            [113u8, 80u8, 24u8, 166u8],
13396            [117u8, 124u8, 55u8, 173u8],
13397            [118u8, 103u8, 24u8, 8u8],
13398            [130u8, 110u8, 65u8, 252u8],
13399            [133u8, 132u8, 210u8, 63u8],
13400            [141u8, 165u8, 203u8, 91u8],
13401            [144u8, 193u8, 67u8, 144u8],
13402            [150u8, 193u8, 202u8, 97u8],
13403            [155u8, 170u8, 60u8, 201u8],
13404            [159u8, 219u8, 84u8, 167u8],
13405            [173u8, 60u8, 177u8, 204u8],
13406            [179u8, 59u8, 196u8, 145u8],
13407            [194u8, 59u8, 158u8, 158u8],
13408            [210u8, 77u8, 147u8, 61u8],
13409            [224u8, 48u8, 51u8, 1u8],
13410            [240u8, 104u8, 32u8, 84u8],
13411            [242u8, 253u8, 227u8, 139u8],
13412            [249u8, 229u8, 13u8, 25u8],
13413        ];
13414    }
13415    #[automatically_derived]
13416    impl alloy_sol_types::SolInterface for LightClientV2Calls {
13417        const NAME: &'static str = "LightClientV2Calls";
13418        const MIN_DATA_LENGTH: usize = 0usize;
13419        const COUNT: usize = 36usize;
13420        #[inline]
13421        fn selector(&self) -> [u8; 4] {
13422            match self {
13423                Self::UPGRADE_INTERFACE_VERSION(_) => {
13424                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13425                }
13426                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13427                Self::blocksPerEpoch(_) => {
13428                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13429                }
13430                Self::currentBlockNumber(_) => {
13431                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13432                }
13433                Self::currentEpoch(_) => {
13434                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13435                }
13436                Self::disablePermissionedProverMode(_) => {
13437                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13438                }
13439                Self::epochFromBlockNumber(_) => {
13440                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13441                }
13442                Self::epochStartBlock(_) => {
13443                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13444                }
13445                Self::finalizedState(_) => {
13446                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13447                }
13448                Self::genesisStakeTableState(_) => {
13449                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13450                }
13451                Self::genesisState(_) => {
13452                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13453                }
13454                Self::getHotShotCommitment(_) => {
13455                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13456                }
13457                Self::getStateHistoryCount(_) => {
13458                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13459                }
13460                Self::getVersion(_) => {
13461                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13462                }
13463                Self::initialize(_) => {
13464                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13465                }
13466                Self::initializeV2(_) => {
13467                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13468                }
13469                Self::isEpochRoot(_) => {
13470                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13471                }
13472                Self::isGtEpochRoot(_) => {
13473                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13474                }
13475                Self::isPermissionedProverEnabled(_) => {
13476                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13477                }
13478                Self::lagOverEscapeHatchThreshold(_) => {
13479                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13480                }
13481                Self::newFinalizedState_0(_) => {
13482                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13483                }
13484                Self::newFinalizedState_1(_) => {
13485                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13486                }
13487                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13488                Self::permissionedProver(_) => {
13489                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13490                }
13491                Self::proxiableUUID(_) => {
13492                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13493                }
13494                Self::renounceOwnership(_) => {
13495                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13496                }
13497                Self::setPermissionedProver(_) => {
13498                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13499                }
13500                Self::setStateHistoryRetentionPeriod(_) => {
13501                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13502                }
13503                Self::setstateHistoryRetentionPeriod(_) => {
13504                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13505                }
13506                Self::stateHistoryCommitments(_) => {
13507                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13508                }
13509                Self::stateHistoryFirstIndex(_) => {
13510                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13511                }
13512                Self::stateHistoryRetentionPeriod(_) => {
13513                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13514                }
13515                Self::transferOwnership(_) => {
13516                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13517                }
13518                Self::updateEpochStartBlock(_) => {
13519                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13520                }
13521                Self::upgradeToAndCall(_) => {
13522                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13523                }
13524                Self::votingStakeTableState(_) => {
13525                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13526                }
13527            }
13528        }
13529        #[inline]
13530        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13531            Self::SELECTORS.get(i).copied()
13532        }
13533        #[inline]
13534        fn valid_selector(selector: [u8; 4]) -> bool {
13535            Self::SELECTORS.binary_search(&selector).is_ok()
13536        }
13537        #[inline]
13538        #[allow(non_snake_case)]
13539        fn abi_decode_raw(
13540            selector: [u8; 4],
13541            data: &[u8],
13542        ) -> alloy_sol_types::Result<Self> {
13543            static DECODE_SHIMS: &[fn(
13544                &[u8],
13545            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
13546                {
13547                    fn setPermissionedProver(
13548                        data: &[u8],
13549                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13550                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13551                                data,
13552                            )
13553                            .map(LightClientV2Calls::setPermissionedProver)
13554                    }
13555                    setPermissionedProver
13556                },
13557                {
13558                    fn stateHistoryCommitments(
13559                        data: &[u8],
13560                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13561                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13562                                data,
13563                            )
13564                            .map(LightClientV2Calls::stateHistoryCommitments)
13565                    }
13566                    stateHistoryCommitments
13567                },
13568                {
13569                    fn votingStakeTableState(
13570                        data: &[u8],
13571                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13572                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13573                                data,
13574                            )
13575                            .map(LightClientV2Calls::votingStakeTableState)
13576                    }
13577                    votingStakeTableState
13578                },
13579                {
13580                    fn getVersion(
13581                        data: &[u8],
13582                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13583                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13584                                data,
13585                            )
13586                            .map(LightClientV2Calls::getVersion)
13587                    }
13588                    getVersion
13589                },
13590                {
13591                    fn _getVk(
13592                        data: &[u8],
13593                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13594                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13595                            .map(LightClientV2Calls::_getVk)
13596                    }
13597                    _getVk
13598                },
13599                {
13600                    fn updateEpochStartBlock(
13601                        data: &[u8],
13602                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13603                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13604                                data,
13605                            )
13606                            .map(LightClientV2Calls::updateEpochStartBlock)
13607                    }
13608                    updateEpochStartBlock
13609                },
13610                {
13611                    fn newFinalizedState_0(
13612                        data: &[u8],
13613                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13614                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13615                                data,
13616                            )
13617                            .map(LightClientV2Calls::newFinalizedState_0)
13618                    }
13619                    newFinalizedState_0
13620                },
13621                {
13622                    fn isEpochRoot(
13623                        data: &[u8],
13624                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13625                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13626                                data,
13627                            )
13628                            .map(LightClientV2Calls::isEpochRoot)
13629                    }
13630                    isEpochRoot
13631                },
13632                {
13633                    fn stateHistoryFirstIndex(
13634                        data: &[u8],
13635                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13636                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13637                                data,
13638                            )
13639                            .map(LightClientV2Calls::stateHistoryFirstIndex)
13640                    }
13641                    stateHistoryFirstIndex
13642                },
13643                {
13644                    fn isGtEpochRoot(
13645                        data: &[u8],
13646                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13647                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13648                                data,
13649                            )
13650                            .map(LightClientV2Calls::isGtEpochRoot)
13651                    }
13652                    isGtEpochRoot
13653                },
13654                {
13655                    fn permissionedProver(
13656                        data: &[u8],
13657                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13658                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13659                                data,
13660                            )
13661                            .map(LightClientV2Calls::permissionedProver)
13662                    }
13663                    permissionedProver
13664                },
13665                {
13666                    fn currentBlockNumber(
13667                        data: &[u8],
13668                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13669                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13670                                data,
13671                            )
13672                            .map(LightClientV2Calls::currentBlockNumber)
13673                    }
13674                    currentBlockNumber
13675                },
13676                {
13677                    fn epochStartBlock(
13678                        data: &[u8],
13679                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13680                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13681                                data,
13682                            )
13683                            .map(LightClientV2Calls::epochStartBlock)
13684                    }
13685                    epochStartBlock
13686                },
13687                {
13688                    fn genesisStakeTableState(
13689                        data: &[u8],
13690                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13691                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13692                                data,
13693                            )
13694                            .map(LightClientV2Calls::genesisStakeTableState)
13695                    }
13696                    genesisStakeTableState
13697                },
13698                {
13699                    fn setStateHistoryRetentionPeriod(
13700                        data: &[u8],
13701                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13702                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13703                                data,
13704                            )
13705                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
13706                    }
13707                    setStateHistoryRetentionPeriod
13708                },
13709                {
13710                    fn upgradeToAndCall(
13711                        data: &[u8],
13712                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13713                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13714                                data,
13715                            )
13716                            .map(LightClientV2Calls::upgradeToAndCall)
13717                    }
13718                    upgradeToAndCall
13719                },
13720                {
13721                    fn proxiableUUID(
13722                        data: &[u8],
13723                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13724                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13725                                data,
13726                            )
13727                            .map(LightClientV2Calls::proxiableUUID)
13728                    }
13729                    proxiableUUID
13730                },
13731                {
13732                    fn disablePermissionedProverMode(
13733                        data: &[u8],
13734                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13735                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13736                                data,
13737                            )
13738                            .map(LightClientV2Calls::disablePermissionedProverMode)
13739                    }
13740                    disablePermissionedProverMode
13741                },
13742                {
13743                    fn renounceOwnership(
13744                        data: &[u8],
13745                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13746                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13747                                data,
13748                            )
13749                            .map(LightClientV2Calls::renounceOwnership)
13750                    }
13751                    renounceOwnership
13752                },
13753                {
13754                    fn newFinalizedState_1(
13755                        data: &[u8],
13756                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13757                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13758                                data,
13759                            )
13760                            .map(LightClientV2Calls::newFinalizedState_1)
13761                    }
13762                    newFinalizedState_1
13763                },
13764                {
13765                    fn currentEpoch(
13766                        data: &[u8],
13767                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13768                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13769                                data,
13770                            )
13771                            .map(LightClientV2Calls::currentEpoch)
13772                    }
13773                    currentEpoch
13774                },
13775                {
13776                    fn isPermissionedProverEnabled(
13777                        data: &[u8],
13778                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13779                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13780                                data,
13781                            )
13782                            .map(LightClientV2Calls::isPermissionedProverEnabled)
13783                    }
13784                    isPermissionedProverEnabled
13785                },
13786                {
13787                    fn getHotShotCommitment(
13788                        data: &[u8],
13789                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13790                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13791                                data,
13792                            )
13793                            .map(LightClientV2Calls::getHotShotCommitment)
13794                    }
13795                    getHotShotCommitment
13796                },
13797                {
13798                    fn owner(
13799                        data: &[u8],
13800                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13801                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13802                            .map(LightClientV2Calls::owner)
13803                    }
13804                    owner
13805                },
13806                {
13807                    fn epochFromBlockNumber(
13808                        data: &[u8],
13809                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13810                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13811                                data,
13812                            )
13813                            .map(LightClientV2Calls::epochFromBlockNumber)
13814                    }
13815                    epochFromBlockNumber
13816                },
13817                {
13818                    fn setstateHistoryRetentionPeriod(
13819                        data: &[u8],
13820                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13821                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13822                                data,
13823                            )
13824                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
13825                    }
13826                    setstateHistoryRetentionPeriod
13827                },
13828                {
13829                    fn initialize(
13830                        data: &[u8],
13831                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13832                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13833                                data,
13834                            )
13835                            .map(LightClientV2Calls::initialize)
13836                    }
13837                    initialize
13838                },
13839                {
13840                    fn finalizedState(
13841                        data: &[u8],
13842                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13843                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13844                                data,
13845                            )
13846                            .map(LightClientV2Calls::finalizedState)
13847                    }
13848                    finalizedState
13849                },
13850                {
13851                    fn UPGRADE_INTERFACE_VERSION(
13852                        data: &[u8],
13853                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13854                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13855                                data,
13856                            )
13857                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
13858                    }
13859                    UPGRADE_INTERFACE_VERSION
13860                },
13861                {
13862                    fn initializeV2(
13863                        data: &[u8],
13864                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13865                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13866                                data,
13867                            )
13868                            .map(LightClientV2Calls::initializeV2)
13869                    }
13870                    initializeV2
13871                },
13872                {
13873                    fn stateHistoryRetentionPeriod(
13874                        data: &[u8],
13875                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13876                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13877                                data,
13878                            )
13879                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
13880                    }
13881                    stateHistoryRetentionPeriod
13882                },
13883                {
13884                    fn genesisState(
13885                        data: &[u8],
13886                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13887                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13888                                data,
13889                            )
13890                            .map(LightClientV2Calls::genesisState)
13891                    }
13892                    genesisState
13893                },
13894                {
13895                    fn lagOverEscapeHatchThreshold(
13896                        data: &[u8],
13897                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13898                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
13899                                data,
13900                            )
13901                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
13902                    }
13903                    lagOverEscapeHatchThreshold
13904                },
13905                {
13906                    fn blocksPerEpoch(
13907                        data: &[u8],
13908                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13909                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13910                                data,
13911                            )
13912                            .map(LightClientV2Calls::blocksPerEpoch)
13913                    }
13914                    blocksPerEpoch
13915                },
13916                {
13917                    fn transferOwnership(
13918                        data: &[u8],
13919                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13920                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13921                                data,
13922                            )
13923                            .map(LightClientV2Calls::transferOwnership)
13924                    }
13925                    transferOwnership
13926                },
13927                {
13928                    fn getStateHistoryCount(
13929                        data: &[u8],
13930                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13931                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
13932                                data,
13933                            )
13934                            .map(LightClientV2Calls::getStateHistoryCount)
13935                    }
13936                    getStateHistoryCount
13937                },
13938            ];
13939            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13940                return Err(
13941                    alloy_sol_types::Error::unknown_selector(
13942                        <Self as alloy_sol_types::SolInterface>::NAME,
13943                        selector,
13944                    ),
13945                );
13946            };
13947            DECODE_SHIMS[idx](data)
13948        }
13949        #[inline]
13950        #[allow(non_snake_case)]
13951        fn abi_decode_raw_validate(
13952            selector: [u8; 4],
13953            data: &[u8],
13954        ) -> alloy_sol_types::Result<Self> {
13955            static DECODE_VALIDATE_SHIMS: &[fn(
13956                &[u8],
13957            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
13958                {
13959                    fn setPermissionedProver(
13960                        data: &[u8],
13961                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13962                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13963                                data,
13964                            )
13965                            .map(LightClientV2Calls::setPermissionedProver)
13966                    }
13967                    setPermissionedProver
13968                },
13969                {
13970                    fn stateHistoryCommitments(
13971                        data: &[u8],
13972                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13973                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13974                                data,
13975                            )
13976                            .map(LightClientV2Calls::stateHistoryCommitments)
13977                    }
13978                    stateHistoryCommitments
13979                },
13980                {
13981                    fn votingStakeTableState(
13982                        data: &[u8],
13983                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13984                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13985                                data,
13986                            )
13987                            .map(LightClientV2Calls::votingStakeTableState)
13988                    }
13989                    votingStakeTableState
13990                },
13991                {
13992                    fn getVersion(
13993                        data: &[u8],
13994                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13995                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13996                                data,
13997                            )
13998                            .map(LightClientV2Calls::getVersion)
13999                    }
14000                    getVersion
14001                },
14002                {
14003                    fn _getVk(
14004                        data: &[u8],
14005                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14006                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14007                                data,
14008                            )
14009                            .map(LightClientV2Calls::_getVk)
14010                    }
14011                    _getVk
14012                },
14013                {
14014                    fn updateEpochStartBlock(
14015                        data: &[u8],
14016                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14017                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14018                                data,
14019                            )
14020                            .map(LightClientV2Calls::updateEpochStartBlock)
14021                    }
14022                    updateEpochStartBlock
14023                },
14024                {
14025                    fn newFinalizedState_0(
14026                        data: &[u8],
14027                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14028                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14029                                data,
14030                            )
14031                            .map(LightClientV2Calls::newFinalizedState_0)
14032                    }
14033                    newFinalizedState_0
14034                },
14035                {
14036                    fn isEpochRoot(
14037                        data: &[u8],
14038                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14039                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14040                                data,
14041                            )
14042                            .map(LightClientV2Calls::isEpochRoot)
14043                    }
14044                    isEpochRoot
14045                },
14046                {
14047                    fn stateHistoryFirstIndex(
14048                        data: &[u8],
14049                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14050                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14051                                data,
14052                            )
14053                            .map(LightClientV2Calls::stateHistoryFirstIndex)
14054                    }
14055                    stateHistoryFirstIndex
14056                },
14057                {
14058                    fn isGtEpochRoot(
14059                        data: &[u8],
14060                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14061                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14062                                data,
14063                            )
14064                            .map(LightClientV2Calls::isGtEpochRoot)
14065                    }
14066                    isGtEpochRoot
14067                },
14068                {
14069                    fn permissionedProver(
14070                        data: &[u8],
14071                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14072                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14073                                data,
14074                            )
14075                            .map(LightClientV2Calls::permissionedProver)
14076                    }
14077                    permissionedProver
14078                },
14079                {
14080                    fn currentBlockNumber(
14081                        data: &[u8],
14082                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14083                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14084                                data,
14085                            )
14086                            .map(LightClientV2Calls::currentBlockNumber)
14087                    }
14088                    currentBlockNumber
14089                },
14090                {
14091                    fn epochStartBlock(
14092                        data: &[u8],
14093                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14094                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14095                                data,
14096                            )
14097                            .map(LightClientV2Calls::epochStartBlock)
14098                    }
14099                    epochStartBlock
14100                },
14101                {
14102                    fn genesisStakeTableState(
14103                        data: &[u8],
14104                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14105                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14106                                data,
14107                            )
14108                            .map(LightClientV2Calls::genesisStakeTableState)
14109                    }
14110                    genesisStakeTableState
14111                },
14112                {
14113                    fn setStateHistoryRetentionPeriod(
14114                        data: &[u8],
14115                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14116                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14117                                data,
14118                            )
14119                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
14120                    }
14121                    setStateHistoryRetentionPeriod
14122                },
14123                {
14124                    fn upgradeToAndCall(
14125                        data: &[u8],
14126                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14127                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14128                                data,
14129                            )
14130                            .map(LightClientV2Calls::upgradeToAndCall)
14131                    }
14132                    upgradeToAndCall
14133                },
14134                {
14135                    fn proxiableUUID(
14136                        data: &[u8],
14137                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14138                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14139                                data,
14140                            )
14141                            .map(LightClientV2Calls::proxiableUUID)
14142                    }
14143                    proxiableUUID
14144                },
14145                {
14146                    fn disablePermissionedProverMode(
14147                        data: &[u8],
14148                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14149                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14150                                data,
14151                            )
14152                            .map(LightClientV2Calls::disablePermissionedProverMode)
14153                    }
14154                    disablePermissionedProverMode
14155                },
14156                {
14157                    fn renounceOwnership(
14158                        data: &[u8],
14159                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14160                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14161                                data,
14162                            )
14163                            .map(LightClientV2Calls::renounceOwnership)
14164                    }
14165                    renounceOwnership
14166                },
14167                {
14168                    fn newFinalizedState_1(
14169                        data: &[u8],
14170                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14171                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14172                                data,
14173                            )
14174                            .map(LightClientV2Calls::newFinalizedState_1)
14175                    }
14176                    newFinalizedState_1
14177                },
14178                {
14179                    fn currentEpoch(
14180                        data: &[u8],
14181                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14182                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14183                                data,
14184                            )
14185                            .map(LightClientV2Calls::currentEpoch)
14186                    }
14187                    currentEpoch
14188                },
14189                {
14190                    fn isPermissionedProverEnabled(
14191                        data: &[u8],
14192                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14193                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14194                                data,
14195                            )
14196                            .map(LightClientV2Calls::isPermissionedProverEnabled)
14197                    }
14198                    isPermissionedProverEnabled
14199                },
14200                {
14201                    fn getHotShotCommitment(
14202                        data: &[u8],
14203                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14204                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14205                                data,
14206                            )
14207                            .map(LightClientV2Calls::getHotShotCommitment)
14208                    }
14209                    getHotShotCommitment
14210                },
14211                {
14212                    fn owner(
14213                        data: &[u8],
14214                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14215                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14216                                data,
14217                            )
14218                            .map(LightClientV2Calls::owner)
14219                    }
14220                    owner
14221                },
14222                {
14223                    fn epochFromBlockNumber(
14224                        data: &[u8],
14225                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14226                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14227                                data,
14228                            )
14229                            .map(LightClientV2Calls::epochFromBlockNumber)
14230                    }
14231                    epochFromBlockNumber
14232                },
14233                {
14234                    fn setstateHistoryRetentionPeriod(
14235                        data: &[u8],
14236                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14237                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14238                                data,
14239                            )
14240                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
14241                    }
14242                    setstateHistoryRetentionPeriod
14243                },
14244                {
14245                    fn initialize(
14246                        data: &[u8],
14247                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14248                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14249                                data,
14250                            )
14251                            .map(LightClientV2Calls::initialize)
14252                    }
14253                    initialize
14254                },
14255                {
14256                    fn finalizedState(
14257                        data: &[u8],
14258                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14259                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14260                                data,
14261                            )
14262                            .map(LightClientV2Calls::finalizedState)
14263                    }
14264                    finalizedState
14265                },
14266                {
14267                    fn UPGRADE_INTERFACE_VERSION(
14268                        data: &[u8],
14269                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14270                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14271                                data,
14272                            )
14273                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
14274                    }
14275                    UPGRADE_INTERFACE_VERSION
14276                },
14277                {
14278                    fn initializeV2(
14279                        data: &[u8],
14280                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14281                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14282                                data,
14283                            )
14284                            .map(LightClientV2Calls::initializeV2)
14285                    }
14286                    initializeV2
14287                },
14288                {
14289                    fn stateHistoryRetentionPeriod(
14290                        data: &[u8],
14291                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14292                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14293                                data,
14294                            )
14295                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
14296                    }
14297                    stateHistoryRetentionPeriod
14298                },
14299                {
14300                    fn genesisState(
14301                        data: &[u8],
14302                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14303                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14304                                data,
14305                            )
14306                            .map(LightClientV2Calls::genesisState)
14307                    }
14308                    genesisState
14309                },
14310                {
14311                    fn lagOverEscapeHatchThreshold(
14312                        data: &[u8],
14313                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14314                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14315                                data,
14316                            )
14317                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
14318                    }
14319                    lagOverEscapeHatchThreshold
14320                },
14321                {
14322                    fn blocksPerEpoch(
14323                        data: &[u8],
14324                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14325                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14326                                data,
14327                            )
14328                            .map(LightClientV2Calls::blocksPerEpoch)
14329                    }
14330                    blocksPerEpoch
14331                },
14332                {
14333                    fn transferOwnership(
14334                        data: &[u8],
14335                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14336                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14337                                data,
14338                            )
14339                            .map(LightClientV2Calls::transferOwnership)
14340                    }
14341                    transferOwnership
14342                },
14343                {
14344                    fn getStateHistoryCount(
14345                        data: &[u8],
14346                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14347                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14348                                data,
14349                            )
14350                            .map(LightClientV2Calls::getStateHistoryCount)
14351                    }
14352                    getStateHistoryCount
14353                },
14354            ];
14355            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14356                return Err(
14357                    alloy_sol_types::Error::unknown_selector(
14358                        <Self as alloy_sol_types::SolInterface>::NAME,
14359                        selector,
14360                    ),
14361                );
14362            };
14363            DECODE_VALIDATE_SHIMS[idx](data)
14364        }
14365        #[inline]
14366        fn abi_encoded_size(&self) -> usize {
14367            match self {
14368                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14369                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14370                        inner,
14371                    )
14372                }
14373                Self::_getVk(inner) => {
14374                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14375                }
14376                Self::blocksPerEpoch(inner) => {
14377                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14378                        inner,
14379                    )
14380                }
14381                Self::currentBlockNumber(inner) => {
14382                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14383                        inner,
14384                    )
14385                }
14386                Self::currentEpoch(inner) => {
14387                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14388                        inner,
14389                    )
14390                }
14391                Self::disablePermissionedProverMode(inner) => {
14392                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14393                        inner,
14394                    )
14395                }
14396                Self::epochFromBlockNumber(inner) => {
14397                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14398                        inner,
14399                    )
14400                }
14401                Self::epochStartBlock(inner) => {
14402                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14403                        inner,
14404                    )
14405                }
14406                Self::finalizedState(inner) => {
14407                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14408                        inner,
14409                    )
14410                }
14411                Self::genesisStakeTableState(inner) => {
14412                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14413                        inner,
14414                    )
14415                }
14416                Self::genesisState(inner) => {
14417                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14418                        inner,
14419                    )
14420                }
14421                Self::getHotShotCommitment(inner) => {
14422                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14423                        inner,
14424                    )
14425                }
14426                Self::getStateHistoryCount(inner) => {
14427                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14428                        inner,
14429                    )
14430                }
14431                Self::getVersion(inner) => {
14432                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14433                }
14434                Self::initialize(inner) => {
14435                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14436                }
14437                Self::initializeV2(inner) => {
14438                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14439                        inner,
14440                    )
14441                }
14442                Self::isEpochRoot(inner) => {
14443                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14444                        inner,
14445                    )
14446                }
14447                Self::isGtEpochRoot(inner) => {
14448                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14449                        inner,
14450                    )
14451                }
14452                Self::isPermissionedProverEnabled(inner) => {
14453                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14454                        inner,
14455                    )
14456                }
14457                Self::lagOverEscapeHatchThreshold(inner) => {
14458                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14459                        inner,
14460                    )
14461                }
14462                Self::newFinalizedState_0(inner) => {
14463                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14464                        inner,
14465                    )
14466                }
14467                Self::newFinalizedState_1(inner) => {
14468                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14469                        inner,
14470                    )
14471                }
14472                Self::owner(inner) => {
14473                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14474                }
14475                Self::permissionedProver(inner) => {
14476                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14477                        inner,
14478                    )
14479                }
14480                Self::proxiableUUID(inner) => {
14481                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14482                        inner,
14483                    )
14484                }
14485                Self::renounceOwnership(inner) => {
14486                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14487                        inner,
14488                    )
14489                }
14490                Self::setPermissionedProver(inner) => {
14491                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14492                        inner,
14493                    )
14494                }
14495                Self::setStateHistoryRetentionPeriod(inner) => {
14496                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14497                        inner,
14498                    )
14499                }
14500                Self::setstateHistoryRetentionPeriod(inner) => {
14501                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14502                        inner,
14503                    )
14504                }
14505                Self::stateHistoryCommitments(inner) => {
14506                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14507                        inner,
14508                    )
14509                }
14510                Self::stateHistoryFirstIndex(inner) => {
14511                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14512                        inner,
14513                    )
14514                }
14515                Self::stateHistoryRetentionPeriod(inner) => {
14516                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14517                        inner,
14518                    )
14519                }
14520                Self::transferOwnership(inner) => {
14521                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14522                        inner,
14523                    )
14524                }
14525                Self::updateEpochStartBlock(inner) => {
14526                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14527                        inner,
14528                    )
14529                }
14530                Self::upgradeToAndCall(inner) => {
14531                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14532                        inner,
14533                    )
14534                }
14535                Self::votingStakeTableState(inner) => {
14536                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14537                        inner,
14538                    )
14539                }
14540            }
14541        }
14542        #[inline]
14543        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14544            match self {
14545                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14546                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14547                        inner,
14548                        out,
14549                    )
14550                }
14551                Self::_getVk(inner) => {
14552                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14553                }
14554                Self::blocksPerEpoch(inner) => {
14555                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14556                        inner,
14557                        out,
14558                    )
14559                }
14560                Self::currentBlockNumber(inner) => {
14561                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14562                        inner,
14563                        out,
14564                    )
14565                }
14566                Self::currentEpoch(inner) => {
14567                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14568                        inner,
14569                        out,
14570                    )
14571                }
14572                Self::disablePermissionedProverMode(inner) => {
14573                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14574                        inner,
14575                        out,
14576                    )
14577                }
14578                Self::epochFromBlockNumber(inner) => {
14579                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14580                        inner,
14581                        out,
14582                    )
14583                }
14584                Self::epochStartBlock(inner) => {
14585                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14586                        inner,
14587                        out,
14588                    )
14589                }
14590                Self::finalizedState(inner) => {
14591                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14592                        inner,
14593                        out,
14594                    )
14595                }
14596                Self::genesisStakeTableState(inner) => {
14597                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14598                        inner,
14599                        out,
14600                    )
14601                }
14602                Self::genesisState(inner) => {
14603                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14604                        inner,
14605                        out,
14606                    )
14607                }
14608                Self::getHotShotCommitment(inner) => {
14609                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14610                        inner,
14611                        out,
14612                    )
14613                }
14614                Self::getStateHistoryCount(inner) => {
14615                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14616                        inner,
14617                        out,
14618                    )
14619                }
14620                Self::getVersion(inner) => {
14621                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14622                        inner,
14623                        out,
14624                    )
14625                }
14626                Self::initialize(inner) => {
14627                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14628                        inner,
14629                        out,
14630                    )
14631                }
14632                Self::initializeV2(inner) => {
14633                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14634                        inner,
14635                        out,
14636                    )
14637                }
14638                Self::isEpochRoot(inner) => {
14639                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14640                        inner,
14641                        out,
14642                    )
14643                }
14644                Self::isGtEpochRoot(inner) => {
14645                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14646                        inner,
14647                        out,
14648                    )
14649                }
14650                Self::isPermissionedProverEnabled(inner) => {
14651                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14652                        inner,
14653                        out,
14654                    )
14655                }
14656                Self::lagOverEscapeHatchThreshold(inner) => {
14657                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14658                        inner,
14659                        out,
14660                    )
14661                }
14662                Self::newFinalizedState_0(inner) => {
14663                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14664                        inner,
14665                        out,
14666                    )
14667                }
14668                Self::newFinalizedState_1(inner) => {
14669                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14670                        inner,
14671                        out,
14672                    )
14673                }
14674                Self::owner(inner) => {
14675                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14676                }
14677                Self::permissionedProver(inner) => {
14678                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14679                        inner,
14680                        out,
14681                    )
14682                }
14683                Self::proxiableUUID(inner) => {
14684                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14685                        inner,
14686                        out,
14687                    )
14688                }
14689                Self::renounceOwnership(inner) => {
14690                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14691                        inner,
14692                        out,
14693                    )
14694                }
14695                Self::setPermissionedProver(inner) => {
14696                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14697                        inner,
14698                        out,
14699                    )
14700                }
14701                Self::setStateHistoryRetentionPeriod(inner) => {
14702                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14703                        inner,
14704                        out,
14705                    )
14706                }
14707                Self::setstateHistoryRetentionPeriod(inner) => {
14708                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14709                        inner,
14710                        out,
14711                    )
14712                }
14713                Self::stateHistoryCommitments(inner) => {
14714                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14715                        inner,
14716                        out,
14717                    )
14718                }
14719                Self::stateHistoryFirstIndex(inner) => {
14720                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14721                        inner,
14722                        out,
14723                    )
14724                }
14725                Self::stateHistoryRetentionPeriod(inner) => {
14726                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14727                        inner,
14728                        out,
14729                    )
14730                }
14731                Self::transferOwnership(inner) => {
14732                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14733                        inner,
14734                        out,
14735                    )
14736                }
14737                Self::updateEpochStartBlock(inner) => {
14738                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14739                        inner,
14740                        out,
14741                    )
14742                }
14743                Self::upgradeToAndCall(inner) => {
14744                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14745                        inner,
14746                        out,
14747                    )
14748                }
14749                Self::votingStakeTableState(inner) => {
14750                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14751                        inner,
14752                        out,
14753                    )
14754                }
14755            }
14756        }
14757    }
14758    ///Container for all the [`LightClientV2`](self) custom errors.
14759    #[derive(serde::Serialize, serde::Deserialize)]
14760    #[derive(Debug, PartialEq, Eq, Hash)]
14761    pub enum LightClientV2Errors {
14762        #[allow(missing_docs)]
14763        AddressEmptyCode(AddressEmptyCode),
14764        #[allow(missing_docs)]
14765        DeprecatedApi(DeprecatedApi),
14766        #[allow(missing_docs)]
14767        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14768        #[allow(missing_docs)]
14769        ERC1967NonPayable(ERC1967NonPayable),
14770        #[allow(missing_docs)]
14771        FailedInnerCall(FailedInnerCall),
14772        #[allow(missing_docs)]
14773        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14774        #[allow(missing_docs)]
14775        InvalidAddress(InvalidAddress),
14776        #[allow(missing_docs)]
14777        InvalidArgs(InvalidArgs),
14778        #[allow(missing_docs)]
14779        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14780        #[allow(missing_docs)]
14781        InvalidInitialization(InvalidInitialization),
14782        #[allow(missing_docs)]
14783        InvalidMaxStateHistory(InvalidMaxStateHistory),
14784        #[allow(missing_docs)]
14785        InvalidProof(InvalidProof),
14786        #[allow(missing_docs)]
14787        InvalidScalar(InvalidScalar),
14788        #[allow(missing_docs)]
14789        MissingEpochRootUpdate(MissingEpochRootUpdate),
14790        #[allow(missing_docs)]
14791        NoChangeRequired(NoChangeRequired),
14792        #[allow(missing_docs)]
14793        NotInitializing(NotInitializing),
14794        #[allow(missing_docs)]
14795        OutdatedState(OutdatedState),
14796        #[allow(missing_docs)]
14797        OwnableInvalidOwner(OwnableInvalidOwner),
14798        #[allow(missing_docs)]
14799        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14800        #[allow(missing_docs)]
14801        ProverNotPermissioned(ProverNotPermissioned),
14802        #[allow(missing_docs)]
14803        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14804        #[allow(missing_docs)]
14805        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14806        #[allow(missing_docs)]
14807        WrongStakeTableUsed(WrongStakeTableUsed),
14808    }
14809    #[automatically_derived]
14810    impl LightClientV2Errors {
14811        /// All the selectors of this enum.
14812        ///
14813        /// Note that the selectors might not be in the same order as the variants.
14814        /// No guarantees are made about the order of the selectors.
14815        ///
14816        /// Prefer using `SolInterface` methods instead.
14817        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14818            [5u8, 28u8, 70u8, 239u8],
14819            [5u8, 176u8, 92u8, 204u8],
14820            [8u8, 10u8, 232u8, 217u8],
14821            [9u8, 189u8, 227u8, 57u8],
14822            [17u8, 140u8, 218u8, 167u8],
14823            [20u8, 37u8, 234u8, 66u8],
14824            [30u8, 79u8, 189u8, 247u8],
14825            [76u8, 156u8, 140u8, 227u8],
14826            [78u8, 64u8, 92u8, 141u8],
14827            [81u8, 97u8, 128u8, 137u8],
14828            [97u8, 90u8, 146u8, 100u8],
14829            [153u8, 150u8, 179u8, 21u8],
14830            [161u8, 186u8, 7u8, 238u8],
14831            [163u8, 166u8, 71u8, 128u8],
14832            [168u8, 99u8, 174u8, 201u8],
14833            [170u8, 29u8, 73u8, 164u8],
14834            [176u8, 180u8, 56u8, 119u8],
14835            [179u8, 152u8, 151u8, 159u8],
14836            [215u8, 230u8, 188u8, 248u8],
14837            [224u8, 124u8, 141u8, 186u8],
14838            [230u8, 196u8, 36u8, 123u8],
14839            [244u8, 160u8, 238u8, 224u8],
14840            [249u8, 46u8, 232u8, 169u8],
14841        ];
14842    }
14843    #[automatically_derived]
14844    impl alloy_sol_types::SolInterface for LightClientV2Errors {
14845        const NAME: &'static str = "LightClientV2Errors";
14846        const MIN_DATA_LENGTH: usize = 0usize;
14847        const COUNT: usize = 23usize;
14848        #[inline]
14849        fn selector(&self) -> [u8; 4] {
14850            match self {
14851                Self::AddressEmptyCode(_) => {
14852                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14853                }
14854                Self::DeprecatedApi(_) => {
14855                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
14856                }
14857                Self::ERC1967InvalidImplementation(_) => {
14858                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14859                }
14860                Self::ERC1967NonPayable(_) => {
14861                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14862                }
14863                Self::FailedInnerCall(_) => {
14864                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14865                }
14866                Self::InsufficientSnapshotHistory(_) => {
14867                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
14868                }
14869                Self::InvalidAddress(_) => {
14870                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
14871                }
14872                Self::InvalidArgs(_) => {
14873                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
14874                }
14875                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
14876                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
14877                }
14878                Self::InvalidInitialization(_) => {
14879                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14880                }
14881                Self::InvalidMaxStateHistory(_) => {
14882                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
14883                }
14884                Self::InvalidProof(_) => {
14885                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
14886                }
14887                Self::InvalidScalar(_) => {
14888                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
14889                }
14890                Self::MissingEpochRootUpdate(_) => {
14891                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
14892                }
14893                Self::NoChangeRequired(_) => {
14894                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
14895                }
14896                Self::NotInitializing(_) => {
14897                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14898                }
14899                Self::OutdatedState(_) => {
14900                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
14901                }
14902                Self::OwnableInvalidOwner(_) => {
14903                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14904                }
14905                Self::OwnableUnauthorizedAccount(_) => {
14906                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14907                }
14908                Self::ProverNotPermissioned(_) => {
14909                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
14910                }
14911                Self::UUPSUnauthorizedCallContext(_) => {
14912                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14913                }
14914                Self::UUPSUnsupportedProxiableUUID(_) => {
14915                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14916                }
14917                Self::WrongStakeTableUsed(_) => {
14918                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
14919                }
14920            }
14921        }
14922        #[inline]
14923        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14924            Self::SELECTORS.get(i).copied()
14925        }
14926        #[inline]
14927        fn valid_selector(selector: [u8; 4]) -> bool {
14928            Self::SELECTORS.binary_search(&selector).is_ok()
14929        }
14930        #[inline]
14931        #[allow(non_snake_case)]
14932        fn abi_decode_raw(
14933            selector: [u8; 4],
14934            data: &[u8],
14935        ) -> alloy_sol_types::Result<Self> {
14936            static DECODE_SHIMS: &[fn(
14937                &[u8],
14938            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
14939                {
14940                    fn OutdatedState(
14941                        data: &[u8],
14942                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14943                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
14944                                data,
14945                            )
14946                            .map(LightClientV2Errors::OutdatedState)
14947                    }
14948                    OutdatedState
14949                },
14950                {
14951                    fn InvalidScalar(
14952                        data: &[u8],
14953                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14954                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
14955                                data,
14956                            )
14957                            .map(LightClientV2Errors::InvalidScalar)
14958                    }
14959                    InvalidScalar
14960                },
14961                {
14962                    fn MissingEpochRootUpdate(
14963                        data: &[u8],
14964                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14965                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
14966                                data,
14967                            )
14968                            .map(LightClientV2Errors::MissingEpochRootUpdate)
14969                    }
14970                    MissingEpochRootUpdate
14971                },
14972                {
14973                    fn InvalidProof(
14974                        data: &[u8],
14975                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14976                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
14977                            .map(LightClientV2Errors::InvalidProof)
14978                    }
14979                    InvalidProof
14980                },
14981                {
14982                    fn OwnableUnauthorizedAccount(
14983                        data: &[u8],
14984                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14985                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14986                                data,
14987                            )
14988                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
14989                    }
14990                    OwnableUnauthorizedAccount
14991                },
14992                {
14993                    fn FailedInnerCall(
14994                        data: &[u8],
14995                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14996                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14997                                data,
14998                            )
14999                            .map(LightClientV2Errors::FailedInnerCall)
15000                    }
15001                    FailedInnerCall
15002                },
15003                {
15004                    fn OwnableInvalidOwner(
15005                        data: &[u8],
15006                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15007                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15008                                data,
15009                            )
15010                            .map(LightClientV2Errors::OwnableInvalidOwner)
15011                    }
15012                    OwnableInvalidOwner
15013                },
15014                {
15015                    fn ERC1967InvalidImplementation(
15016                        data: &[u8],
15017                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15018                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15019                                data,
15020                            )
15021                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15022                    }
15023                    ERC1967InvalidImplementation
15024                },
15025                {
15026                    fn DeprecatedApi(
15027                        data: &[u8],
15028                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15029                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15030                                data,
15031                            )
15032                            .map(LightClientV2Errors::DeprecatedApi)
15033                    }
15034                    DeprecatedApi
15035                },
15036                {
15037                    fn WrongStakeTableUsed(
15038                        data: &[u8],
15039                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15040                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15041                                data,
15042                            )
15043                            .map(LightClientV2Errors::WrongStakeTableUsed)
15044                    }
15045                    WrongStakeTableUsed
15046                },
15047                {
15048                    fn InvalidHotShotBlockForCommitmentCheck(
15049                        data: &[u8],
15050                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15051                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15052                                data,
15053                            )
15054                            .map(
15055                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15056                            )
15057                    }
15058                    InvalidHotShotBlockForCommitmentCheck
15059                },
15060                {
15061                    fn AddressEmptyCode(
15062                        data: &[u8],
15063                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15064                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15065                                data,
15066                            )
15067                            .map(LightClientV2Errors::AddressEmptyCode)
15068                    }
15069                    AddressEmptyCode
15070                },
15071                {
15072                    fn InvalidArgs(
15073                        data: &[u8],
15074                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15075                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
15076                            .map(LightClientV2Errors::InvalidArgs)
15077                    }
15078                    InvalidArgs
15079                },
15080                {
15081                    fn ProverNotPermissioned(
15082                        data: &[u8],
15083                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15084                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15085                                data,
15086                            )
15087                            .map(LightClientV2Errors::ProverNotPermissioned)
15088                    }
15089                    ProverNotPermissioned
15090                },
15091                {
15092                    fn NoChangeRequired(
15093                        data: &[u8],
15094                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15095                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15096                                data,
15097                            )
15098                            .map(LightClientV2Errors::NoChangeRequired)
15099                    }
15100                    NoChangeRequired
15101                },
15102                {
15103                    fn UUPSUnsupportedProxiableUUID(
15104                        data: &[u8],
15105                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15106                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15107                                data,
15108                            )
15109                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15110                    }
15111                    UUPSUnsupportedProxiableUUID
15112                },
15113                {
15114                    fn InsufficientSnapshotHistory(
15115                        data: &[u8],
15116                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15117                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15118                                data,
15119                            )
15120                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15121                    }
15122                    InsufficientSnapshotHistory
15123                },
15124                {
15125                    fn ERC1967NonPayable(
15126                        data: &[u8],
15127                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15128                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15129                                data,
15130                            )
15131                            .map(LightClientV2Errors::ERC1967NonPayable)
15132                    }
15133                    ERC1967NonPayable
15134                },
15135                {
15136                    fn NotInitializing(
15137                        data: &[u8],
15138                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15139                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15140                                data,
15141                            )
15142                            .map(LightClientV2Errors::NotInitializing)
15143                    }
15144                    NotInitializing
15145                },
15146                {
15147                    fn UUPSUnauthorizedCallContext(
15148                        data: &[u8],
15149                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15150                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15151                                data,
15152                            )
15153                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15154                    }
15155                    UUPSUnauthorizedCallContext
15156                },
15157                {
15158                    fn InvalidAddress(
15159                        data: &[u8],
15160                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15161                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15162                                data,
15163                            )
15164                            .map(LightClientV2Errors::InvalidAddress)
15165                    }
15166                    InvalidAddress
15167                },
15168                {
15169                    fn InvalidMaxStateHistory(
15170                        data: &[u8],
15171                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15172                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15173                                data,
15174                            )
15175                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15176                    }
15177                    InvalidMaxStateHistory
15178                },
15179                {
15180                    fn InvalidInitialization(
15181                        data: &[u8],
15182                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15183                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15184                                data,
15185                            )
15186                            .map(LightClientV2Errors::InvalidInitialization)
15187                    }
15188                    InvalidInitialization
15189                },
15190            ];
15191            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15192                return Err(
15193                    alloy_sol_types::Error::unknown_selector(
15194                        <Self as alloy_sol_types::SolInterface>::NAME,
15195                        selector,
15196                    ),
15197                );
15198            };
15199            DECODE_SHIMS[idx](data)
15200        }
15201        #[inline]
15202        #[allow(non_snake_case)]
15203        fn abi_decode_raw_validate(
15204            selector: [u8; 4],
15205            data: &[u8],
15206        ) -> alloy_sol_types::Result<Self> {
15207            static DECODE_VALIDATE_SHIMS: &[fn(
15208                &[u8],
15209            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
15210                {
15211                    fn OutdatedState(
15212                        data: &[u8],
15213                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15214                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
15215                                data,
15216                            )
15217                            .map(LightClientV2Errors::OutdatedState)
15218                    }
15219                    OutdatedState
15220                },
15221                {
15222                    fn InvalidScalar(
15223                        data: &[u8],
15224                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15225                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
15226                                data,
15227                            )
15228                            .map(LightClientV2Errors::InvalidScalar)
15229                    }
15230                    InvalidScalar
15231                },
15232                {
15233                    fn MissingEpochRootUpdate(
15234                        data: &[u8],
15235                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15236                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
15237                                data,
15238                            )
15239                            .map(LightClientV2Errors::MissingEpochRootUpdate)
15240                    }
15241                    MissingEpochRootUpdate
15242                },
15243                {
15244                    fn InvalidProof(
15245                        data: &[u8],
15246                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15247                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
15248                                data,
15249                            )
15250                            .map(LightClientV2Errors::InvalidProof)
15251                    }
15252                    InvalidProof
15253                },
15254                {
15255                    fn OwnableUnauthorizedAccount(
15256                        data: &[u8],
15257                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15258                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
15259                                data,
15260                            )
15261                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
15262                    }
15263                    OwnableUnauthorizedAccount
15264                },
15265                {
15266                    fn FailedInnerCall(
15267                        data: &[u8],
15268                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15269                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
15270                                data,
15271                            )
15272                            .map(LightClientV2Errors::FailedInnerCall)
15273                    }
15274                    FailedInnerCall
15275                },
15276                {
15277                    fn OwnableInvalidOwner(
15278                        data: &[u8],
15279                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15280                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
15281                                data,
15282                            )
15283                            .map(LightClientV2Errors::OwnableInvalidOwner)
15284                    }
15285                    OwnableInvalidOwner
15286                },
15287                {
15288                    fn ERC1967InvalidImplementation(
15289                        data: &[u8],
15290                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15291                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
15292                                data,
15293                            )
15294                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15295                    }
15296                    ERC1967InvalidImplementation
15297                },
15298                {
15299                    fn DeprecatedApi(
15300                        data: &[u8],
15301                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15302                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
15303                                data,
15304                            )
15305                            .map(LightClientV2Errors::DeprecatedApi)
15306                    }
15307                    DeprecatedApi
15308                },
15309                {
15310                    fn WrongStakeTableUsed(
15311                        data: &[u8],
15312                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15313                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
15314                                data,
15315                            )
15316                            .map(LightClientV2Errors::WrongStakeTableUsed)
15317                    }
15318                    WrongStakeTableUsed
15319                },
15320                {
15321                    fn InvalidHotShotBlockForCommitmentCheck(
15322                        data: &[u8],
15323                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15324                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
15325                                data,
15326                            )
15327                            .map(
15328                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15329                            )
15330                    }
15331                    InvalidHotShotBlockForCommitmentCheck
15332                },
15333                {
15334                    fn AddressEmptyCode(
15335                        data: &[u8],
15336                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15337                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
15338                                data,
15339                            )
15340                            .map(LightClientV2Errors::AddressEmptyCode)
15341                    }
15342                    AddressEmptyCode
15343                },
15344                {
15345                    fn InvalidArgs(
15346                        data: &[u8],
15347                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15348                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
15349                                data,
15350                            )
15351                            .map(LightClientV2Errors::InvalidArgs)
15352                    }
15353                    InvalidArgs
15354                },
15355                {
15356                    fn ProverNotPermissioned(
15357                        data: &[u8],
15358                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15359                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
15360                                data,
15361                            )
15362                            .map(LightClientV2Errors::ProverNotPermissioned)
15363                    }
15364                    ProverNotPermissioned
15365                },
15366                {
15367                    fn NoChangeRequired(
15368                        data: &[u8],
15369                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15370                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
15371                                data,
15372                            )
15373                            .map(LightClientV2Errors::NoChangeRequired)
15374                    }
15375                    NoChangeRequired
15376                },
15377                {
15378                    fn UUPSUnsupportedProxiableUUID(
15379                        data: &[u8],
15380                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15381                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
15382                                data,
15383                            )
15384                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15385                    }
15386                    UUPSUnsupportedProxiableUUID
15387                },
15388                {
15389                    fn InsufficientSnapshotHistory(
15390                        data: &[u8],
15391                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15392                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15393                                data,
15394                            )
15395                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15396                    }
15397                    InsufficientSnapshotHistory
15398                },
15399                {
15400                    fn ERC1967NonPayable(
15401                        data: &[u8],
15402                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15403                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
15404                                data,
15405                            )
15406                            .map(LightClientV2Errors::ERC1967NonPayable)
15407                    }
15408                    ERC1967NonPayable
15409                },
15410                {
15411                    fn NotInitializing(
15412                        data: &[u8],
15413                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15414                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
15415                                data,
15416                            )
15417                            .map(LightClientV2Errors::NotInitializing)
15418                    }
15419                    NotInitializing
15420                },
15421                {
15422                    fn UUPSUnauthorizedCallContext(
15423                        data: &[u8],
15424                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15425                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
15426                                data,
15427                            )
15428                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15429                    }
15430                    UUPSUnauthorizedCallContext
15431                },
15432                {
15433                    fn InvalidAddress(
15434                        data: &[u8],
15435                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15436                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
15437                                data,
15438                            )
15439                            .map(LightClientV2Errors::InvalidAddress)
15440                    }
15441                    InvalidAddress
15442                },
15443                {
15444                    fn InvalidMaxStateHistory(
15445                        data: &[u8],
15446                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15447                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15448                                data,
15449                            )
15450                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15451                    }
15452                    InvalidMaxStateHistory
15453                },
15454                {
15455                    fn InvalidInitialization(
15456                        data: &[u8],
15457                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15458                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
15459                                data,
15460                            )
15461                            .map(LightClientV2Errors::InvalidInitialization)
15462                    }
15463                    InvalidInitialization
15464                },
15465            ];
15466            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15467                return Err(
15468                    alloy_sol_types::Error::unknown_selector(
15469                        <Self as alloy_sol_types::SolInterface>::NAME,
15470                        selector,
15471                    ),
15472                );
15473            };
15474            DECODE_VALIDATE_SHIMS[idx](data)
15475        }
15476        #[inline]
15477        fn abi_encoded_size(&self) -> usize {
15478            match self {
15479                Self::AddressEmptyCode(inner) => {
15480                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15481                        inner,
15482                    )
15483                }
15484                Self::DeprecatedApi(inner) => {
15485                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15486                }
15487                Self::ERC1967InvalidImplementation(inner) => {
15488                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15489                        inner,
15490                    )
15491                }
15492                Self::ERC1967NonPayable(inner) => {
15493                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15494                        inner,
15495                    )
15496                }
15497                Self::FailedInnerCall(inner) => {
15498                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15499                        inner,
15500                    )
15501                }
15502                Self::InsufficientSnapshotHistory(inner) => {
15503                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15504                        inner,
15505                    )
15506                }
15507                Self::InvalidAddress(inner) => {
15508                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15509                        inner,
15510                    )
15511                }
15512                Self::InvalidArgs(inner) => {
15513                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15514                }
15515                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15516                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15517                        inner,
15518                    )
15519                }
15520                Self::InvalidInitialization(inner) => {
15521                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15522                        inner,
15523                    )
15524                }
15525                Self::InvalidMaxStateHistory(inner) => {
15526                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15527                        inner,
15528                    )
15529                }
15530                Self::InvalidProof(inner) => {
15531                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15532                }
15533                Self::InvalidScalar(inner) => {
15534                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15535                }
15536                Self::MissingEpochRootUpdate(inner) => {
15537                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15538                        inner,
15539                    )
15540                }
15541                Self::NoChangeRequired(inner) => {
15542                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15543                        inner,
15544                    )
15545                }
15546                Self::NotInitializing(inner) => {
15547                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15548                        inner,
15549                    )
15550                }
15551                Self::OutdatedState(inner) => {
15552                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15553                }
15554                Self::OwnableInvalidOwner(inner) => {
15555                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15556                        inner,
15557                    )
15558                }
15559                Self::OwnableUnauthorizedAccount(inner) => {
15560                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15561                        inner,
15562                    )
15563                }
15564                Self::ProverNotPermissioned(inner) => {
15565                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15566                        inner,
15567                    )
15568                }
15569                Self::UUPSUnauthorizedCallContext(inner) => {
15570                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15571                        inner,
15572                    )
15573                }
15574                Self::UUPSUnsupportedProxiableUUID(inner) => {
15575                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15576                        inner,
15577                    )
15578                }
15579                Self::WrongStakeTableUsed(inner) => {
15580                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15581                        inner,
15582                    )
15583                }
15584            }
15585        }
15586        #[inline]
15587        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15588            match self {
15589                Self::AddressEmptyCode(inner) => {
15590                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15591                        inner,
15592                        out,
15593                    )
15594                }
15595                Self::DeprecatedApi(inner) => {
15596                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15597                        inner,
15598                        out,
15599                    )
15600                }
15601                Self::ERC1967InvalidImplementation(inner) => {
15602                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15603                        inner,
15604                        out,
15605                    )
15606                }
15607                Self::ERC1967NonPayable(inner) => {
15608                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15609                        inner,
15610                        out,
15611                    )
15612                }
15613                Self::FailedInnerCall(inner) => {
15614                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15615                        inner,
15616                        out,
15617                    )
15618                }
15619                Self::InsufficientSnapshotHistory(inner) => {
15620                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15621                        inner,
15622                        out,
15623                    )
15624                }
15625                Self::InvalidAddress(inner) => {
15626                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15627                        inner,
15628                        out,
15629                    )
15630                }
15631                Self::InvalidArgs(inner) => {
15632                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15633                        inner,
15634                        out,
15635                    )
15636                }
15637                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15638                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15639                        inner,
15640                        out,
15641                    )
15642                }
15643                Self::InvalidInitialization(inner) => {
15644                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15645                        inner,
15646                        out,
15647                    )
15648                }
15649                Self::InvalidMaxStateHistory(inner) => {
15650                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15651                        inner,
15652                        out,
15653                    )
15654                }
15655                Self::InvalidProof(inner) => {
15656                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15657                        inner,
15658                        out,
15659                    )
15660                }
15661                Self::InvalidScalar(inner) => {
15662                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15663                        inner,
15664                        out,
15665                    )
15666                }
15667                Self::MissingEpochRootUpdate(inner) => {
15668                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15669                        inner,
15670                        out,
15671                    )
15672                }
15673                Self::NoChangeRequired(inner) => {
15674                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15675                        inner,
15676                        out,
15677                    )
15678                }
15679                Self::NotInitializing(inner) => {
15680                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15681                        inner,
15682                        out,
15683                    )
15684                }
15685                Self::OutdatedState(inner) => {
15686                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15687                        inner,
15688                        out,
15689                    )
15690                }
15691                Self::OwnableInvalidOwner(inner) => {
15692                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15693                        inner,
15694                        out,
15695                    )
15696                }
15697                Self::OwnableUnauthorizedAccount(inner) => {
15698                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15699                        inner,
15700                        out,
15701                    )
15702                }
15703                Self::ProverNotPermissioned(inner) => {
15704                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15705                        inner,
15706                        out,
15707                    )
15708                }
15709                Self::UUPSUnauthorizedCallContext(inner) => {
15710                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15711                        inner,
15712                        out,
15713                    )
15714                }
15715                Self::UUPSUnsupportedProxiableUUID(inner) => {
15716                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15717                        inner,
15718                        out,
15719                    )
15720                }
15721                Self::WrongStakeTableUsed(inner) => {
15722                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
15723                        inner,
15724                        out,
15725                    )
15726                }
15727            }
15728        }
15729    }
15730    ///Container for all the [`LightClientV2`](self) events.
15731    #[derive(serde::Serialize, serde::Deserialize)]
15732    #[derive(Debug, PartialEq, Eq, Hash)]
15733    pub enum LightClientV2Events {
15734        #[allow(missing_docs)]
15735        Initialized(Initialized),
15736        #[allow(missing_docs)]
15737        NewEpoch(NewEpoch),
15738        #[allow(missing_docs)]
15739        NewState(NewState),
15740        #[allow(missing_docs)]
15741        OwnershipTransferred(OwnershipTransferred),
15742        #[allow(missing_docs)]
15743        PermissionedProverNotRequired(PermissionedProverNotRequired),
15744        #[allow(missing_docs)]
15745        PermissionedProverRequired(PermissionedProverRequired),
15746        #[allow(missing_docs)]
15747        Upgrade(Upgrade),
15748        #[allow(missing_docs)]
15749        Upgraded(Upgraded),
15750    }
15751    #[automatically_derived]
15752    impl LightClientV2Events {
15753        /// All the selectors of this enum.
15754        ///
15755        /// Note that the selectors might not be in the same order as the variants.
15756        /// No guarantees are made about the order of the selectors.
15757        ///
15758        /// Prefer using `SolInterface` methods instead.
15759        pub const SELECTORS: &'static [[u8; 32usize]] = &[
15760            [
15761                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
15762                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
15763                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
15764            ],
15765            [
15766                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
15767                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
15768                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
15769            ],
15770            [
15771                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
15772                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
15773                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
15774            ],
15775            [
15776                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
15777                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
15778                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
15779            ],
15780            [
15781                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
15782                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
15783                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
15784            ],
15785            [
15786                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
15787                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
15788                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
15789            ],
15790            [
15791                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
15792                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
15793                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
15794            ],
15795            [
15796                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
15797                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
15798                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
15799            ],
15800        ];
15801    }
15802    #[automatically_derived]
15803    impl alloy_sol_types::SolEventInterface for LightClientV2Events {
15804        const NAME: &'static str = "LightClientV2Events";
15805        const COUNT: usize = 8usize;
15806        fn decode_raw_log(
15807            topics: &[alloy_sol_types::Word],
15808            data: &[u8],
15809        ) -> alloy_sol_types::Result<Self> {
15810            match topics.first().copied() {
15811                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15812                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
15813                            topics,
15814                            data,
15815                        )
15816                        .map(Self::Initialized)
15817                }
15818                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15819                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15820                        .map(Self::NewEpoch)
15821                }
15822                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15823                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15824                        .map(Self::NewState)
15825                }
15826                Some(
15827                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15828                ) => {
15829                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15830                            topics,
15831                            data,
15832                        )
15833                        .map(Self::OwnershipTransferred)
15834                }
15835                Some(
15836                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15837                ) => {
15838                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15839                            topics,
15840                            data,
15841                        )
15842                        .map(Self::PermissionedProverNotRequired)
15843                }
15844                Some(
15845                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15846                ) => {
15847                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15848                            topics,
15849                            data,
15850                        )
15851                        .map(Self::PermissionedProverRequired)
15852                }
15853                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15854                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15855                        .map(Self::Upgrade)
15856                }
15857                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15858                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15859                        .map(Self::Upgraded)
15860                }
15861                _ => {
15862                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15863                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15864                        log: alloy_sol_types::private::Box::new(
15865                            alloy_sol_types::private::LogData::new_unchecked(
15866                                topics.to_vec(),
15867                                data.to_vec().into(),
15868                            ),
15869                        ),
15870                    })
15871                }
15872            }
15873        }
15874    }
15875    #[automatically_derived]
15876    impl alloy_sol_types::private::IntoLogData for LightClientV2Events {
15877        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15878            match self {
15879                Self::Initialized(inner) => {
15880                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15881                }
15882                Self::NewEpoch(inner) => {
15883                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15884                }
15885                Self::NewState(inner) => {
15886                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15887                }
15888                Self::OwnershipTransferred(inner) => {
15889                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15890                }
15891                Self::PermissionedProverNotRequired(inner) => {
15892                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15893                }
15894                Self::PermissionedProverRequired(inner) => {
15895                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15896                }
15897                Self::Upgrade(inner) => {
15898                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15899                }
15900                Self::Upgraded(inner) => {
15901                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15902                }
15903            }
15904        }
15905        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15906            match self {
15907                Self::Initialized(inner) => {
15908                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15909                }
15910                Self::NewEpoch(inner) => {
15911                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15912                }
15913                Self::NewState(inner) => {
15914                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15915                }
15916                Self::OwnershipTransferred(inner) => {
15917                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15918                }
15919                Self::PermissionedProverNotRequired(inner) => {
15920                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15921                }
15922                Self::PermissionedProverRequired(inner) => {
15923                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15924                }
15925                Self::Upgrade(inner) => {
15926                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15927                }
15928                Self::Upgraded(inner) => {
15929                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15930                }
15931            }
15932        }
15933    }
15934    use alloy::contract as alloy_contract;
15935    /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
15936
15937See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
15938    #[inline]
15939    pub const fn new<
15940        P: alloy_contract::private::Provider<N>,
15941        N: alloy_contract::private::Network,
15942    >(
15943        address: alloy_sol_types::private::Address,
15944        __provider: P,
15945    ) -> LightClientV2Instance<P, N> {
15946        LightClientV2Instance::<P, N>::new(address, __provider)
15947    }
15948    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15949
15950Returns a new instance of the contract, if the deployment was successful.
15951
15952For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15953    #[inline]
15954    pub fn deploy<
15955        P: alloy_contract::private::Provider<N>,
15956        N: alloy_contract::private::Network,
15957    >(
15958        __provider: P,
15959    ) -> impl ::core::future::Future<
15960        Output = alloy_contract::Result<LightClientV2Instance<P, N>>,
15961    > {
15962        LightClientV2Instance::<P, N>::deploy(__provider)
15963    }
15964    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15965and constructor arguments, if any.
15966
15967This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15968the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15969    #[inline]
15970    pub fn deploy_builder<
15971        P: alloy_contract::private::Provider<N>,
15972        N: alloy_contract::private::Network,
15973    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
15974        LightClientV2Instance::<P, N>::deploy_builder(__provider)
15975    }
15976    /**A [`LightClientV2`](self) instance.
15977
15978Contains type-safe methods for interacting with an on-chain instance of the
15979[`LightClientV2`](self) contract located at a given `address`, using a given
15980provider `P`.
15981
15982If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
15983documentation on how to provide it), the `deploy` and `deploy_builder` methods can
15984be used to deploy a new instance of the contract.
15985
15986See the [module-level documentation](self) for all the available methods.*/
15987    #[derive(Clone)]
15988    pub struct LightClientV2Instance<P, N = alloy_contract::private::Ethereum> {
15989        address: alloy_sol_types::private::Address,
15990        provider: P,
15991        _network: ::core::marker::PhantomData<N>,
15992    }
15993    #[automatically_derived]
15994    impl<P, N> ::core::fmt::Debug for LightClientV2Instance<P, N> {
15995        #[inline]
15996        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
15997            f.debug_tuple("LightClientV2Instance").field(&self.address).finish()
15998        }
15999    }
16000    /// Instantiation and getters/setters.
16001    #[automatically_derived]
16002    impl<
16003        P: alloy_contract::private::Provider<N>,
16004        N: alloy_contract::private::Network,
16005    > LightClientV2Instance<P, N> {
16006        /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16007
16008See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16009        #[inline]
16010        pub const fn new(
16011            address: alloy_sol_types::private::Address,
16012            __provider: P,
16013        ) -> Self {
16014            Self {
16015                address,
16016                provider: __provider,
16017                _network: ::core::marker::PhantomData,
16018            }
16019        }
16020        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16021
16022Returns a new instance of the contract, if the deployment was successful.
16023
16024For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16025        #[inline]
16026        pub async fn deploy(
16027            __provider: P,
16028        ) -> alloy_contract::Result<LightClientV2Instance<P, N>> {
16029            let call_builder = Self::deploy_builder(__provider);
16030            let contract_address = call_builder.deploy().await?;
16031            Ok(Self::new(contract_address, call_builder.provider))
16032        }
16033        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16034and constructor arguments, if any.
16035
16036This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16037the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16038        #[inline]
16039        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16040            alloy_contract::RawCallBuilder::new_raw_deploy(
16041                __provider,
16042                ::core::clone::Clone::clone(&BYTECODE),
16043            )
16044        }
16045        /// Returns a reference to the address.
16046        #[inline]
16047        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16048            &self.address
16049        }
16050        /// Sets the address.
16051        #[inline]
16052        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16053            self.address = address;
16054        }
16055        /// Sets the address and returns `self`.
16056        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16057            self.set_address(address);
16058            self
16059        }
16060        /// Returns a reference to the provider.
16061        #[inline]
16062        pub const fn provider(&self) -> &P {
16063            &self.provider
16064        }
16065    }
16066    impl<P: ::core::clone::Clone, N> LightClientV2Instance<&P, N> {
16067        /// Clones the provider and returns a new instance with the cloned provider.
16068        #[inline]
16069        pub fn with_cloned_provider(self) -> LightClientV2Instance<P, N> {
16070            LightClientV2Instance {
16071                address: self.address,
16072                provider: ::core::clone::Clone::clone(&self.provider),
16073                _network: ::core::marker::PhantomData,
16074            }
16075        }
16076    }
16077    /// Function calls.
16078    #[automatically_derived]
16079    impl<
16080        P: alloy_contract::private::Provider<N>,
16081        N: alloy_contract::private::Network,
16082    > LightClientV2Instance<P, N> {
16083        /// Creates a new call builder using this contract instance's provider and address.
16084        ///
16085        /// Note that the call can be any function call, not just those defined in this
16086        /// contract. Prefer using the other methods for building type-safe contract calls.
16087        pub fn call_builder<C: alloy_sol_types::SolCall>(
16088            &self,
16089            call: &C,
16090        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16091            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16092        }
16093        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16094        pub fn UPGRADE_INTERFACE_VERSION(
16095            &self,
16096        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16097            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16098        }
16099        ///Creates a new call builder for the [`_getVk`] function.
16100        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16101            self.call_builder(&_getVkCall)
16102        }
16103        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16104        pub fn blocksPerEpoch(
16105            &self,
16106        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16107            self.call_builder(&blocksPerEpochCall)
16108        }
16109        ///Creates a new call builder for the [`currentBlockNumber`] function.
16110        pub fn currentBlockNumber(
16111            &self,
16112        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16113            self.call_builder(&currentBlockNumberCall)
16114        }
16115        ///Creates a new call builder for the [`currentEpoch`] function.
16116        pub fn currentEpoch(
16117            &self,
16118        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16119            self.call_builder(&currentEpochCall)
16120        }
16121        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16122        pub fn disablePermissionedProverMode(
16123            &self,
16124        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16125            self.call_builder(&disablePermissionedProverModeCall)
16126        }
16127        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16128        pub fn epochFromBlockNumber(
16129            &self,
16130            _blockNum: u64,
16131            _blocksPerEpoch: u64,
16132        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16133            self.call_builder(
16134                &epochFromBlockNumberCall {
16135                    _blockNum,
16136                    _blocksPerEpoch,
16137                },
16138            )
16139        }
16140        ///Creates a new call builder for the [`epochStartBlock`] function.
16141        pub fn epochStartBlock(
16142            &self,
16143        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16144            self.call_builder(&epochStartBlockCall)
16145        }
16146        ///Creates a new call builder for the [`finalizedState`] function.
16147        pub fn finalizedState(
16148            &self,
16149        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16150            self.call_builder(&finalizedStateCall)
16151        }
16152        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16153        pub fn genesisStakeTableState(
16154            &self,
16155        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16156            self.call_builder(&genesisStakeTableStateCall)
16157        }
16158        ///Creates a new call builder for the [`genesisState`] function.
16159        pub fn genesisState(
16160            &self,
16161        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16162            self.call_builder(&genesisStateCall)
16163        }
16164        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16165        pub fn getHotShotCommitment(
16166            &self,
16167            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16168        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16169            self.call_builder(
16170                &getHotShotCommitmentCall {
16171                    hotShotBlockHeight,
16172                },
16173            )
16174        }
16175        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16176        pub fn getStateHistoryCount(
16177            &self,
16178        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16179            self.call_builder(&getStateHistoryCountCall)
16180        }
16181        ///Creates a new call builder for the [`getVersion`] function.
16182        pub fn getVersion(
16183            &self,
16184        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16185            self.call_builder(&getVersionCall)
16186        }
16187        ///Creates a new call builder for the [`initialize`] function.
16188        pub fn initialize(
16189            &self,
16190            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16191            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16192            _stateHistoryRetentionPeriod: u32,
16193            owner: alloy::sol_types::private::Address,
16194        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16195            self.call_builder(
16196                &initializeCall {
16197                    _genesis,
16198                    _genesisStakeTableState,
16199                    _stateHistoryRetentionPeriod,
16200                    owner,
16201                },
16202            )
16203        }
16204        ///Creates a new call builder for the [`initializeV2`] function.
16205        pub fn initializeV2(
16206            &self,
16207            _blocksPerEpoch: u64,
16208            _epochStartBlock: u64,
16209        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16210            self.call_builder(
16211                &initializeV2Call {
16212                    _blocksPerEpoch,
16213                    _epochStartBlock,
16214                },
16215            )
16216        }
16217        ///Creates a new call builder for the [`isEpochRoot`] function.
16218        pub fn isEpochRoot(
16219            &self,
16220            blockHeight: u64,
16221        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16222            self.call_builder(&isEpochRootCall { blockHeight })
16223        }
16224        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16225        pub fn isGtEpochRoot(
16226            &self,
16227            blockHeight: u64,
16228        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16229            self.call_builder(&isGtEpochRootCall { blockHeight })
16230        }
16231        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16232        pub fn isPermissionedProverEnabled(
16233            &self,
16234        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16235            self.call_builder(&isPermissionedProverEnabledCall)
16236        }
16237        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16238        pub fn lagOverEscapeHatchThreshold(
16239            &self,
16240            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16241            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16242        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16243            self.call_builder(
16244                &lagOverEscapeHatchThresholdCall {
16245                    blockNumber,
16246                    blockThreshold,
16247                },
16248            )
16249        }
16250        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16251        pub fn newFinalizedState_0(
16252            &self,
16253            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16254            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16255        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16256            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16257        }
16258        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16259        pub fn newFinalizedState_1(
16260            &self,
16261            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16262            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16263            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16264        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16265            self.call_builder(
16266                &newFinalizedState_1Call {
16267                    newState,
16268                    nextStakeTable,
16269                    proof,
16270                },
16271            )
16272        }
16273        ///Creates a new call builder for the [`owner`] function.
16274        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16275            self.call_builder(&ownerCall)
16276        }
16277        ///Creates a new call builder for the [`permissionedProver`] function.
16278        pub fn permissionedProver(
16279            &self,
16280        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16281            self.call_builder(&permissionedProverCall)
16282        }
16283        ///Creates a new call builder for the [`proxiableUUID`] function.
16284        pub fn proxiableUUID(
16285            &self,
16286        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16287            self.call_builder(&proxiableUUIDCall)
16288        }
16289        ///Creates a new call builder for the [`renounceOwnership`] function.
16290        pub fn renounceOwnership(
16291            &self,
16292        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16293            self.call_builder(&renounceOwnershipCall)
16294        }
16295        ///Creates a new call builder for the [`setPermissionedProver`] function.
16296        pub fn setPermissionedProver(
16297            &self,
16298            prover: alloy::sol_types::private::Address,
16299        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16300            self.call_builder(
16301                &setPermissionedProverCall {
16302                    prover,
16303                },
16304            )
16305        }
16306        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16307        pub fn setStateHistoryRetentionPeriod(
16308            &self,
16309            historySeconds: u32,
16310        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16311            self.call_builder(
16312                &setStateHistoryRetentionPeriodCall {
16313                    historySeconds,
16314                },
16315            )
16316        }
16317        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16318        pub fn setstateHistoryRetentionPeriod(
16319            &self,
16320            historySeconds: u32,
16321        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16322            self.call_builder(
16323                &setstateHistoryRetentionPeriodCall {
16324                    historySeconds,
16325                },
16326            )
16327        }
16328        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16329        pub fn stateHistoryCommitments(
16330            &self,
16331            _0: alloy::sol_types::private::primitives::aliases::U256,
16332        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16333            self.call_builder(&stateHistoryCommitmentsCall(_0))
16334        }
16335        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16336        pub fn stateHistoryFirstIndex(
16337            &self,
16338        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16339            self.call_builder(&stateHistoryFirstIndexCall)
16340        }
16341        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16342        pub fn stateHistoryRetentionPeriod(
16343            &self,
16344        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16345            self.call_builder(&stateHistoryRetentionPeriodCall)
16346        }
16347        ///Creates a new call builder for the [`transferOwnership`] function.
16348        pub fn transferOwnership(
16349            &self,
16350            newOwner: alloy::sol_types::private::Address,
16351        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16352            self.call_builder(&transferOwnershipCall { newOwner })
16353        }
16354        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16355        pub fn updateEpochStartBlock(
16356            &self,
16357            newEpochStartBlock: u64,
16358        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
16359            self.call_builder(
16360                &updateEpochStartBlockCall {
16361                    newEpochStartBlock,
16362                },
16363            )
16364        }
16365        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16366        pub fn upgradeToAndCall(
16367            &self,
16368            newImplementation: alloy::sol_types::private::Address,
16369            data: alloy::sol_types::private::Bytes,
16370        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
16371            self.call_builder(
16372                &upgradeToAndCallCall {
16373                    newImplementation,
16374                    data,
16375                },
16376            )
16377        }
16378        ///Creates a new call builder for the [`votingStakeTableState`] function.
16379        pub fn votingStakeTableState(
16380            &self,
16381        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
16382            self.call_builder(&votingStakeTableStateCall)
16383        }
16384    }
16385    /// Event filters.
16386    #[automatically_derived]
16387    impl<
16388        P: alloy_contract::private::Provider<N>,
16389        N: alloy_contract::private::Network,
16390    > LightClientV2Instance<P, N> {
16391        /// Creates a new event filter using this contract instance's provider and address.
16392        ///
16393        /// Note that the type can be any event, not just those defined in this contract.
16394        /// Prefer using the other methods for building type-safe event filters.
16395        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16396            &self,
16397        ) -> alloy_contract::Event<&P, E, N> {
16398            alloy_contract::Event::new_sol(&self.provider, &self.address)
16399        }
16400        ///Creates a new event filter for the [`Initialized`] event.
16401        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
16402            self.event_filter::<Initialized>()
16403        }
16404        ///Creates a new event filter for the [`NewEpoch`] event.
16405        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
16406            self.event_filter::<NewEpoch>()
16407        }
16408        ///Creates a new event filter for the [`NewState`] event.
16409        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
16410            self.event_filter::<NewState>()
16411        }
16412        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16413        pub fn OwnershipTransferred_filter(
16414            &self,
16415        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
16416            self.event_filter::<OwnershipTransferred>()
16417        }
16418        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16419        pub fn PermissionedProverNotRequired_filter(
16420            &self,
16421        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
16422            self.event_filter::<PermissionedProverNotRequired>()
16423        }
16424        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16425        pub fn PermissionedProverRequired_filter(
16426            &self,
16427        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
16428            self.event_filter::<PermissionedProverRequired>()
16429        }
16430        ///Creates a new event filter for the [`Upgrade`] event.
16431        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
16432            self.event_filter::<Upgrade>()
16433        }
16434        ///Creates a new event filter for the [`Upgraded`] event.
16435        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
16436            self.event_filter::<Upgraded>()
16437        }
16438    }
16439}