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        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
640    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239///Module containing a contract's types and functions.
2240/**
2241
2242```solidity
2243library LightClient {
2244    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2245    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2246}
2247```*/
2248#[allow(
2249    non_camel_case_types,
2250    non_snake_case,
2251    clippy::pub_underscore_fields,
2252    clippy::style,
2253    clippy::empty_structs_with_brackets
2254)]
2255pub mod LightClient {
2256    use super::*;
2257    use alloy::sol_types as alloy_sol_types;
2258    #[derive(serde::Serialize, serde::Deserialize)]
2259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2260    /**```solidity
2261struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2262```*/
2263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2264    #[derive(Clone)]
2265    pub struct LightClientState {
2266        #[allow(missing_docs)]
2267        pub viewNum: u64,
2268        #[allow(missing_docs)]
2269        pub blockHeight: u64,
2270        #[allow(missing_docs)]
2271        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2272    }
2273    #[allow(
2274        non_camel_case_types,
2275        non_snake_case,
2276        clippy::pub_underscore_fields,
2277        clippy::style
2278    )]
2279    const _: () = {
2280        use alloy::sol_types as alloy_sol_types;
2281        #[doc(hidden)]
2282        type UnderlyingSolTuple<'a> = (
2283            alloy::sol_types::sol_data::Uint<64>,
2284            alloy::sol_types::sol_data::Uint<64>,
2285            BN254::ScalarField,
2286        );
2287        #[doc(hidden)]
2288        type UnderlyingRustTuple<'a> = (
2289            u64,
2290            u64,
2291            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2292        );
2293        #[cfg(test)]
2294        #[allow(dead_code, unreachable_patterns)]
2295        fn _type_assertion(
2296            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2297        ) {
2298            match _t {
2299                alloy_sol_types::private::AssertTypeEq::<
2300                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2301                >(_) => {}
2302            }
2303        }
2304        #[automatically_derived]
2305        #[doc(hidden)]
2306        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2307            fn from(value: LightClientState) -> Self {
2308                (value.viewNum, value.blockHeight, value.blockCommRoot)
2309            }
2310        }
2311        #[automatically_derived]
2312        #[doc(hidden)]
2313        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2314            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2315                Self {
2316                    viewNum: tuple.0,
2317                    blockHeight: tuple.1,
2318                    blockCommRoot: tuple.2,
2319                }
2320            }
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::SolValue for LightClientState {
2324            type SolType = Self;
2325        }
2326        #[automatically_derived]
2327        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2328            #[inline]
2329            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2330                (
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2334                    <alloy::sol_types::sol_data::Uint<
2335                        64,
2336                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2337                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2338                        &self.blockCommRoot,
2339                    ),
2340                )
2341            }
2342            #[inline]
2343            fn stv_abi_encoded_size(&self) -> usize {
2344                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2345                    return size;
2346                }
2347                let tuple = <UnderlyingRustTuple<
2348                    '_,
2349                > as ::core::convert::From<Self>>::from(self.clone());
2350                <UnderlyingSolTuple<
2351                    '_,
2352                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2353            }
2354            #[inline]
2355            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2356                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2357            }
2358            #[inline]
2359            fn stv_abi_encode_packed_to(
2360                &self,
2361                out: &mut alloy_sol_types::private::Vec<u8>,
2362            ) {
2363                let tuple = <UnderlyingRustTuple<
2364                    '_,
2365                > as ::core::convert::From<Self>>::from(self.clone());
2366                <UnderlyingSolTuple<
2367                    '_,
2368                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2369            }
2370            #[inline]
2371            fn stv_abi_packed_encoded_size(&self) -> usize {
2372                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2373                    return size;
2374                }
2375                let tuple = <UnderlyingRustTuple<
2376                    '_,
2377                > as ::core::convert::From<Self>>::from(self.clone());
2378                <UnderlyingSolTuple<
2379                    '_,
2380                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2381            }
2382        }
2383        #[automatically_derived]
2384        impl alloy_sol_types::SolType for LightClientState {
2385            type RustType = Self;
2386            type Token<'a> = <UnderlyingSolTuple<
2387                'a,
2388            > as alloy_sol_types::SolType>::Token<'a>;
2389            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2390            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2393            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2394                '_,
2395            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2396            #[inline]
2397            fn valid_token(token: &Self::Token<'_>) -> bool {
2398                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2399            }
2400            #[inline]
2401            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2402                let tuple = <UnderlyingSolTuple<
2403                    '_,
2404                > as alloy_sol_types::SolType>::detokenize(token);
2405                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2406            }
2407        }
2408        #[automatically_derived]
2409        impl alloy_sol_types::SolStruct for LightClientState {
2410            const NAME: &'static str = "LightClientState";
2411            #[inline]
2412            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2413                alloy_sol_types::private::Cow::Borrowed(
2414                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2415                )
2416            }
2417            #[inline]
2418            fn eip712_components() -> alloy_sol_types::private::Vec<
2419                alloy_sol_types::private::Cow<'static, str>,
2420            > {
2421                alloy_sol_types::private::Vec::new()
2422            }
2423            #[inline]
2424            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2425                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2426            }
2427            #[inline]
2428            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2429                [
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2433                        .0,
2434                    <alloy::sol_types::sol_data::Uint<
2435                        64,
2436                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2437                        .0,
2438                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2439                            &self.blockCommRoot,
2440                        )
2441                        .0,
2442                ]
2443                    .concat()
2444            }
2445        }
2446        #[automatically_derived]
2447        impl alloy_sol_types::EventTopic for LightClientState {
2448            #[inline]
2449            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2450                0usize
2451                    + <alloy::sol_types::sol_data::Uint<
2452                        64,
2453                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2454                        &rust.viewNum,
2455                    )
2456                    + <alloy::sol_types::sol_data::Uint<
2457                        64,
2458                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockHeight,
2460                    )
2461                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2462                        &rust.blockCommRoot,
2463                    )
2464            }
2465            #[inline]
2466            fn encode_topic_preimage(
2467                rust: &Self::RustType,
2468                out: &mut alloy_sol_types::private::Vec<u8>,
2469            ) {
2470                out.reserve(
2471                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2472                );
2473                <alloy::sol_types::sol_data::Uint<
2474                    64,
2475                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2476                    &rust.viewNum,
2477                    out,
2478                );
2479                <alloy::sol_types::sol_data::Uint<
2480                    64,
2481                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockHeight,
2483                    out,
2484                );
2485                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2486                    &rust.blockCommRoot,
2487                    out,
2488                );
2489            }
2490            #[inline]
2491            fn encode_topic(
2492                rust: &Self::RustType,
2493            ) -> alloy_sol_types::abi::token::WordToken {
2494                let mut out = alloy_sol_types::private::Vec::new();
2495                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2496                    rust,
2497                    &mut out,
2498                );
2499                alloy_sol_types::abi::token::WordToken(
2500                    alloy_sol_types::private::keccak256(out),
2501                )
2502            }
2503        }
2504    };
2505    #[derive(serde::Serialize, serde::Deserialize)]
2506    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2507    /**```solidity
2508struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2509```*/
2510    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2511    #[derive(Clone)]
2512    pub struct StakeTableState {
2513        #[allow(missing_docs)]
2514        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2515        #[allow(missing_docs)]
2516        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517        #[allow(missing_docs)]
2518        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2519        #[allow(missing_docs)]
2520        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2521    }
2522    #[allow(
2523        non_camel_case_types,
2524        non_snake_case,
2525        clippy::pub_underscore_fields,
2526        clippy::style
2527    )]
2528    const _: () = {
2529        use alloy::sol_types as alloy_sol_types;
2530        #[doc(hidden)]
2531        type UnderlyingSolTuple<'a> = (
2532            alloy::sol_types::sol_data::Uint<256>,
2533            BN254::ScalarField,
2534            BN254::ScalarField,
2535            BN254::ScalarField,
2536        );
2537        #[doc(hidden)]
2538        type UnderlyingRustTuple<'a> = (
2539            alloy::sol_types::private::primitives::aliases::U256,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2542            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2543        );
2544        #[cfg(test)]
2545        #[allow(dead_code, unreachable_patterns)]
2546        fn _type_assertion(
2547            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2548        ) {
2549            match _t {
2550                alloy_sol_types::private::AssertTypeEq::<
2551                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2552                >(_) => {}
2553            }
2554        }
2555        #[automatically_derived]
2556        #[doc(hidden)]
2557        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2558            fn from(value: StakeTableState) -> Self {
2559                (
2560                    value.threshold,
2561                    value.blsKeyComm,
2562                    value.schnorrKeyComm,
2563                    value.amountComm,
2564                )
2565            }
2566        }
2567        #[automatically_derived]
2568        #[doc(hidden)]
2569        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2570            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2571                Self {
2572                    threshold: tuple.0,
2573                    blsKeyComm: tuple.1,
2574                    schnorrKeyComm: tuple.2,
2575                    amountComm: tuple.3,
2576                }
2577            }
2578        }
2579        #[automatically_derived]
2580        impl alloy_sol_types::SolValue for StakeTableState {
2581            type SolType = Self;
2582        }
2583        #[automatically_derived]
2584        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2585            #[inline]
2586            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2587                (
2588                    <alloy::sol_types::sol_data::Uint<
2589                        256,
2590                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.blsKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.schnorrKeyComm,
2596                    ),
2597                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2598                        &self.amountComm,
2599                    ),
2600                )
2601            }
2602            #[inline]
2603            fn stv_abi_encoded_size(&self) -> usize {
2604                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2605                    return size;
2606                }
2607                let tuple = <UnderlyingRustTuple<
2608                    '_,
2609                > as ::core::convert::From<Self>>::from(self.clone());
2610                <UnderlyingSolTuple<
2611                    '_,
2612                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2613            }
2614            #[inline]
2615            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2616                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2617            }
2618            #[inline]
2619            fn stv_abi_encode_packed_to(
2620                &self,
2621                out: &mut alloy_sol_types::private::Vec<u8>,
2622            ) {
2623                let tuple = <UnderlyingRustTuple<
2624                    '_,
2625                > as ::core::convert::From<Self>>::from(self.clone());
2626                <UnderlyingSolTuple<
2627                    '_,
2628                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2629            }
2630            #[inline]
2631            fn stv_abi_packed_encoded_size(&self) -> usize {
2632                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2633                    return size;
2634                }
2635                let tuple = <UnderlyingRustTuple<
2636                    '_,
2637                > as ::core::convert::From<Self>>::from(self.clone());
2638                <UnderlyingSolTuple<
2639                    '_,
2640                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2641            }
2642        }
2643        #[automatically_derived]
2644        impl alloy_sol_types::SolType for StakeTableState {
2645            type RustType = Self;
2646            type Token<'a> = <UnderlyingSolTuple<
2647                'a,
2648            > as alloy_sol_types::SolType>::Token<'a>;
2649            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2650            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2653            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2654                '_,
2655            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2656            #[inline]
2657            fn valid_token(token: &Self::Token<'_>) -> bool {
2658                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2659            }
2660            #[inline]
2661            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2662                let tuple = <UnderlyingSolTuple<
2663                    '_,
2664                > as alloy_sol_types::SolType>::detokenize(token);
2665                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2666            }
2667        }
2668        #[automatically_derived]
2669        impl alloy_sol_types::SolStruct for StakeTableState {
2670            const NAME: &'static str = "StakeTableState";
2671            #[inline]
2672            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2673                alloy_sol_types::private::Cow::Borrowed(
2674                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2675                )
2676            }
2677            #[inline]
2678            fn eip712_components() -> alloy_sol_types::private::Vec<
2679                alloy_sol_types::private::Cow<'static, str>,
2680            > {
2681                alloy_sol_types::private::Vec::new()
2682            }
2683            #[inline]
2684            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2685                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2686            }
2687            #[inline]
2688            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2689                [
2690                    <alloy::sol_types::sol_data::Uint<
2691                        256,
2692                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2693                        .0,
2694                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2695                            &self.blsKeyComm,
2696                        )
2697                        .0,
2698                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2699                            &self.schnorrKeyComm,
2700                        )
2701                        .0,
2702                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2703                            &self.amountComm,
2704                        )
2705                        .0,
2706                ]
2707                    .concat()
2708            }
2709        }
2710        #[automatically_derived]
2711        impl alloy_sol_types::EventTopic for StakeTableState {
2712            #[inline]
2713            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2714                0usize
2715                    + <alloy::sol_types::sol_data::Uint<
2716                        256,
2717                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.threshold,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.blsKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.schnorrKeyComm,
2725                    )
2726                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2727                        &rust.amountComm,
2728                    )
2729            }
2730            #[inline]
2731            fn encode_topic_preimage(
2732                rust: &Self::RustType,
2733                out: &mut alloy_sol_types::private::Vec<u8>,
2734            ) {
2735                out.reserve(
2736                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2737                );
2738                <alloy::sol_types::sol_data::Uint<
2739                    256,
2740                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2741                    &rust.threshold,
2742                    out,
2743                );
2744                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2745                    &rust.blsKeyComm,
2746                    out,
2747                );
2748                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2749                    &rust.schnorrKeyComm,
2750                    out,
2751                );
2752                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2753                    &rust.amountComm,
2754                    out,
2755                );
2756            }
2757            #[inline]
2758            fn encode_topic(
2759                rust: &Self::RustType,
2760            ) -> alloy_sol_types::abi::token::WordToken {
2761                let mut out = alloy_sol_types::private::Vec::new();
2762                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2763                    rust,
2764                    &mut out,
2765                );
2766                alloy_sol_types::abi::token::WordToken(
2767                    alloy_sol_types::private::keccak256(out),
2768                )
2769            }
2770        }
2771    };
2772    use alloy::contract as alloy_contract;
2773    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2774
2775See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2776    #[inline]
2777    pub const fn new<
2778        P: alloy_contract::private::Provider<N>,
2779        N: alloy_contract::private::Network,
2780    >(
2781        address: alloy_sol_types::private::Address,
2782        provider: P,
2783    ) -> LightClientInstance<P, N> {
2784        LightClientInstance::<P, N>::new(address, provider)
2785    }
2786    /**A [`LightClient`](self) instance.
2787
2788Contains type-safe methods for interacting with an on-chain instance of the
2789[`LightClient`](self) contract located at a given `address`, using a given
2790provider `P`.
2791
2792If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2793documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2794be used to deploy a new instance of the contract.
2795
2796See the [module-level documentation](self) for all the available methods.*/
2797    #[derive(Clone)]
2798    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2799        address: alloy_sol_types::private::Address,
2800        provider: P,
2801        _network: ::core::marker::PhantomData<N>,
2802    }
2803    #[automatically_derived]
2804    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2805        #[inline]
2806        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2807            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2808        }
2809    }
2810    /// Instantiation and getters/setters.
2811    #[automatically_derived]
2812    impl<
2813        P: alloy_contract::private::Provider<N>,
2814        N: alloy_contract::private::Network,
2815    > LightClientInstance<P, N> {
2816        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2817
2818See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2819        #[inline]
2820        pub const fn new(
2821            address: alloy_sol_types::private::Address,
2822            provider: P,
2823        ) -> Self {
2824            Self {
2825                address,
2826                provider,
2827                _network: ::core::marker::PhantomData,
2828            }
2829        }
2830        /// Returns a reference to the address.
2831        #[inline]
2832        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2833            &self.address
2834        }
2835        /// Sets the address.
2836        #[inline]
2837        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2838            self.address = address;
2839        }
2840        /// Sets the address and returns `self`.
2841        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2842            self.set_address(address);
2843            self
2844        }
2845        /// Returns a reference to the provider.
2846        #[inline]
2847        pub const fn provider(&self) -> &P {
2848            &self.provider
2849        }
2850    }
2851    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2852        /// Clones the provider and returns a new instance with the cloned provider.
2853        #[inline]
2854        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2855            LightClientInstance {
2856                address: self.address,
2857                provider: ::core::clone::Clone::clone(&self.provider),
2858                _network: ::core::marker::PhantomData,
2859            }
2860        }
2861    }
2862    /// Function calls.
2863    #[automatically_derived]
2864    impl<
2865        P: alloy_contract::private::Provider<N>,
2866        N: alloy_contract::private::Network,
2867    > LightClientInstance<P, N> {
2868        /// Creates a new call builder using this contract instance's provider and address.
2869        ///
2870        /// Note that the call can be any function call, not just those defined in this
2871        /// contract. Prefer using the other methods for building type-safe contract calls.
2872        pub fn call_builder<C: alloy_sol_types::SolCall>(
2873            &self,
2874            call: &C,
2875        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2876            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2877        }
2878    }
2879    /// Event filters.
2880    #[automatically_derived]
2881    impl<
2882        P: alloy_contract::private::Provider<N>,
2883        N: alloy_contract::private::Network,
2884    > LightClientInstance<P, N> {
2885        /// Creates a new event filter using this contract instance's provider and address.
2886        ///
2887        /// Note that the type can be any event, not just those defined in this contract.
2888        /// Prefer using the other methods for building type-safe event filters.
2889        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2890            &self,
2891        ) -> alloy_contract::Event<&P, E, N> {
2892            alloy_contract::Event::new_sol(&self.provider, &self.address)
2893        }
2894    }
2895}
2896/**
2897
2898Generated by the following Solidity interface...
2899```solidity
2900library BN254 {
2901    type BaseField is uint256;
2902    type ScalarField is uint256;
2903    struct G1Point {
2904        BaseField x;
2905        BaseField y;
2906    }
2907}
2908
2909library IPlonkVerifier {
2910    struct PlonkProof {
2911        BN254.G1Point wire0;
2912        BN254.G1Point wire1;
2913        BN254.G1Point wire2;
2914        BN254.G1Point wire3;
2915        BN254.G1Point wire4;
2916        BN254.G1Point prodPerm;
2917        BN254.G1Point split0;
2918        BN254.G1Point split1;
2919        BN254.G1Point split2;
2920        BN254.G1Point split3;
2921        BN254.G1Point split4;
2922        BN254.G1Point zeta;
2923        BN254.G1Point zetaOmega;
2924        BN254.ScalarField wireEval0;
2925        BN254.ScalarField wireEval1;
2926        BN254.ScalarField wireEval2;
2927        BN254.ScalarField wireEval3;
2928        BN254.ScalarField wireEval4;
2929        BN254.ScalarField sigmaEval0;
2930        BN254.ScalarField sigmaEval1;
2931        BN254.ScalarField sigmaEval2;
2932        BN254.ScalarField sigmaEval3;
2933        BN254.ScalarField prodPermZetaOmegaEval;
2934    }
2935    struct VerifyingKey {
2936        uint256 domainSize;
2937        uint256 numInputs;
2938        BN254.G1Point sigma0;
2939        BN254.G1Point sigma1;
2940        BN254.G1Point sigma2;
2941        BN254.G1Point sigma3;
2942        BN254.G1Point sigma4;
2943        BN254.G1Point q1;
2944        BN254.G1Point q2;
2945        BN254.G1Point q3;
2946        BN254.G1Point q4;
2947        BN254.G1Point qM12;
2948        BN254.G1Point qM34;
2949        BN254.G1Point qO;
2950        BN254.G1Point qC;
2951        BN254.G1Point qH1;
2952        BN254.G1Point qH2;
2953        BN254.G1Point qH3;
2954        BN254.G1Point qH4;
2955        BN254.G1Point qEcc;
2956        bytes32 g2LSB;
2957        bytes32 g2MSB;
2958    }
2959}
2960
2961library LightClient {
2962    struct LightClientState {
2963        uint64 viewNum;
2964        uint64 blockHeight;
2965        BN254.ScalarField blockCommRoot;
2966    }
2967    struct StakeTableState {
2968        uint256 threshold;
2969        BN254.ScalarField blsKeyComm;
2970        BN254.ScalarField schnorrKeyComm;
2971        BN254.ScalarField amountComm;
2972    }
2973}
2974
2975interface LightClientV2 {
2976    error AddressEmptyCode(address target);
2977    error DeprecatedApi();
2978    error ERC1967InvalidImplementation(address implementation);
2979    error ERC1967NonPayable();
2980    error FailedInnerCall();
2981    error InsufficientSnapshotHistory();
2982    error InvalidAddress();
2983    error InvalidArgs();
2984    error InvalidHotShotBlockForCommitmentCheck();
2985    error InvalidInitialization();
2986    error InvalidMaxStateHistory();
2987    error InvalidProof();
2988    error InvalidScalar();
2989    error MissingEpochRootUpdate();
2990    error NoChangeRequired();
2991    error NotInitializing();
2992    error OutdatedState();
2993    error OwnableInvalidOwner(address owner);
2994    error OwnableUnauthorizedAccount(address account);
2995    error OwnershipCannotBeRenounced();
2996    error ProverNotPermissioned();
2997    error UUPSUnauthorizedCallContext();
2998    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2999    error WrongStakeTableUsed();
3000
3001    event Initialized(uint64 version);
3002    event NewEpoch(uint64 epoch);
3003    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3004    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3005    event PermissionedProverNotRequired();
3006    event PermissionedProverRequired(address permissionedProver);
3007    event Upgrade(address implementation);
3008    event Upgraded(address indexed implementation);
3009
3010    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3011    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3012    function blocksPerEpoch() external view returns (uint64);
3013    function currentBlockNumber() external view returns (uint256);
3014    function currentEpoch() external view returns (uint64);
3015    function disablePermissionedProverMode() external;
3016    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3017    function epochStartBlock() external view returns (uint64);
3018    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3019    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3020    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3021    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3022    function getStateHistoryCount() external view returns (uint256);
3023    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3024    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3025    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3026    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3027    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3028    function isPermissionedProverEnabled() external view returns (bool);
3029    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3030    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3031    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3032    function owner() external view returns (address);
3033    function permissionedProver() external view returns (address);
3034    function proxiableUUID() external view returns (bytes32);
3035    function renounceOwnership() external;
3036    function setPermissionedProver(address prover) external;
3037    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3038    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3039    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3040    function stateHistoryFirstIndex() external view returns (uint64);
3041    function stateHistoryRetentionPeriod() external view returns (uint32);
3042    function transferOwnership(address newOwner) external;
3043    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3044    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3045    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3046}
3047```
3048
3049...which was generated by the following JSON ABI:
3050```json
3051[
3052  {
3053    "type": "function",
3054    "name": "UPGRADE_INTERFACE_VERSION",
3055    "inputs": [],
3056    "outputs": [
3057      {
3058        "name": "",
3059        "type": "string",
3060        "internalType": "string"
3061      }
3062    ],
3063    "stateMutability": "view"
3064  },
3065  {
3066    "type": "function",
3067    "name": "_getVk",
3068    "inputs": [],
3069    "outputs": [
3070      {
3071        "name": "vk",
3072        "type": "tuple",
3073        "internalType": "struct IPlonkVerifier.VerifyingKey",
3074        "components": [
3075          {
3076            "name": "domainSize",
3077            "type": "uint256",
3078            "internalType": "uint256"
3079          },
3080          {
3081            "name": "numInputs",
3082            "type": "uint256",
3083            "internalType": "uint256"
3084          },
3085          {
3086            "name": "sigma0",
3087            "type": "tuple",
3088            "internalType": "struct BN254.G1Point",
3089            "components": [
3090              {
3091                "name": "x",
3092                "type": "uint256",
3093                "internalType": "BN254.BaseField"
3094              },
3095              {
3096                "name": "y",
3097                "type": "uint256",
3098                "internalType": "BN254.BaseField"
3099              }
3100            ]
3101          },
3102          {
3103            "name": "sigma1",
3104            "type": "tuple",
3105            "internalType": "struct BN254.G1Point",
3106            "components": [
3107              {
3108                "name": "x",
3109                "type": "uint256",
3110                "internalType": "BN254.BaseField"
3111              },
3112              {
3113                "name": "y",
3114                "type": "uint256",
3115                "internalType": "BN254.BaseField"
3116              }
3117            ]
3118          },
3119          {
3120            "name": "sigma2",
3121            "type": "tuple",
3122            "internalType": "struct BN254.G1Point",
3123            "components": [
3124              {
3125                "name": "x",
3126                "type": "uint256",
3127                "internalType": "BN254.BaseField"
3128              },
3129              {
3130                "name": "y",
3131                "type": "uint256",
3132                "internalType": "BN254.BaseField"
3133              }
3134            ]
3135          },
3136          {
3137            "name": "sigma3",
3138            "type": "tuple",
3139            "internalType": "struct BN254.G1Point",
3140            "components": [
3141              {
3142                "name": "x",
3143                "type": "uint256",
3144                "internalType": "BN254.BaseField"
3145              },
3146              {
3147                "name": "y",
3148                "type": "uint256",
3149                "internalType": "BN254.BaseField"
3150              }
3151            ]
3152          },
3153          {
3154            "name": "sigma4",
3155            "type": "tuple",
3156            "internalType": "struct BN254.G1Point",
3157            "components": [
3158              {
3159                "name": "x",
3160                "type": "uint256",
3161                "internalType": "BN254.BaseField"
3162              },
3163              {
3164                "name": "y",
3165                "type": "uint256",
3166                "internalType": "BN254.BaseField"
3167              }
3168            ]
3169          },
3170          {
3171            "name": "q1",
3172            "type": "tuple",
3173            "internalType": "struct BN254.G1Point",
3174            "components": [
3175              {
3176                "name": "x",
3177                "type": "uint256",
3178                "internalType": "BN254.BaseField"
3179              },
3180              {
3181                "name": "y",
3182                "type": "uint256",
3183                "internalType": "BN254.BaseField"
3184              }
3185            ]
3186          },
3187          {
3188            "name": "q2",
3189            "type": "tuple",
3190            "internalType": "struct BN254.G1Point",
3191            "components": [
3192              {
3193                "name": "x",
3194                "type": "uint256",
3195                "internalType": "BN254.BaseField"
3196              },
3197              {
3198                "name": "y",
3199                "type": "uint256",
3200                "internalType": "BN254.BaseField"
3201              }
3202            ]
3203          },
3204          {
3205            "name": "q3",
3206            "type": "tuple",
3207            "internalType": "struct BN254.G1Point",
3208            "components": [
3209              {
3210                "name": "x",
3211                "type": "uint256",
3212                "internalType": "BN254.BaseField"
3213              },
3214              {
3215                "name": "y",
3216                "type": "uint256",
3217                "internalType": "BN254.BaseField"
3218              }
3219            ]
3220          },
3221          {
3222            "name": "q4",
3223            "type": "tuple",
3224            "internalType": "struct BN254.G1Point",
3225            "components": [
3226              {
3227                "name": "x",
3228                "type": "uint256",
3229                "internalType": "BN254.BaseField"
3230              },
3231              {
3232                "name": "y",
3233                "type": "uint256",
3234                "internalType": "BN254.BaseField"
3235              }
3236            ]
3237          },
3238          {
3239            "name": "qM12",
3240            "type": "tuple",
3241            "internalType": "struct BN254.G1Point",
3242            "components": [
3243              {
3244                "name": "x",
3245                "type": "uint256",
3246                "internalType": "BN254.BaseField"
3247              },
3248              {
3249                "name": "y",
3250                "type": "uint256",
3251                "internalType": "BN254.BaseField"
3252              }
3253            ]
3254          },
3255          {
3256            "name": "qM34",
3257            "type": "tuple",
3258            "internalType": "struct BN254.G1Point",
3259            "components": [
3260              {
3261                "name": "x",
3262                "type": "uint256",
3263                "internalType": "BN254.BaseField"
3264              },
3265              {
3266                "name": "y",
3267                "type": "uint256",
3268                "internalType": "BN254.BaseField"
3269              }
3270            ]
3271          },
3272          {
3273            "name": "qO",
3274            "type": "tuple",
3275            "internalType": "struct BN254.G1Point",
3276            "components": [
3277              {
3278                "name": "x",
3279                "type": "uint256",
3280                "internalType": "BN254.BaseField"
3281              },
3282              {
3283                "name": "y",
3284                "type": "uint256",
3285                "internalType": "BN254.BaseField"
3286              }
3287            ]
3288          },
3289          {
3290            "name": "qC",
3291            "type": "tuple",
3292            "internalType": "struct BN254.G1Point",
3293            "components": [
3294              {
3295                "name": "x",
3296                "type": "uint256",
3297                "internalType": "BN254.BaseField"
3298              },
3299              {
3300                "name": "y",
3301                "type": "uint256",
3302                "internalType": "BN254.BaseField"
3303              }
3304            ]
3305          },
3306          {
3307            "name": "qH1",
3308            "type": "tuple",
3309            "internalType": "struct BN254.G1Point",
3310            "components": [
3311              {
3312                "name": "x",
3313                "type": "uint256",
3314                "internalType": "BN254.BaseField"
3315              },
3316              {
3317                "name": "y",
3318                "type": "uint256",
3319                "internalType": "BN254.BaseField"
3320              }
3321            ]
3322          },
3323          {
3324            "name": "qH2",
3325            "type": "tuple",
3326            "internalType": "struct BN254.G1Point",
3327            "components": [
3328              {
3329                "name": "x",
3330                "type": "uint256",
3331                "internalType": "BN254.BaseField"
3332              },
3333              {
3334                "name": "y",
3335                "type": "uint256",
3336                "internalType": "BN254.BaseField"
3337              }
3338            ]
3339          },
3340          {
3341            "name": "qH3",
3342            "type": "tuple",
3343            "internalType": "struct BN254.G1Point",
3344            "components": [
3345              {
3346                "name": "x",
3347                "type": "uint256",
3348                "internalType": "BN254.BaseField"
3349              },
3350              {
3351                "name": "y",
3352                "type": "uint256",
3353                "internalType": "BN254.BaseField"
3354              }
3355            ]
3356          },
3357          {
3358            "name": "qH4",
3359            "type": "tuple",
3360            "internalType": "struct BN254.G1Point",
3361            "components": [
3362              {
3363                "name": "x",
3364                "type": "uint256",
3365                "internalType": "BN254.BaseField"
3366              },
3367              {
3368                "name": "y",
3369                "type": "uint256",
3370                "internalType": "BN254.BaseField"
3371              }
3372            ]
3373          },
3374          {
3375            "name": "qEcc",
3376            "type": "tuple",
3377            "internalType": "struct BN254.G1Point",
3378            "components": [
3379              {
3380                "name": "x",
3381                "type": "uint256",
3382                "internalType": "BN254.BaseField"
3383              },
3384              {
3385                "name": "y",
3386                "type": "uint256",
3387                "internalType": "BN254.BaseField"
3388              }
3389            ]
3390          },
3391          {
3392            "name": "g2LSB",
3393            "type": "bytes32",
3394            "internalType": "bytes32"
3395          },
3396          {
3397            "name": "g2MSB",
3398            "type": "bytes32",
3399            "internalType": "bytes32"
3400          }
3401        ]
3402      }
3403    ],
3404    "stateMutability": "pure"
3405  },
3406  {
3407    "type": "function",
3408    "name": "blocksPerEpoch",
3409    "inputs": [],
3410    "outputs": [
3411      {
3412        "name": "",
3413        "type": "uint64",
3414        "internalType": "uint64"
3415      }
3416    ],
3417    "stateMutability": "view"
3418  },
3419  {
3420    "type": "function",
3421    "name": "currentBlockNumber",
3422    "inputs": [],
3423    "outputs": [
3424      {
3425        "name": "",
3426        "type": "uint256",
3427        "internalType": "uint256"
3428      }
3429    ],
3430    "stateMutability": "view"
3431  },
3432  {
3433    "type": "function",
3434    "name": "currentEpoch",
3435    "inputs": [],
3436    "outputs": [
3437      {
3438        "name": "",
3439        "type": "uint64",
3440        "internalType": "uint64"
3441      }
3442    ],
3443    "stateMutability": "view"
3444  },
3445  {
3446    "type": "function",
3447    "name": "disablePermissionedProverMode",
3448    "inputs": [],
3449    "outputs": [],
3450    "stateMutability": "nonpayable"
3451  },
3452  {
3453    "type": "function",
3454    "name": "epochFromBlockNumber",
3455    "inputs": [
3456      {
3457        "name": "_blockNum",
3458        "type": "uint64",
3459        "internalType": "uint64"
3460      },
3461      {
3462        "name": "_blocksPerEpoch",
3463        "type": "uint64",
3464        "internalType": "uint64"
3465      }
3466    ],
3467    "outputs": [
3468      {
3469        "name": "",
3470        "type": "uint64",
3471        "internalType": "uint64"
3472      }
3473    ],
3474    "stateMutability": "pure"
3475  },
3476  {
3477    "type": "function",
3478    "name": "epochStartBlock",
3479    "inputs": [],
3480    "outputs": [
3481      {
3482        "name": "",
3483        "type": "uint64",
3484        "internalType": "uint64"
3485      }
3486    ],
3487    "stateMutability": "view"
3488  },
3489  {
3490    "type": "function",
3491    "name": "finalizedState",
3492    "inputs": [],
3493    "outputs": [
3494      {
3495        "name": "viewNum",
3496        "type": "uint64",
3497        "internalType": "uint64"
3498      },
3499      {
3500        "name": "blockHeight",
3501        "type": "uint64",
3502        "internalType": "uint64"
3503      },
3504      {
3505        "name": "blockCommRoot",
3506        "type": "uint256",
3507        "internalType": "BN254.ScalarField"
3508      }
3509    ],
3510    "stateMutability": "view"
3511  },
3512  {
3513    "type": "function",
3514    "name": "genesisStakeTableState",
3515    "inputs": [],
3516    "outputs": [
3517      {
3518        "name": "threshold",
3519        "type": "uint256",
3520        "internalType": "uint256"
3521      },
3522      {
3523        "name": "blsKeyComm",
3524        "type": "uint256",
3525        "internalType": "BN254.ScalarField"
3526      },
3527      {
3528        "name": "schnorrKeyComm",
3529        "type": "uint256",
3530        "internalType": "BN254.ScalarField"
3531      },
3532      {
3533        "name": "amountComm",
3534        "type": "uint256",
3535        "internalType": "BN254.ScalarField"
3536      }
3537    ],
3538    "stateMutability": "view"
3539  },
3540  {
3541    "type": "function",
3542    "name": "genesisState",
3543    "inputs": [],
3544    "outputs": [
3545      {
3546        "name": "viewNum",
3547        "type": "uint64",
3548        "internalType": "uint64"
3549      },
3550      {
3551        "name": "blockHeight",
3552        "type": "uint64",
3553        "internalType": "uint64"
3554      },
3555      {
3556        "name": "blockCommRoot",
3557        "type": "uint256",
3558        "internalType": "BN254.ScalarField"
3559      }
3560    ],
3561    "stateMutability": "view"
3562  },
3563  {
3564    "type": "function",
3565    "name": "getHotShotCommitment",
3566    "inputs": [
3567      {
3568        "name": "hotShotBlockHeight",
3569        "type": "uint256",
3570        "internalType": "uint256"
3571      }
3572    ],
3573    "outputs": [
3574      {
3575        "name": "hotShotBlockCommRoot",
3576        "type": "uint256",
3577        "internalType": "BN254.ScalarField"
3578      },
3579      {
3580        "name": "hotshotBlockHeight",
3581        "type": "uint64",
3582        "internalType": "uint64"
3583      }
3584    ],
3585    "stateMutability": "view"
3586  },
3587  {
3588    "type": "function",
3589    "name": "getStateHistoryCount",
3590    "inputs": [],
3591    "outputs": [
3592      {
3593        "name": "",
3594        "type": "uint256",
3595        "internalType": "uint256"
3596      }
3597    ],
3598    "stateMutability": "view"
3599  },
3600  {
3601    "type": "function",
3602    "name": "getVersion",
3603    "inputs": [],
3604    "outputs": [
3605      {
3606        "name": "majorVersion",
3607        "type": "uint8",
3608        "internalType": "uint8"
3609      },
3610      {
3611        "name": "minorVersion",
3612        "type": "uint8",
3613        "internalType": "uint8"
3614      },
3615      {
3616        "name": "patchVersion",
3617        "type": "uint8",
3618        "internalType": "uint8"
3619      }
3620    ],
3621    "stateMutability": "pure"
3622  },
3623  {
3624    "type": "function",
3625    "name": "initialize",
3626    "inputs": [
3627      {
3628        "name": "_genesis",
3629        "type": "tuple",
3630        "internalType": "struct LightClient.LightClientState",
3631        "components": [
3632          {
3633            "name": "viewNum",
3634            "type": "uint64",
3635            "internalType": "uint64"
3636          },
3637          {
3638            "name": "blockHeight",
3639            "type": "uint64",
3640            "internalType": "uint64"
3641          },
3642          {
3643            "name": "blockCommRoot",
3644            "type": "uint256",
3645            "internalType": "BN254.ScalarField"
3646          }
3647        ]
3648      },
3649      {
3650        "name": "_genesisStakeTableState",
3651        "type": "tuple",
3652        "internalType": "struct LightClient.StakeTableState",
3653        "components": [
3654          {
3655            "name": "threshold",
3656            "type": "uint256",
3657            "internalType": "uint256"
3658          },
3659          {
3660            "name": "blsKeyComm",
3661            "type": "uint256",
3662            "internalType": "BN254.ScalarField"
3663          },
3664          {
3665            "name": "schnorrKeyComm",
3666            "type": "uint256",
3667            "internalType": "BN254.ScalarField"
3668          },
3669          {
3670            "name": "amountComm",
3671            "type": "uint256",
3672            "internalType": "BN254.ScalarField"
3673          }
3674        ]
3675      },
3676      {
3677        "name": "_stateHistoryRetentionPeriod",
3678        "type": "uint32",
3679        "internalType": "uint32"
3680      },
3681      {
3682        "name": "owner",
3683        "type": "address",
3684        "internalType": "address"
3685      }
3686    ],
3687    "outputs": [],
3688    "stateMutability": "nonpayable"
3689  },
3690  {
3691    "type": "function",
3692    "name": "initializeV2",
3693    "inputs": [
3694      {
3695        "name": "_blocksPerEpoch",
3696        "type": "uint64",
3697        "internalType": "uint64"
3698      },
3699      {
3700        "name": "_epochStartBlock",
3701        "type": "uint64",
3702        "internalType": "uint64"
3703      }
3704    ],
3705    "outputs": [],
3706    "stateMutability": "nonpayable"
3707  },
3708  {
3709    "type": "function",
3710    "name": "isEpochRoot",
3711    "inputs": [
3712      {
3713        "name": "blockHeight",
3714        "type": "uint64",
3715        "internalType": "uint64"
3716      }
3717    ],
3718    "outputs": [
3719      {
3720        "name": "",
3721        "type": "bool",
3722        "internalType": "bool"
3723      }
3724    ],
3725    "stateMutability": "view"
3726  },
3727  {
3728    "type": "function",
3729    "name": "isGtEpochRoot",
3730    "inputs": [
3731      {
3732        "name": "blockHeight",
3733        "type": "uint64",
3734        "internalType": "uint64"
3735      }
3736    ],
3737    "outputs": [
3738      {
3739        "name": "",
3740        "type": "bool",
3741        "internalType": "bool"
3742      }
3743    ],
3744    "stateMutability": "view"
3745  },
3746  {
3747    "type": "function",
3748    "name": "isPermissionedProverEnabled",
3749    "inputs": [],
3750    "outputs": [
3751      {
3752        "name": "",
3753        "type": "bool",
3754        "internalType": "bool"
3755      }
3756    ],
3757    "stateMutability": "view"
3758  },
3759  {
3760    "type": "function",
3761    "name": "lagOverEscapeHatchThreshold",
3762    "inputs": [
3763      {
3764        "name": "blockNumber",
3765        "type": "uint256",
3766        "internalType": "uint256"
3767      },
3768      {
3769        "name": "blockThreshold",
3770        "type": "uint256",
3771        "internalType": "uint256"
3772      }
3773    ],
3774    "outputs": [
3775      {
3776        "name": "",
3777        "type": "bool",
3778        "internalType": "bool"
3779      }
3780    ],
3781    "stateMutability": "view"
3782  },
3783  {
3784    "type": "function",
3785    "name": "newFinalizedState",
3786    "inputs": [
3787      {
3788        "name": "",
3789        "type": "tuple",
3790        "internalType": "struct LightClient.LightClientState",
3791        "components": [
3792          {
3793            "name": "viewNum",
3794            "type": "uint64",
3795            "internalType": "uint64"
3796          },
3797          {
3798            "name": "blockHeight",
3799            "type": "uint64",
3800            "internalType": "uint64"
3801          },
3802          {
3803            "name": "blockCommRoot",
3804            "type": "uint256",
3805            "internalType": "BN254.ScalarField"
3806          }
3807        ]
3808      },
3809      {
3810        "name": "",
3811        "type": "tuple",
3812        "internalType": "struct IPlonkVerifier.PlonkProof",
3813        "components": [
3814          {
3815            "name": "wire0",
3816            "type": "tuple",
3817            "internalType": "struct BN254.G1Point",
3818            "components": [
3819              {
3820                "name": "x",
3821                "type": "uint256",
3822                "internalType": "BN254.BaseField"
3823              },
3824              {
3825                "name": "y",
3826                "type": "uint256",
3827                "internalType": "BN254.BaseField"
3828              }
3829            ]
3830          },
3831          {
3832            "name": "wire1",
3833            "type": "tuple",
3834            "internalType": "struct BN254.G1Point",
3835            "components": [
3836              {
3837                "name": "x",
3838                "type": "uint256",
3839                "internalType": "BN254.BaseField"
3840              },
3841              {
3842                "name": "y",
3843                "type": "uint256",
3844                "internalType": "BN254.BaseField"
3845              }
3846            ]
3847          },
3848          {
3849            "name": "wire2",
3850            "type": "tuple",
3851            "internalType": "struct BN254.G1Point",
3852            "components": [
3853              {
3854                "name": "x",
3855                "type": "uint256",
3856                "internalType": "BN254.BaseField"
3857              },
3858              {
3859                "name": "y",
3860                "type": "uint256",
3861                "internalType": "BN254.BaseField"
3862              }
3863            ]
3864          },
3865          {
3866            "name": "wire3",
3867            "type": "tuple",
3868            "internalType": "struct BN254.G1Point",
3869            "components": [
3870              {
3871                "name": "x",
3872                "type": "uint256",
3873                "internalType": "BN254.BaseField"
3874              },
3875              {
3876                "name": "y",
3877                "type": "uint256",
3878                "internalType": "BN254.BaseField"
3879              }
3880            ]
3881          },
3882          {
3883            "name": "wire4",
3884            "type": "tuple",
3885            "internalType": "struct BN254.G1Point",
3886            "components": [
3887              {
3888                "name": "x",
3889                "type": "uint256",
3890                "internalType": "BN254.BaseField"
3891              },
3892              {
3893                "name": "y",
3894                "type": "uint256",
3895                "internalType": "BN254.BaseField"
3896              }
3897            ]
3898          },
3899          {
3900            "name": "prodPerm",
3901            "type": "tuple",
3902            "internalType": "struct BN254.G1Point",
3903            "components": [
3904              {
3905                "name": "x",
3906                "type": "uint256",
3907                "internalType": "BN254.BaseField"
3908              },
3909              {
3910                "name": "y",
3911                "type": "uint256",
3912                "internalType": "BN254.BaseField"
3913              }
3914            ]
3915          },
3916          {
3917            "name": "split0",
3918            "type": "tuple",
3919            "internalType": "struct BN254.G1Point",
3920            "components": [
3921              {
3922                "name": "x",
3923                "type": "uint256",
3924                "internalType": "BN254.BaseField"
3925              },
3926              {
3927                "name": "y",
3928                "type": "uint256",
3929                "internalType": "BN254.BaseField"
3930              }
3931            ]
3932          },
3933          {
3934            "name": "split1",
3935            "type": "tuple",
3936            "internalType": "struct BN254.G1Point",
3937            "components": [
3938              {
3939                "name": "x",
3940                "type": "uint256",
3941                "internalType": "BN254.BaseField"
3942              },
3943              {
3944                "name": "y",
3945                "type": "uint256",
3946                "internalType": "BN254.BaseField"
3947              }
3948            ]
3949          },
3950          {
3951            "name": "split2",
3952            "type": "tuple",
3953            "internalType": "struct BN254.G1Point",
3954            "components": [
3955              {
3956                "name": "x",
3957                "type": "uint256",
3958                "internalType": "BN254.BaseField"
3959              },
3960              {
3961                "name": "y",
3962                "type": "uint256",
3963                "internalType": "BN254.BaseField"
3964              }
3965            ]
3966          },
3967          {
3968            "name": "split3",
3969            "type": "tuple",
3970            "internalType": "struct BN254.G1Point",
3971            "components": [
3972              {
3973                "name": "x",
3974                "type": "uint256",
3975                "internalType": "BN254.BaseField"
3976              },
3977              {
3978                "name": "y",
3979                "type": "uint256",
3980                "internalType": "BN254.BaseField"
3981              }
3982            ]
3983          },
3984          {
3985            "name": "split4",
3986            "type": "tuple",
3987            "internalType": "struct BN254.G1Point",
3988            "components": [
3989              {
3990                "name": "x",
3991                "type": "uint256",
3992                "internalType": "BN254.BaseField"
3993              },
3994              {
3995                "name": "y",
3996                "type": "uint256",
3997                "internalType": "BN254.BaseField"
3998              }
3999            ]
4000          },
4001          {
4002            "name": "zeta",
4003            "type": "tuple",
4004            "internalType": "struct BN254.G1Point",
4005            "components": [
4006              {
4007                "name": "x",
4008                "type": "uint256",
4009                "internalType": "BN254.BaseField"
4010              },
4011              {
4012                "name": "y",
4013                "type": "uint256",
4014                "internalType": "BN254.BaseField"
4015              }
4016            ]
4017          },
4018          {
4019            "name": "zetaOmega",
4020            "type": "tuple",
4021            "internalType": "struct BN254.G1Point",
4022            "components": [
4023              {
4024                "name": "x",
4025                "type": "uint256",
4026                "internalType": "BN254.BaseField"
4027              },
4028              {
4029                "name": "y",
4030                "type": "uint256",
4031                "internalType": "BN254.BaseField"
4032              }
4033            ]
4034          },
4035          {
4036            "name": "wireEval0",
4037            "type": "uint256",
4038            "internalType": "BN254.ScalarField"
4039          },
4040          {
4041            "name": "wireEval1",
4042            "type": "uint256",
4043            "internalType": "BN254.ScalarField"
4044          },
4045          {
4046            "name": "wireEval2",
4047            "type": "uint256",
4048            "internalType": "BN254.ScalarField"
4049          },
4050          {
4051            "name": "wireEval3",
4052            "type": "uint256",
4053            "internalType": "BN254.ScalarField"
4054          },
4055          {
4056            "name": "wireEval4",
4057            "type": "uint256",
4058            "internalType": "BN254.ScalarField"
4059          },
4060          {
4061            "name": "sigmaEval0",
4062            "type": "uint256",
4063            "internalType": "BN254.ScalarField"
4064          },
4065          {
4066            "name": "sigmaEval1",
4067            "type": "uint256",
4068            "internalType": "BN254.ScalarField"
4069          },
4070          {
4071            "name": "sigmaEval2",
4072            "type": "uint256",
4073            "internalType": "BN254.ScalarField"
4074          },
4075          {
4076            "name": "sigmaEval3",
4077            "type": "uint256",
4078            "internalType": "BN254.ScalarField"
4079          },
4080          {
4081            "name": "prodPermZetaOmegaEval",
4082            "type": "uint256",
4083            "internalType": "BN254.ScalarField"
4084          }
4085        ]
4086      }
4087    ],
4088    "outputs": [],
4089    "stateMutability": "pure"
4090  },
4091  {
4092    "type": "function",
4093    "name": "newFinalizedState",
4094    "inputs": [
4095      {
4096        "name": "newState",
4097        "type": "tuple",
4098        "internalType": "struct LightClient.LightClientState",
4099        "components": [
4100          {
4101            "name": "viewNum",
4102            "type": "uint64",
4103            "internalType": "uint64"
4104          },
4105          {
4106            "name": "blockHeight",
4107            "type": "uint64",
4108            "internalType": "uint64"
4109          },
4110          {
4111            "name": "blockCommRoot",
4112            "type": "uint256",
4113            "internalType": "BN254.ScalarField"
4114          }
4115        ]
4116      },
4117      {
4118        "name": "nextStakeTable",
4119        "type": "tuple",
4120        "internalType": "struct LightClient.StakeTableState",
4121        "components": [
4122          {
4123            "name": "threshold",
4124            "type": "uint256",
4125            "internalType": "uint256"
4126          },
4127          {
4128            "name": "blsKeyComm",
4129            "type": "uint256",
4130            "internalType": "BN254.ScalarField"
4131          },
4132          {
4133            "name": "schnorrKeyComm",
4134            "type": "uint256",
4135            "internalType": "BN254.ScalarField"
4136          },
4137          {
4138            "name": "amountComm",
4139            "type": "uint256",
4140            "internalType": "BN254.ScalarField"
4141          }
4142        ]
4143      },
4144      {
4145        "name": "proof",
4146        "type": "tuple",
4147        "internalType": "struct IPlonkVerifier.PlonkProof",
4148        "components": [
4149          {
4150            "name": "wire0",
4151            "type": "tuple",
4152            "internalType": "struct BN254.G1Point",
4153            "components": [
4154              {
4155                "name": "x",
4156                "type": "uint256",
4157                "internalType": "BN254.BaseField"
4158              },
4159              {
4160                "name": "y",
4161                "type": "uint256",
4162                "internalType": "BN254.BaseField"
4163              }
4164            ]
4165          },
4166          {
4167            "name": "wire1",
4168            "type": "tuple",
4169            "internalType": "struct BN254.G1Point",
4170            "components": [
4171              {
4172                "name": "x",
4173                "type": "uint256",
4174                "internalType": "BN254.BaseField"
4175              },
4176              {
4177                "name": "y",
4178                "type": "uint256",
4179                "internalType": "BN254.BaseField"
4180              }
4181            ]
4182          },
4183          {
4184            "name": "wire2",
4185            "type": "tuple",
4186            "internalType": "struct BN254.G1Point",
4187            "components": [
4188              {
4189                "name": "x",
4190                "type": "uint256",
4191                "internalType": "BN254.BaseField"
4192              },
4193              {
4194                "name": "y",
4195                "type": "uint256",
4196                "internalType": "BN254.BaseField"
4197              }
4198            ]
4199          },
4200          {
4201            "name": "wire3",
4202            "type": "tuple",
4203            "internalType": "struct BN254.G1Point",
4204            "components": [
4205              {
4206                "name": "x",
4207                "type": "uint256",
4208                "internalType": "BN254.BaseField"
4209              },
4210              {
4211                "name": "y",
4212                "type": "uint256",
4213                "internalType": "BN254.BaseField"
4214              }
4215            ]
4216          },
4217          {
4218            "name": "wire4",
4219            "type": "tuple",
4220            "internalType": "struct BN254.G1Point",
4221            "components": [
4222              {
4223                "name": "x",
4224                "type": "uint256",
4225                "internalType": "BN254.BaseField"
4226              },
4227              {
4228                "name": "y",
4229                "type": "uint256",
4230                "internalType": "BN254.BaseField"
4231              }
4232            ]
4233          },
4234          {
4235            "name": "prodPerm",
4236            "type": "tuple",
4237            "internalType": "struct BN254.G1Point",
4238            "components": [
4239              {
4240                "name": "x",
4241                "type": "uint256",
4242                "internalType": "BN254.BaseField"
4243              },
4244              {
4245                "name": "y",
4246                "type": "uint256",
4247                "internalType": "BN254.BaseField"
4248              }
4249            ]
4250          },
4251          {
4252            "name": "split0",
4253            "type": "tuple",
4254            "internalType": "struct BN254.G1Point",
4255            "components": [
4256              {
4257                "name": "x",
4258                "type": "uint256",
4259                "internalType": "BN254.BaseField"
4260              },
4261              {
4262                "name": "y",
4263                "type": "uint256",
4264                "internalType": "BN254.BaseField"
4265              }
4266            ]
4267          },
4268          {
4269            "name": "split1",
4270            "type": "tuple",
4271            "internalType": "struct BN254.G1Point",
4272            "components": [
4273              {
4274                "name": "x",
4275                "type": "uint256",
4276                "internalType": "BN254.BaseField"
4277              },
4278              {
4279                "name": "y",
4280                "type": "uint256",
4281                "internalType": "BN254.BaseField"
4282              }
4283            ]
4284          },
4285          {
4286            "name": "split2",
4287            "type": "tuple",
4288            "internalType": "struct BN254.G1Point",
4289            "components": [
4290              {
4291                "name": "x",
4292                "type": "uint256",
4293                "internalType": "BN254.BaseField"
4294              },
4295              {
4296                "name": "y",
4297                "type": "uint256",
4298                "internalType": "BN254.BaseField"
4299              }
4300            ]
4301          },
4302          {
4303            "name": "split3",
4304            "type": "tuple",
4305            "internalType": "struct BN254.G1Point",
4306            "components": [
4307              {
4308                "name": "x",
4309                "type": "uint256",
4310                "internalType": "BN254.BaseField"
4311              },
4312              {
4313                "name": "y",
4314                "type": "uint256",
4315                "internalType": "BN254.BaseField"
4316              }
4317            ]
4318          },
4319          {
4320            "name": "split4",
4321            "type": "tuple",
4322            "internalType": "struct BN254.G1Point",
4323            "components": [
4324              {
4325                "name": "x",
4326                "type": "uint256",
4327                "internalType": "BN254.BaseField"
4328              },
4329              {
4330                "name": "y",
4331                "type": "uint256",
4332                "internalType": "BN254.BaseField"
4333              }
4334            ]
4335          },
4336          {
4337            "name": "zeta",
4338            "type": "tuple",
4339            "internalType": "struct BN254.G1Point",
4340            "components": [
4341              {
4342                "name": "x",
4343                "type": "uint256",
4344                "internalType": "BN254.BaseField"
4345              },
4346              {
4347                "name": "y",
4348                "type": "uint256",
4349                "internalType": "BN254.BaseField"
4350              }
4351            ]
4352          },
4353          {
4354            "name": "zetaOmega",
4355            "type": "tuple",
4356            "internalType": "struct BN254.G1Point",
4357            "components": [
4358              {
4359                "name": "x",
4360                "type": "uint256",
4361                "internalType": "BN254.BaseField"
4362              },
4363              {
4364                "name": "y",
4365                "type": "uint256",
4366                "internalType": "BN254.BaseField"
4367              }
4368            ]
4369          },
4370          {
4371            "name": "wireEval0",
4372            "type": "uint256",
4373            "internalType": "BN254.ScalarField"
4374          },
4375          {
4376            "name": "wireEval1",
4377            "type": "uint256",
4378            "internalType": "BN254.ScalarField"
4379          },
4380          {
4381            "name": "wireEval2",
4382            "type": "uint256",
4383            "internalType": "BN254.ScalarField"
4384          },
4385          {
4386            "name": "wireEval3",
4387            "type": "uint256",
4388            "internalType": "BN254.ScalarField"
4389          },
4390          {
4391            "name": "wireEval4",
4392            "type": "uint256",
4393            "internalType": "BN254.ScalarField"
4394          },
4395          {
4396            "name": "sigmaEval0",
4397            "type": "uint256",
4398            "internalType": "BN254.ScalarField"
4399          },
4400          {
4401            "name": "sigmaEval1",
4402            "type": "uint256",
4403            "internalType": "BN254.ScalarField"
4404          },
4405          {
4406            "name": "sigmaEval2",
4407            "type": "uint256",
4408            "internalType": "BN254.ScalarField"
4409          },
4410          {
4411            "name": "sigmaEval3",
4412            "type": "uint256",
4413            "internalType": "BN254.ScalarField"
4414          },
4415          {
4416            "name": "prodPermZetaOmegaEval",
4417            "type": "uint256",
4418            "internalType": "BN254.ScalarField"
4419          }
4420        ]
4421      }
4422    ],
4423    "outputs": [],
4424    "stateMutability": "nonpayable"
4425  },
4426  {
4427    "type": "function",
4428    "name": "owner",
4429    "inputs": [],
4430    "outputs": [
4431      {
4432        "name": "",
4433        "type": "address",
4434        "internalType": "address"
4435      }
4436    ],
4437    "stateMutability": "view"
4438  },
4439  {
4440    "type": "function",
4441    "name": "permissionedProver",
4442    "inputs": [],
4443    "outputs": [
4444      {
4445        "name": "",
4446        "type": "address",
4447        "internalType": "address"
4448      }
4449    ],
4450    "stateMutability": "view"
4451  },
4452  {
4453    "type": "function",
4454    "name": "proxiableUUID",
4455    "inputs": [],
4456    "outputs": [
4457      {
4458        "name": "",
4459        "type": "bytes32",
4460        "internalType": "bytes32"
4461      }
4462    ],
4463    "stateMutability": "view"
4464  },
4465  {
4466    "type": "function",
4467    "name": "renounceOwnership",
4468    "inputs": [],
4469    "outputs": [],
4470    "stateMutability": "nonpayable"
4471  },
4472  {
4473    "type": "function",
4474    "name": "setPermissionedProver",
4475    "inputs": [
4476      {
4477        "name": "prover",
4478        "type": "address",
4479        "internalType": "address"
4480      }
4481    ],
4482    "outputs": [],
4483    "stateMutability": "nonpayable"
4484  },
4485  {
4486    "type": "function",
4487    "name": "setStateHistoryRetentionPeriod",
4488    "inputs": [
4489      {
4490        "name": "historySeconds",
4491        "type": "uint32",
4492        "internalType": "uint32"
4493      }
4494    ],
4495    "outputs": [],
4496    "stateMutability": "nonpayable"
4497  },
4498  {
4499    "type": "function",
4500    "name": "setstateHistoryRetentionPeriod",
4501    "inputs": [
4502      {
4503        "name": "historySeconds",
4504        "type": "uint32",
4505        "internalType": "uint32"
4506      }
4507    ],
4508    "outputs": [],
4509    "stateMutability": "nonpayable"
4510  },
4511  {
4512    "type": "function",
4513    "name": "stateHistoryCommitments",
4514    "inputs": [
4515      {
4516        "name": "",
4517        "type": "uint256",
4518        "internalType": "uint256"
4519      }
4520    ],
4521    "outputs": [
4522      {
4523        "name": "l1BlockHeight",
4524        "type": "uint64",
4525        "internalType": "uint64"
4526      },
4527      {
4528        "name": "l1BlockTimestamp",
4529        "type": "uint64",
4530        "internalType": "uint64"
4531      },
4532      {
4533        "name": "hotShotBlockHeight",
4534        "type": "uint64",
4535        "internalType": "uint64"
4536      },
4537      {
4538        "name": "hotShotBlockCommRoot",
4539        "type": "uint256",
4540        "internalType": "BN254.ScalarField"
4541      }
4542    ],
4543    "stateMutability": "view"
4544  },
4545  {
4546    "type": "function",
4547    "name": "stateHistoryFirstIndex",
4548    "inputs": [],
4549    "outputs": [
4550      {
4551        "name": "",
4552        "type": "uint64",
4553        "internalType": "uint64"
4554      }
4555    ],
4556    "stateMutability": "view"
4557  },
4558  {
4559    "type": "function",
4560    "name": "stateHistoryRetentionPeriod",
4561    "inputs": [],
4562    "outputs": [
4563      {
4564        "name": "",
4565        "type": "uint32",
4566        "internalType": "uint32"
4567      }
4568    ],
4569    "stateMutability": "view"
4570  },
4571  {
4572    "type": "function",
4573    "name": "transferOwnership",
4574    "inputs": [
4575      {
4576        "name": "newOwner",
4577        "type": "address",
4578        "internalType": "address"
4579      }
4580    ],
4581    "outputs": [],
4582    "stateMutability": "nonpayable"
4583  },
4584  {
4585    "type": "function",
4586    "name": "updateEpochStartBlock",
4587    "inputs": [
4588      {
4589        "name": "newEpochStartBlock",
4590        "type": "uint64",
4591        "internalType": "uint64"
4592      }
4593    ],
4594    "outputs": [],
4595    "stateMutability": "nonpayable"
4596  },
4597  {
4598    "type": "function",
4599    "name": "upgradeToAndCall",
4600    "inputs": [
4601      {
4602        "name": "newImplementation",
4603        "type": "address",
4604        "internalType": "address"
4605      },
4606      {
4607        "name": "data",
4608        "type": "bytes",
4609        "internalType": "bytes"
4610      }
4611    ],
4612    "outputs": [],
4613    "stateMutability": "payable"
4614  },
4615  {
4616    "type": "function",
4617    "name": "votingStakeTableState",
4618    "inputs": [],
4619    "outputs": [
4620      {
4621        "name": "threshold",
4622        "type": "uint256",
4623        "internalType": "uint256"
4624      },
4625      {
4626        "name": "blsKeyComm",
4627        "type": "uint256",
4628        "internalType": "BN254.ScalarField"
4629      },
4630      {
4631        "name": "schnorrKeyComm",
4632        "type": "uint256",
4633        "internalType": "BN254.ScalarField"
4634      },
4635      {
4636        "name": "amountComm",
4637        "type": "uint256",
4638        "internalType": "BN254.ScalarField"
4639      }
4640    ],
4641    "stateMutability": "view"
4642  },
4643  {
4644    "type": "event",
4645    "name": "Initialized",
4646    "inputs": [
4647      {
4648        "name": "version",
4649        "type": "uint64",
4650        "indexed": false,
4651        "internalType": "uint64"
4652      }
4653    ],
4654    "anonymous": false
4655  },
4656  {
4657    "type": "event",
4658    "name": "NewEpoch",
4659    "inputs": [
4660      {
4661        "name": "epoch",
4662        "type": "uint64",
4663        "indexed": false,
4664        "internalType": "uint64"
4665      }
4666    ],
4667    "anonymous": false
4668  },
4669  {
4670    "type": "event",
4671    "name": "NewState",
4672    "inputs": [
4673      {
4674        "name": "viewNum",
4675        "type": "uint64",
4676        "indexed": true,
4677        "internalType": "uint64"
4678      },
4679      {
4680        "name": "blockHeight",
4681        "type": "uint64",
4682        "indexed": true,
4683        "internalType": "uint64"
4684      },
4685      {
4686        "name": "blockCommRoot",
4687        "type": "uint256",
4688        "indexed": false,
4689        "internalType": "BN254.ScalarField"
4690      }
4691    ],
4692    "anonymous": false
4693  },
4694  {
4695    "type": "event",
4696    "name": "OwnershipTransferred",
4697    "inputs": [
4698      {
4699        "name": "previousOwner",
4700        "type": "address",
4701        "indexed": true,
4702        "internalType": "address"
4703      },
4704      {
4705        "name": "newOwner",
4706        "type": "address",
4707        "indexed": true,
4708        "internalType": "address"
4709      }
4710    ],
4711    "anonymous": false
4712  },
4713  {
4714    "type": "event",
4715    "name": "PermissionedProverNotRequired",
4716    "inputs": [],
4717    "anonymous": false
4718  },
4719  {
4720    "type": "event",
4721    "name": "PermissionedProverRequired",
4722    "inputs": [
4723      {
4724        "name": "permissionedProver",
4725        "type": "address",
4726        "indexed": false,
4727        "internalType": "address"
4728      }
4729    ],
4730    "anonymous": false
4731  },
4732  {
4733    "type": "event",
4734    "name": "Upgrade",
4735    "inputs": [
4736      {
4737        "name": "implementation",
4738        "type": "address",
4739        "indexed": false,
4740        "internalType": "address"
4741      }
4742    ],
4743    "anonymous": false
4744  },
4745  {
4746    "type": "event",
4747    "name": "Upgraded",
4748    "inputs": [
4749      {
4750        "name": "implementation",
4751        "type": "address",
4752        "indexed": true,
4753        "internalType": "address"
4754      }
4755    ],
4756    "anonymous": false
4757  },
4758  {
4759    "type": "error",
4760    "name": "AddressEmptyCode",
4761    "inputs": [
4762      {
4763        "name": "target",
4764        "type": "address",
4765        "internalType": "address"
4766      }
4767    ]
4768  },
4769  {
4770    "type": "error",
4771    "name": "DeprecatedApi",
4772    "inputs": []
4773  },
4774  {
4775    "type": "error",
4776    "name": "ERC1967InvalidImplementation",
4777    "inputs": [
4778      {
4779        "name": "implementation",
4780        "type": "address",
4781        "internalType": "address"
4782      }
4783    ]
4784  },
4785  {
4786    "type": "error",
4787    "name": "ERC1967NonPayable",
4788    "inputs": []
4789  },
4790  {
4791    "type": "error",
4792    "name": "FailedInnerCall",
4793    "inputs": []
4794  },
4795  {
4796    "type": "error",
4797    "name": "InsufficientSnapshotHistory",
4798    "inputs": []
4799  },
4800  {
4801    "type": "error",
4802    "name": "InvalidAddress",
4803    "inputs": []
4804  },
4805  {
4806    "type": "error",
4807    "name": "InvalidArgs",
4808    "inputs": []
4809  },
4810  {
4811    "type": "error",
4812    "name": "InvalidHotShotBlockForCommitmentCheck",
4813    "inputs": []
4814  },
4815  {
4816    "type": "error",
4817    "name": "InvalidInitialization",
4818    "inputs": []
4819  },
4820  {
4821    "type": "error",
4822    "name": "InvalidMaxStateHistory",
4823    "inputs": []
4824  },
4825  {
4826    "type": "error",
4827    "name": "InvalidProof",
4828    "inputs": []
4829  },
4830  {
4831    "type": "error",
4832    "name": "InvalidScalar",
4833    "inputs": []
4834  },
4835  {
4836    "type": "error",
4837    "name": "MissingEpochRootUpdate",
4838    "inputs": []
4839  },
4840  {
4841    "type": "error",
4842    "name": "NoChangeRequired",
4843    "inputs": []
4844  },
4845  {
4846    "type": "error",
4847    "name": "NotInitializing",
4848    "inputs": []
4849  },
4850  {
4851    "type": "error",
4852    "name": "OutdatedState",
4853    "inputs": []
4854  },
4855  {
4856    "type": "error",
4857    "name": "OwnableInvalidOwner",
4858    "inputs": [
4859      {
4860        "name": "owner",
4861        "type": "address",
4862        "internalType": "address"
4863      }
4864    ]
4865  },
4866  {
4867    "type": "error",
4868    "name": "OwnableUnauthorizedAccount",
4869    "inputs": [
4870      {
4871        "name": "account",
4872        "type": "address",
4873        "internalType": "address"
4874      }
4875    ]
4876  },
4877  {
4878    "type": "error",
4879    "name": "OwnershipCannotBeRenounced",
4880    "inputs": []
4881  },
4882  {
4883    "type": "error",
4884    "name": "ProverNotPermissioned",
4885    "inputs": []
4886  },
4887  {
4888    "type": "error",
4889    "name": "UUPSUnauthorizedCallContext",
4890    "inputs": []
4891  },
4892  {
4893    "type": "error",
4894    "name": "UUPSUnsupportedProxiableUUID",
4895    "inputs": [
4896      {
4897        "name": "slot",
4898        "type": "bytes32",
4899        "internalType": "bytes32"
4900      }
4901    ]
4902  },
4903  {
4904    "type": "error",
4905    "name": "WrongStakeTableUsed",
4906    "inputs": []
4907  }
4908]
4909```*/
4910#[allow(
4911    non_camel_case_types,
4912    non_snake_case,
4913    clippy::pub_underscore_fields,
4914    clippy::style,
4915    clippy::empty_structs_with_brackets
4916)]
4917pub mod LightClientV2 {
4918    use super::*;
4919    use alloy::sol_types as alloy_sol_types;
4920    /// The creation / init bytecode of the contract.
4921    ///
4922    /// ```text
4923    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134586100f95f395f8181611b3f01528181611b680152611ce501526134585ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4924    /// ```
4925    #[rustfmt::skip]
4926    #[allow(clippy::all)]
4927    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4928        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[`\x80Qa4Xa\0\xF9_9_\x81\x81a\x1B?\x01R\x81\x81a\x1Bh\x01Ra\x1C\xE5\x01Ra4X_\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'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[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'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[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)|V[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)|V[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,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[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-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[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'NV[a\x0EfV[`@\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-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[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.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[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.\x97V[a\x13\x17V[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'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\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$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\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\x91V[`\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.\xCBV[a\t\x87\x91\x90a.\xFEV[`\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.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\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\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@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\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@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\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\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\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\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\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\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\x0E2\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\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@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\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\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\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@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\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@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\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\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\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@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\x12bW`@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\xAB\x83\x85a\x0F\x91V[`\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(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\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\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\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\x9CV[a\x15\x11a$\x9BV[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\xBAWP\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\xAE_Q` a4,_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\xE0a\x14\xAEV[`@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\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[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[\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\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\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\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\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\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\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\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\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\x1F\xBD\x83a3\xEBV[\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 \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@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[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\"\x82\x82a#\x1FV[`@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\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\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\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_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#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\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$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@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'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\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)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[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,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\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-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\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.\xA8W__\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.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\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.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\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\xDE`@\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\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\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",
4929    );
4930    /// The runtime bytecode of the contract, as deployed on the network.
4931    ///
4932    /// ```text
4933    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4934    /// ```
4935    #[rustfmt::skip]
4936    #[allow(clippy::all)]
4937    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4938        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'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[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'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[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)|V[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)|V[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,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[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-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[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'NV[a\x0EfV[`@\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-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[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.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[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.\x97V[a\x13\x17V[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'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\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$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\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\x91V[`\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.\xCBV[a\t\x87\x91\x90a.\xFEV[`\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.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\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\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@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\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@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\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\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\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\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\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\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\x0E2\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\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@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\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\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\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@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\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@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\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\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\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@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\x12bW`@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\xAB\x83\x85a\x0F\x91V[`\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(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\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\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\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\x9CV[a\x15\x11a$\x9BV[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\xBAWP\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\xAE_Q` a4,_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\xE0a\x14\xAEV[`@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\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[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[\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\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\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\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\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\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\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\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\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\x1F\xBD\x83a3\xEBV[\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 \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@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[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\"\x82\x82a#\x1FV[`@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\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\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\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_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#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\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$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@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'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\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)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[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,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\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-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\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.\xA8W__\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.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\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.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\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\xDE`@\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\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\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",
4939    );
4940    #[derive(serde::Serialize, serde::Deserialize)]
4941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4942    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4943```solidity
4944error AddressEmptyCode(address target);
4945```*/
4946    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4947    #[derive(Clone)]
4948    pub struct AddressEmptyCode {
4949        #[allow(missing_docs)]
4950        pub target: alloy::sol_types::private::Address,
4951    }
4952    #[allow(
4953        non_camel_case_types,
4954        non_snake_case,
4955        clippy::pub_underscore_fields,
4956        clippy::style
4957    )]
4958    const _: () = {
4959        use alloy::sol_types as alloy_sol_types;
4960        #[doc(hidden)]
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        type UnderlyingSolTuple<'a> = ();
5039        #[doc(hidden)]
5040        type UnderlyingRustTuple<'a> = ();
5041        #[cfg(test)]
5042        #[allow(dead_code, unreachable_patterns)]
5043        fn _type_assertion(
5044            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5045        ) {
5046            match _t {
5047                alloy_sol_types::private::AssertTypeEq::<
5048                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5049                >(_) => {}
5050            }
5051        }
5052        #[automatically_derived]
5053        #[doc(hidden)]
5054        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5055            fn from(value: DeprecatedApi) -> Self {
5056                ()
5057            }
5058        }
5059        #[automatically_derived]
5060        #[doc(hidden)]
5061        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5062            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5063                Self
5064            }
5065        }
5066        #[automatically_derived]
5067        impl alloy_sol_types::SolError for DeprecatedApi {
5068            type Parameters<'a> = UnderlyingSolTuple<'a>;
5069            type Token<'a> = <Self::Parameters<
5070                'a,
5071            > as alloy_sol_types::SolType>::Token<'a>;
5072            const SIGNATURE: &'static str = "DeprecatedApi()";
5073            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5074            #[inline]
5075            fn new<'a>(
5076                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5077            ) -> Self {
5078                tuple.into()
5079            }
5080            #[inline]
5081            fn tokenize(&self) -> Self::Token<'_> {
5082                ()
5083            }
5084            #[inline]
5085            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5086                <Self::Parameters<
5087                    '_,
5088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5089                    .map(Self::new)
5090            }
5091        }
5092    };
5093    #[derive(serde::Serialize, serde::Deserialize)]
5094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5095    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5096```solidity
5097error ERC1967InvalidImplementation(address implementation);
5098```*/
5099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5100    #[derive(Clone)]
5101    pub struct ERC1967InvalidImplementation {
5102        #[allow(missing_docs)]
5103        pub implementation: alloy::sol_types::private::Address,
5104    }
5105    #[allow(
5106        non_camel_case_types,
5107        non_snake_case,
5108        clippy::pub_underscore_fields,
5109        clippy::style
5110    )]
5111    const _: () = {
5112        use alloy::sol_types as alloy_sol_types;
5113        #[doc(hidden)]
5114        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5115        #[doc(hidden)]
5116        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5117        #[cfg(test)]
5118        #[allow(dead_code, unreachable_patterns)]
5119        fn _type_assertion(
5120            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5121        ) {
5122            match _t {
5123                alloy_sol_types::private::AssertTypeEq::<
5124                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5125                >(_) => {}
5126            }
5127        }
5128        #[automatically_derived]
5129        #[doc(hidden)]
5130        impl ::core::convert::From<ERC1967InvalidImplementation>
5131        for UnderlyingRustTuple<'_> {
5132            fn from(value: ERC1967InvalidImplementation) -> Self {
5133                (value.implementation,)
5134            }
5135        }
5136        #[automatically_derived]
5137        #[doc(hidden)]
5138        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5139        for ERC1967InvalidImplementation {
5140            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5141                Self { implementation: tuple.0 }
5142            }
5143        }
5144        #[automatically_derived]
5145        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5146            type Parameters<'a> = UnderlyingSolTuple<'a>;
5147            type Token<'a> = <Self::Parameters<
5148                'a,
5149            > as alloy_sol_types::SolType>::Token<'a>;
5150            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5151            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5152            #[inline]
5153            fn new<'a>(
5154                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5155            ) -> Self {
5156                tuple.into()
5157            }
5158            #[inline]
5159            fn tokenize(&self) -> Self::Token<'_> {
5160                (
5161                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5162                        &self.implementation,
5163                    ),
5164                )
5165            }
5166            #[inline]
5167            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5168                <Self::Parameters<
5169                    '_,
5170                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5171                    .map(Self::new)
5172            }
5173        }
5174    };
5175    #[derive(serde::Serialize, serde::Deserialize)]
5176    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5177    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5178```solidity
5179error ERC1967NonPayable();
5180```*/
5181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5182    #[derive(Clone)]
5183    pub struct ERC1967NonPayable;
5184    #[allow(
5185        non_camel_case_types,
5186        non_snake_case,
5187        clippy::pub_underscore_fields,
5188        clippy::style
5189    )]
5190    const _: () = {
5191        use alloy::sol_types as alloy_sol_types;
5192        #[doc(hidden)]
5193        type UnderlyingSolTuple<'a> = ();
5194        #[doc(hidden)]
5195        type UnderlyingRustTuple<'a> = ();
5196        #[cfg(test)]
5197        #[allow(dead_code, unreachable_patterns)]
5198        fn _type_assertion(
5199            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5200        ) {
5201            match _t {
5202                alloy_sol_types::private::AssertTypeEq::<
5203                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5204                >(_) => {}
5205            }
5206        }
5207        #[automatically_derived]
5208        #[doc(hidden)]
5209        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5210            fn from(value: ERC1967NonPayable) -> Self {
5211                ()
5212            }
5213        }
5214        #[automatically_derived]
5215        #[doc(hidden)]
5216        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5217            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5218                Self
5219            }
5220        }
5221        #[automatically_derived]
5222        impl alloy_sol_types::SolError for ERC1967NonPayable {
5223            type Parameters<'a> = UnderlyingSolTuple<'a>;
5224            type Token<'a> = <Self::Parameters<
5225                'a,
5226            > as alloy_sol_types::SolType>::Token<'a>;
5227            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5228            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5229            #[inline]
5230            fn new<'a>(
5231                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5232            ) -> Self {
5233                tuple.into()
5234            }
5235            #[inline]
5236            fn tokenize(&self) -> Self::Token<'_> {
5237                ()
5238            }
5239            #[inline]
5240            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5241                <Self::Parameters<
5242                    '_,
5243                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5244                    .map(Self::new)
5245            }
5246        }
5247    };
5248    #[derive(serde::Serialize, serde::Deserialize)]
5249    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5250    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5251```solidity
5252error FailedInnerCall();
5253```*/
5254    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5255    #[derive(Clone)]
5256    pub struct FailedInnerCall;
5257    #[allow(
5258        non_camel_case_types,
5259        non_snake_case,
5260        clippy::pub_underscore_fields,
5261        clippy::style
5262    )]
5263    const _: () = {
5264        use alloy::sol_types as alloy_sol_types;
5265        #[doc(hidden)]
5266        type UnderlyingSolTuple<'a> = ();
5267        #[doc(hidden)]
5268        type UnderlyingRustTuple<'a> = ();
5269        #[cfg(test)]
5270        #[allow(dead_code, unreachable_patterns)]
5271        fn _type_assertion(
5272            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5273        ) {
5274            match _t {
5275                alloy_sol_types::private::AssertTypeEq::<
5276                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5277                >(_) => {}
5278            }
5279        }
5280        #[automatically_derived]
5281        #[doc(hidden)]
5282        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5283            fn from(value: FailedInnerCall) -> Self {
5284                ()
5285            }
5286        }
5287        #[automatically_derived]
5288        #[doc(hidden)]
5289        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5290            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5291                Self
5292            }
5293        }
5294        #[automatically_derived]
5295        impl alloy_sol_types::SolError for FailedInnerCall {
5296            type Parameters<'a> = UnderlyingSolTuple<'a>;
5297            type Token<'a> = <Self::Parameters<
5298                'a,
5299            > as alloy_sol_types::SolType>::Token<'a>;
5300            const SIGNATURE: &'static str = "FailedInnerCall()";
5301            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5302            #[inline]
5303            fn new<'a>(
5304                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5305            ) -> Self {
5306                tuple.into()
5307            }
5308            #[inline]
5309            fn tokenize(&self) -> Self::Token<'_> {
5310                ()
5311            }
5312            #[inline]
5313            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5314                <Self::Parameters<
5315                    '_,
5316                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5317                    .map(Self::new)
5318            }
5319        }
5320    };
5321    #[derive(serde::Serialize, serde::Deserialize)]
5322    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5323    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5324```solidity
5325error InsufficientSnapshotHistory();
5326```*/
5327    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5328    #[derive(Clone)]
5329    pub struct InsufficientSnapshotHistory;
5330    #[allow(
5331        non_camel_case_types,
5332        non_snake_case,
5333        clippy::pub_underscore_fields,
5334        clippy::style
5335    )]
5336    const _: () = {
5337        use alloy::sol_types as alloy_sol_types;
5338        #[doc(hidden)]
5339        type UnderlyingSolTuple<'a> = ();
5340        #[doc(hidden)]
5341        type UnderlyingRustTuple<'a> = ();
5342        #[cfg(test)]
5343        #[allow(dead_code, unreachable_patterns)]
5344        fn _type_assertion(
5345            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5346        ) {
5347            match _t {
5348                alloy_sol_types::private::AssertTypeEq::<
5349                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5350                >(_) => {}
5351            }
5352        }
5353        #[automatically_derived]
5354        #[doc(hidden)]
5355        impl ::core::convert::From<InsufficientSnapshotHistory>
5356        for UnderlyingRustTuple<'_> {
5357            fn from(value: InsufficientSnapshotHistory) -> Self {
5358                ()
5359            }
5360        }
5361        #[automatically_derived]
5362        #[doc(hidden)]
5363        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5364        for InsufficientSnapshotHistory {
5365            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5366                Self
5367            }
5368        }
5369        #[automatically_derived]
5370        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5371            type Parameters<'a> = UnderlyingSolTuple<'a>;
5372            type Token<'a> = <Self::Parameters<
5373                'a,
5374            > as alloy_sol_types::SolType>::Token<'a>;
5375            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5376            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5377            #[inline]
5378            fn new<'a>(
5379                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5380            ) -> Self {
5381                tuple.into()
5382            }
5383            #[inline]
5384            fn tokenize(&self) -> Self::Token<'_> {
5385                ()
5386            }
5387            #[inline]
5388            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5389                <Self::Parameters<
5390                    '_,
5391                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5392                    .map(Self::new)
5393            }
5394        }
5395    };
5396    #[derive(serde::Serialize, serde::Deserialize)]
5397    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5398    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5399```solidity
5400error InvalidAddress();
5401```*/
5402    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5403    #[derive(Clone)]
5404    pub struct InvalidAddress;
5405    #[allow(
5406        non_camel_case_types,
5407        non_snake_case,
5408        clippy::pub_underscore_fields,
5409        clippy::style
5410    )]
5411    const _: () = {
5412        use alloy::sol_types as alloy_sol_types;
5413        #[doc(hidden)]
5414        type UnderlyingSolTuple<'a> = ();
5415        #[doc(hidden)]
5416        type UnderlyingRustTuple<'a> = ();
5417        #[cfg(test)]
5418        #[allow(dead_code, unreachable_patterns)]
5419        fn _type_assertion(
5420            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5421        ) {
5422            match _t {
5423                alloy_sol_types::private::AssertTypeEq::<
5424                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5425                >(_) => {}
5426            }
5427        }
5428        #[automatically_derived]
5429        #[doc(hidden)]
5430        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5431            fn from(value: InvalidAddress) -> Self {
5432                ()
5433            }
5434        }
5435        #[automatically_derived]
5436        #[doc(hidden)]
5437        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5438            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5439                Self
5440            }
5441        }
5442        #[automatically_derived]
5443        impl alloy_sol_types::SolError for InvalidAddress {
5444            type Parameters<'a> = UnderlyingSolTuple<'a>;
5445            type Token<'a> = <Self::Parameters<
5446                'a,
5447            > as alloy_sol_types::SolType>::Token<'a>;
5448            const SIGNATURE: &'static str = "InvalidAddress()";
5449            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5450            #[inline]
5451            fn new<'a>(
5452                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5453            ) -> Self {
5454                tuple.into()
5455            }
5456            #[inline]
5457            fn tokenize(&self) -> Self::Token<'_> {
5458                ()
5459            }
5460            #[inline]
5461            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5462                <Self::Parameters<
5463                    '_,
5464                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5465                    .map(Self::new)
5466            }
5467        }
5468    };
5469    #[derive(serde::Serialize, serde::Deserialize)]
5470    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5471    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5472```solidity
5473error InvalidArgs();
5474```*/
5475    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5476    #[derive(Clone)]
5477    pub struct InvalidArgs;
5478    #[allow(
5479        non_camel_case_types,
5480        non_snake_case,
5481        clippy::pub_underscore_fields,
5482        clippy::style
5483    )]
5484    const _: () = {
5485        use alloy::sol_types as alloy_sol_types;
5486        #[doc(hidden)]
5487        type UnderlyingSolTuple<'a> = ();
5488        #[doc(hidden)]
5489        type UnderlyingRustTuple<'a> = ();
5490        #[cfg(test)]
5491        #[allow(dead_code, unreachable_patterns)]
5492        fn _type_assertion(
5493            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5494        ) {
5495            match _t {
5496                alloy_sol_types::private::AssertTypeEq::<
5497                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5498                >(_) => {}
5499            }
5500        }
5501        #[automatically_derived]
5502        #[doc(hidden)]
5503        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5504            fn from(value: InvalidArgs) -> Self {
5505                ()
5506            }
5507        }
5508        #[automatically_derived]
5509        #[doc(hidden)]
5510        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5511            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5512                Self
5513            }
5514        }
5515        #[automatically_derived]
5516        impl alloy_sol_types::SolError for InvalidArgs {
5517            type Parameters<'a> = UnderlyingSolTuple<'a>;
5518            type Token<'a> = <Self::Parameters<
5519                'a,
5520            > as alloy_sol_types::SolType>::Token<'a>;
5521            const SIGNATURE: &'static str = "InvalidArgs()";
5522            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5523            #[inline]
5524            fn new<'a>(
5525                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5526            ) -> Self {
5527                tuple.into()
5528            }
5529            #[inline]
5530            fn tokenize(&self) -> Self::Token<'_> {
5531                ()
5532            }
5533            #[inline]
5534            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5535                <Self::Parameters<
5536                    '_,
5537                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5538                    .map(Self::new)
5539            }
5540        }
5541    };
5542    #[derive(serde::Serialize, serde::Deserialize)]
5543    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5544    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5545```solidity
5546error InvalidHotShotBlockForCommitmentCheck();
5547```*/
5548    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5549    #[derive(Clone)]
5550    pub struct InvalidHotShotBlockForCommitmentCheck;
5551    #[allow(
5552        non_camel_case_types,
5553        non_snake_case,
5554        clippy::pub_underscore_fields,
5555        clippy::style
5556    )]
5557    const _: () = {
5558        use alloy::sol_types as alloy_sol_types;
5559        #[doc(hidden)]
5560        type UnderlyingSolTuple<'a> = ();
5561        #[doc(hidden)]
5562        type UnderlyingRustTuple<'a> = ();
5563        #[cfg(test)]
5564        #[allow(dead_code, unreachable_patterns)]
5565        fn _type_assertion(
5566            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5567        ) {
5568            match _t {
5569                alloy_sol_types::private::AssertTypeEq::<
5570                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5571                >(_) => {}
5572            }
5573        }
5574        #[automatically_derived]
5575        #[doc(hidden)]
5576        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5577        for UnderlyingRustTuple<'_> {
5578            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5579                ()
5580            }
5581        }
5582        #[automatically_derived]
5583        #[doc(hidden)]
5584        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5585        for InvalidHotShotBlockForCommitmentCheck {
5586            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5587                Self
5588            }
5589        }
5590        #[automatically_derived]
5591        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5592            type Parameters<'a> = UnderlyingSolTuple<'a>;
5593            type Token<'a> = <Self::Parameters<
5594                'a,
5595            > as alloy_sol_types::SolType>::Token<'a>;
5596            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5597            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5598            #[inline]
5599            fn new<'a>(
5600                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5601            ) -> Self {
5602                tuple.into()
5603            }
5604            #[inline]
5605            fn tokenize(&self) -> Self::Token<'_> {
5606                ()
5607            }
5608            #[inline]
5609            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5610                <Self::Parameters<
5611                    '_,
5612                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5613                    .map(Self::new)
5614            }
5615        }
5616    };
5617    #[derive(serde::Serialize, serde::Deserialize)]
5618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5619    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5620```solidity
5621error InvalidInitialization();
5622```*/
5623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5624    #[derive(Clone)]
5625    pub struct InvalidInitialization;
5626    #[allow(
5627        non_camel_case_types,
5628        non_snake_case,
5629        clippy::pub_underscore_fields,
5630        clippy::style
5631    )]
5632    const _: () = {
5633        use alloy::sol_types as alloy_sol_types;
5634        #[doc(hidden)]
5635        type UnderlyingSolTuple<'a> = ();
5636        #[doc(hidden)]
5637        type UnderlyingRustTuple<'a> = ();
5638        #[cfg(test)]
5639        #[allow(dead_code, unreachable_patterns)]
5640        fn _type_assertion(
5641            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5642        ) {
5643            match _t {
5644                alloy_sol_types::private::AssertTypeEq::<
5645                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5646                >(_) => {}
5647            }
5648        }
5649        #[automatically_derived]
5650        #[doc(hidden)]
5651        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5652            fn from(value: InvalidInitialization) -> Self {
5653                ()
5654            }
5655        }
5656        #[automatically_derived]
5657        #[doc(hidden)]
5658        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5659            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5660                Self
5661            }
5662        }
5663        #[automatically_derived]
5664        impl alloy_sol_types::SolError for InvalidInitialization {
5665            type Parameters<'a> = UnderlyingSolTuple<'a>;
5666            type Token<'a> = <Self::Parameters<
5667                'a,
5668            > as alloy_sol_types::SolType>::Token<'a>;
5669            const SIGNATURE: &'static str = "InvalidInitialization()";
5670            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5671            #[inline]
5672            fn new<'a>(
5673                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5674            ) -> Self {
5675                tuple.into()
5676            }
5677            #[inline]
5678            fn tokenize(&self) -> Self::Token<'_> {
5679                ()
5680            }
5681            #[inline]
5682            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5683                <Self::Parameters<
5684                    '_,
5685                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5686                    .map(Self::new)
5687            }
5688        }
5689    };
5690    #[derive(serde::Serialize, serde::Deserialize)]
5691    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5692    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5693```solidity
5694error InvalidMaxStateHistory();
5695```*/
5696    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5697    #[derive(Clone)]
5698    pub struct InvalidMaxStateHistory;
5699    #[allow(
5700        non_camel_case_types,
5701        non_snake_case,
5702        clippy::pub_underscore_fields,
5703        clippy::style
5704    )]
5705    const _: () = {
5706        use alloy::sol_types as alloy_sol_types;
5707        #[doc(hidden)]
5708        type UnderlyingSolTuple<'a> = ();
5709        #[doc(hidden)]
5710        type UnderlyingRustTuple<'a> = ();
5711        #[cfg(test)]
5712        #[allow(dead_code, unreachable_patterns)]
5713        fn _type_assertion(
5714            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5715        ) {
5716            match _t {
5717                alloy_sol_types::private::AssertTypeEq::<
5718                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5719                >(_) => {}
5720            }
5721        }
5722        #[automatically_derived]
5723        #[doc(hidden)]
5724        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5725            fn from(value: InvalidMaxStateHistory) -> Self {
5726                ()
5727            }
5728        }
5729        #[automatically_derived]
5730        #[doc(hidden)]
5731        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5732            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5733                Self
5734            }
5735        }
5736        #[automatically_derived]
5737        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5738            type Parameters<'a> = UnderlyingSolTuple<'a>;
5739            type Token<'a> = <Self::Parameters<
5740                'a,
5741            > as alloy_sol_types::SolType>::Token<'a>;
5742            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5743            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5744            #[inline]
5745            fn new<'a>(
5746                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5747            ) -> Self {
5748                tuple.into()
5749            }
5750            #[inline]
5751            fn tokenize(&self) -> Self::Token<'_> {
5752                ()
5753            }
5754            #[inline]
5755            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5756                <Self::Parameters<
5757                    '_,
5758                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5759                    .map(Self::new)
5760            }
5761        }
5762    };
5763    #[derive(serde::Serialize, serde::Deserialize)]
5764    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5765    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5766```solidity
5767error InvalidProof();
5768```*/
5769    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5770    #[derive(Clone)]
5771    pub struct InvalidProof;
5772    #[allow(
5773        non_camel_case_types,
5774        non_snake_case,
5775        clippy::pub_underscore_fields,
5776        clippy::style
5777    )]
5778    const _: () = {
5779        use alloy::sol_types as alloy_sol_types;
5780        #[doc(hidden)]
5781        type UnderlyingSolTuple<'a> = ();
5782        #[doc(hidden)]
5783        type UnderlyingRustTuple<'a> = ();
5784        #[cfg(test)]
5785        #[allow(dead_code, unreachable_patterns)]
5786        fn _type_assertion(
5787            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5788        ) {
5789            match _t {
5790                alloy_sol_types::private::AssertTypeEq::<
5791                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5792                >(_) => {}
5793            }
5794        }
5795        #[automatically_derived]
5796        #[doc(hidden)]
5797        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5798            fn from(value: InvalidProof) -> Self {
5799                ()
5800            }
5801        }
5802        #[automatically_derived]
5803        #[doc(hidden)]
5804        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5805            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5806                Self
5807            }
5808        }
5809        #[automatically_derived]
5810        impl alloy_sol_types::SolError for InvalidProof {
5811            type Parameters<'a> = UnderlyingSolTuple<'a>;
5812            type Token<'a> = <Self::Parameters<
5813                'a,
5814            > as alloy_sol_types::SolType>::Token<'a>;
5815            const SIGNATURE: &'static str = "InvalidProof()";
5816            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5817            #[inline]
5818            fn new<'a>(
5819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5820            ) -> Self {
5821                tuple.into()
5822            }
5823            #[inline]
5824            fn tokenize(&self) -> Self::Token<'_> {
5825                ()
5826            }
5827            #[inline]
5828            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5829                <Self::Parameters<
5830                    '_,
5831                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5832                    .map(Self::new)
5833            }
5834        }
5835    };
5836    #[derive(serde::Serialize, serde::Deserialize)]
5837    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5838    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5839```solidity
5840error InvalidScalar();
5841```*/
5842    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5843    #[derive(Clone)]
5844    pub struct InvalidScalar;
5845    #[allow(
5846        non_camel_case_types,
5847        non_snake_case,
5848        clippy::pub_underscore_fields,
5849        clippy::style
5850    )]
5851    const _: () = {
5852        use alloy::sol_types as alloy_sol_types;
5853        #[doc(hidden)]
5854        type UnderlyingSolTuple<'a> = ();
5855        #[doc(hidden)]
5856        type UnderlyingRustTuple<'a> = ();
5857        #[cfg(test)]
5858        #[allow(dead_code, unreachable_patterns)]
5859        fn _type_assertion(
5860            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5861        ) {
5862            match _t {
5863                alloy_sol_types::private::AssertTypeEq::<
5864                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5865                >(_) => {}
5866            }
5867        }
5868        #[automatically_derived]
5869        #[doc(hidden)]
5870        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5871            fn from(value: InvalidScalar) -> Self {
5872                ()
5873            }
5874        }
5875        #[automatically_derived]
5876        #[doc(hidden)]
5877        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5878            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5879                Self
5880            }
5881        }
5882        #[automatically_derived]
5883        impl alloy_sol_types::SolError for InvalidScalar {
5884            type Parameters<'a> = UnderlyingSolTuple<'a>;
5885            type Token<'a> = <Self::Parameters<
5886                'a,
5887            > as alloy_sol_types::SolType>::Token<'a>;
5888            const SIGNATURE: &'static str = "InvalidScalar()";
5889            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5890            #[inline]
5891            fn new<'a>(
5892                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5893            ) -> Self {
5894                tuple.into()
5895            }
5896            #[inline]
5897            fn tokenize(&self) -> Self::Token<'_> {
5898                ()
5899            }
5900            #[inline]
5901            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5902                <Self::Parameters<
5903                    '_,
5904                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5905                    .map(Self::new)
5906            }
5907        }
5908    };
5909    #[derive(serde::Serialize, serde::Deserialize)]
5910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5911    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5912```solidity
5913error MissingEpochRootUpdate();
5914```*/
5915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5916    #[derive(Clone)]
5917    pub struct MissingEpochRootUpdate;
5918    #[allow(
5919        non_camel_case_types,
5920        non_snake_case,
5921        clippy::pub_underscore_fields,
5922        clippy::style
5923    )]
5924    const _: () = {
5925        use alloy::sol_types as alloy_sol_types;
5926        #[doc(hidden)]
5927        type UnderlyingSolTuple<'a> = ();
5928        #[doc(hidden)]
5929        type UnderlyingRustTuple<'a> = ();
5930        #[cfg(test)]
5931        #[allow(dead_code, unreachable_patterns)]
5932        fn _type_assertion(
5933            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5934        ) {
5935            match _t {
5936                alloy_sol_types::private::AssertTypeEq::<
5937                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5938                >(_) => {}
5939            }
5940        }
5941        #[automatically_derived]
5942        #[doc(hidden)]
5943        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5944            fn from(value: MissingEpochRootUpdate) -> Self {
5945                ()
5946            }
5947        }
5948        #[automatically_derived]
5949        #[doc(hidden)]
5950        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5951            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5952                Self
5953            }
5954        }
5955        #[automatically_derived]
5956        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5957            type Parameters<'a> = UnderlyingSolTuple<'a>;
5958            type Token<'a> = <Self::Parameters<
5959                'a,
5960            > as alloy_sol_types::SolType>::Token<'a>;
5961            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5962            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5963            #[inline]
5964            fn new<'a>(
5965                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5966            ) -> Self {
5967                tuple.into()
5968            }
5969            #[inline]
5970            fn tokenize(&self) -> Self::Token<'_> {
5971                ()
5972            }
5973            #[inline]
5974            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5975                <Self::Parameters<
5976                    '_,
5977                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5978                    .map(Self::new)
5979            }
5980        }
5981    };
5982    #[derive(serde::Serialize, serde::Deserialize)]
5983    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5984    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5985```solidity
5986error NoChangeRequired();
5987```*/
5988    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5989    #[derive(Clone)]
5990    pub struct NoChangeRequired;
5991    #[allow(
5992        non_camel_case_types,
5993        non_snake_case,
5994        clippy::pub_underscore_fields,
5995        clippy::style
5996    )]
5997    const _: () = {
5998        use alloy::sol_types as alloy_sol_types;
5999        #[doc(hidden)]
6000        type UnderlyingSolTuple<'a> = ();
6001        #[doc(hidden)]
6002        type UnderlyingRustTuple<'a> = ();
6003        #[cfg(test)]
6004        #[allow(dead_code, unreachable_patterns)]
6005        fn _type_assertion(
6006            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6007        ) {
6008            match _t {
6009                alloy_sol_types::private::AssertTypeEq::<
6010                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6011                >(_) => {}
6012            }
6013        }
6014        #[automatically_derived]
6015        #[doc(hidden)]
6016        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6017            fn from(value: NoChangeRequired) -> Self {
6018                ()
6019            }
6020        }
6021        #[automatically_derived]
6022        #[doc(hidden)]
6023        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6024            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6025                Self
6026            }
6027        }
6028        #[automatically_derived]
6029        impl alloy_sol_types::SolError for NoChangeRequired {
6030            type Parameters<'a> = UnderlyingSolTuple<'a>;
6031            type Token<'a> = <Self::Parameters<
6032                'a,
6033            > as alloy_sol_types::SolType>::Token<'a>;
6034            const SIGNATURE: &'static str = "NoChangeRequired()";
6035            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6036            #[inline]
6037            fn new<'a>(
6038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6039            ) -> Self {
6040                tuple.into()
6041            }
6042            #[inline]
6043            fn tokenize(&self) -> Self::Token<'_> {
6044                ()
6045            }
6046            #[inline]
6047            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6048                <Self::Parameters<
6049                    '_,
6050                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6051                    .map(Self::new)
6052            }
6053        }
6054    };
6055    #[derive(serde::Serialize, serde::Deserialize)]
6056    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6057    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6058```solidity
6059error NotInitializing();
6060```*/
6061    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6062    #[derive(Clone)]
6063    pub struct NotInitializing;
6064    #[allow(
6065        non_camel_case_types,
6066        non_snake_case,
6067        clippy::pub_underscore_fields,
6068        clippy::style
6069    )]
6070    const _: () = {
6071        use alloy::sol_types as alloy_sol_types;
6072        #[doc(hidden)]
6073        type UnderlyingSolTuple<'a> = ();
6074        #[doc(hidden)]
6075        type UnderlyingRustTuple<'a> = ();
6076        #[cfg(test)]
6077        #[allow(dead_code, unreachable_patterns)]
6078        fn _type_assertion(
6079            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6080        ) {
6081            match _t {
6082                alloy_sol_types::private::AssertTypeEq::<
6083                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6084                >(_) => {}
6085            }
6086        }
6087        #[automatically_derived]
6088        #[doc(hidden)]
6089        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6090            fn from(value: NotInitializing) -> Self {
6091                ()
6092            }
6093        }
6094        #[automatically_derived]
6095        #[doc(hidden)]
6096        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6097            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6098                Self
6099            }
6100        }
6101        #[automatically_derived]
6102        impl alloy_sol_types::SolError for NotInitializing {
6103            type Parameters<'a> = UnderlyingSolTuple<'a>;
6104            type Token<'a> = <Self::Parameters<
6105                'a,
6106            > as alloy_sol_types::SolType>::Token<'a>;
6107            const SIGNATURE: &'static str = "NotInitializing()";
6108            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6109            #[inline]
6110            fn new<'a>(
6111                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6112            ) -> Self {
6113                tuple.into()
6114            }
6115            #[inline]
6116            fn tokenize(&self) -> Self::Token<'_> {
6117                ()
6118            }
6119            #[inline]
6120            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6121                <Self::Parameters<
6122                    '_,
6123                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6124                    .map(Self::new)
6125            }
6126        }
6127    };
6128    #[derive(serde::Serialize, serde::Deserialize)]
6129    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6130    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6131```solidity
6132error OutdatedState();
6133```*/
6134    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6135    #[derive(Clone)]
6136    pub struct OutdatedState;
6137    #[allow(
6138        non_camel_case_types,
6139        non_snake_case,
6140        clippy::pub_underscore_fields,
6141        clippy::style
6142    )]
6143    const _: () = {
6144        use alloy::sol_types as alloy_sol_types;
6145        #[doc(hidden)]
6146        type UnderlyingSolTuple<'a> = ();
6147        #[doc(hidden)]
6148        type UnderlyingRustTuple<'a> = ();
6149        #[cfg(test)]
6150        #[allow(dead_code, unreachable_patterns)]
6151        fn _type_assertion(
6152            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6153        ) {
6154            match _t {
6155                alloy_sol_types::private::AssertTypeEq::<
6156                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6157                >(_) => {}
6158            }
6159        }
6160        #[automatically_derived]
6161        #[doc(hidden)]
6162        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6163            fn from(value: OutdatedState) -> Self {
6164                ()
6165            }
6166        }
6167        #[automatically_derived]
6168        #[doc(hidden)]
6169        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6170            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6171                Self
6172            }
6173        }
6174        #[automatically_derived]
6175        impl alloy_sol_types::SolError for OutdatedState {
6176            type Parameters<'a> = UnderlyingSolTuple<'a>;
6177            type Token<'a> = <Self::Parameters<
6178                'a,
6179            > as alloy_sol_types::SolType>::Token<'a>;
6180            const SIGNATURE: &'static str = "OutdatedState()";
6181            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6182            #[inline]
6183            fn new<'a>(
6184                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6185            ) -> Self {
6186                tuple.into()
6187            }
6188            #[inline]
6189            fn tokenize(&self) -> Self::Token<'_> {
6190                ()
6191            }
6192            #[inline]
6193            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6194                <Self::Parameters<
6195                    '_,
6196                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6197                    .map(Self::new)
6198            }
6199        }
6200    };
6201    #[derive(serde::Serialize, serde::Deserialize)]
6202    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6203    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6204```solidity
6205error OwnableInvalidOwner(address owner);
6206```*/
6207    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6208    #[derive(Clone)]
6209    pub struct OwnableInvalidOwner {
6210        #[allow(missing_docs)]
6211        pub owner: alloy::sol_types::private::Address,
6212    }
6213    #[allow(
6214        non_camel_case_types,
6215        non_snake_case,
6216        clippy::pub_underscore_fields,
6217        clippy::style
6218    )]
6219    const _: () = {
6220        use alloy::sol_types as alloy_sol_types;
6221        #[doc(hidden)]
6222        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6223        #[doc(hidden)]
6224        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6225        #[cfg(test)]
6226        #[allow(dead_code, unreachable_patterns)]
6227        fn _type_assertion(
6228            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6229        ) {
6230            match _t {
6231                alloy_sol_types::private::AssertTypeEq::<
6232                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6233                >(_) => {}
6234            }
6235        }
6236        #[automatically_derived]
6237        #[doc(hidden)]
6238        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6239            fn from(value: OwnableInvalidOwner) -> Self {
6240                (value.owner,)
6241            }
6242        }
6243        #[automatically_derived]
6244        #[doc(hidden)]
6245        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6246            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6247                Self { owner: tuple.0 }
6248            }
6249        }
6250        #[automatically_derived]
6251        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6252            type Parameters<'a> = UnderlyingSolTuple<'a>;
6253            type Token<'a> = <Self::Parameters<
6254                'a,
6255            > as alloy_sol_types::SolType>::Token<'a>;
6256            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6257            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6258            #[inline]
6259            fn new<'a>(
6260                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6261            ) -> Self {
6262                tuple.into()
6263            }
6264            #[inline]
6265            fn tokenize(&self) -> Self::Token<'_> {
6266                (
6267                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6268                        &self.owner,
6269                    ),
6270                )
6271            }
6272            #[inline]
6273            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6274                <Self::Parameters<
6275                    '_,
6276                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6277                    .map(Self::new)
6278            }
6279        }
6280    };
6281    #[derive(serde::Serialize, serde::Deserialize)]
6282    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6283    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6284```solidity
6285error OwnableUnauthorizedAccount(address account);
6286```*/
6287    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6288    #[derive(Clone)]
6289    pub struct OwnableUnauthorizedAccount {
6290        #[allow(missing_docs)]
6291        pub account: alloy::sol_types::private::Address,
6292    }
6293    #[allow(
6294        non_camel_case_types,
6295        non_snake_case,
6296        clippy::pub_underscore_fields,
6297        clippy::style
6298    )]
6299    const _: () = {
6300        use alloy::sol_types as alloy_sol_types;
6301        #[doc(hidden)]
6302        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6303        #[doc(hidden)]
6304        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6305        #[cfg(test)]
6306        #[allow(dead_code, unreachable_patterns)]
6307        fn _type_assertion(
6308            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6309        ) {
6310            match _t {
6311                alloy_sol_types::private::AssertTypeEq::<
6312                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6313                >(_) => {}
6314            }
6315        }
6316        #[automatically_derived]
6317        #[doc(hidden)]
6318        impl ::core::convert::From<OwnableUnauthorizedAccount>
6319        for UnderlyingRustTuple<'_> {
6320            fn from(value: OwnableUnauthorizedAccount) -> Self {
6321                (value.account,)
6322            }
6323        }
6324        #[automatically_derived]
6325        #[doc(hidden)]
6326        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6327        for OwnableUnauthorizedAccount {
6328            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6329                Self { account: tuple.0 }
6330            }
6331        }
6332        #[automatically_derived]
6333        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6334            type Parameters<'a> = UnderlyingSolTuple<'a>;
6335            type Token<'a> = <Self::Parameters<
6336                'a,
6337            > as alloy_sol_types::SolType>::Token<'a>;
6338            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6339            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6340            #[inline]
6341            fn new<'a>(
6342                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6343            ) -> Self {
6344                tuple.into()
6345            }
6346            #[inline]
6347            fn tokenize(&self) -> Self::Token<'_> {
6348                (
6349                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6350                        &self.account,
6351                    ),
6352                )
6353            }
6354            #[inline]
6355            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6356                <Self::Parameters<
6357                    '_,
6358                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6359                    .map(Self::new)
6360            }
6361        }
6362    };
6363    #[derive(serde::Serialize, serde::Deserialize)]
6364    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6365    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6366```solidity
6367error OwnershipCannotBeRenounced();
6368```*/
6369    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6370    #[derive(Clone)]
6371    pub struct OwnershipCannotBeRenounced;
6372    #[allow(
6373        non_camel_case_types,
6374        non_snake_case,
6375        clippy::pub_underscore_fields,
6376        clippy::style
6377    )]
6378    const _: () = {
6379        use alloy::sol_types as alloy_sol_types;
6380        #[doc(hidden)]
6381        type UnderlyingSolTuple<'a> = ();
6382        #[doc(hidden)]
6383        type UnderlyingRustTuple<'a> = ();
6384        #[cfg(test)]
6385        #[allow(dead_code, unreachable_patterns)]
6386        fn _type_assertion(
6387            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6388        ) {
6389            match _t {
6390                alloy_sol_types::private::AssertTypeEq::<
6391                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6392                >(_) => {}
6393            }
6394        }
6395        #[automatically_derived]
6396        #[doc(hidden)]
6397        impl ::core::convert::From<OwnershipCannotBeRenounced>
6398        for UnderlyingRustTuple<'_> {
6399            fn from(value: OwnershipCannotBeRenounced) -> Self {
6400                ()
6401            }
6402        }
6403        #[automatically_derived]
6404        #[doc(hidden)]
6405        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6406        for OwnershipCannotBeRenounced {
6407            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6408                Self
6409            }
6410        }
6411        #[automatically_derived]
6412        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6413            type Parameters<'a> = UnderlyingSolTuple<'a>;
6414            type Token<'a> = <Self::Parameters<
6415                'a,
6416            > as alloy_sol_types::SolType>::Token<'a>;
6417            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6418            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6419            #[inline]
6420            fn new<'a>(
6421                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6422            ) -> Self {
6423                tuple.into()
6424            }
6425            #[inline]
6426            fn tokenize(&self) -> Self::Token<'_> {
6427                ()
6428            }
6429            #[inline]
6430            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6431                <Self::Parameters<
6432                    '_,
6433                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6434                    .map(Self::new)
6435            }
6436        }
6437    };
6438    #[derive(serde::Serialize, serde::Deserialize)]
6439    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6440    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6441```solidity
6442error ProverNotPermissioned();
6443```*/
6444    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6445    #[derive(Clone)]
6446    pub struct ProverNotPermissioned;
6447    #[allow(
6448        non_camel_case_types,
6449        non_snake_case,
6450        clippy::pub_underscore_fields,
6451        clippy::style
6452    )]
6453    const _: () = {
6454        use alloy::sol_types as alloy_sol_types;
6455        #[doc(hidden)]
6456        type UnderlyingSolTuple<'a> = ();
6457        #[doc(hidden)]
6458        type UnderlyingRustTuple<'a> = ();
6459        #[cfg(test)]
6460        #[allow(dead_code, unreachable_patterns)]
6461        fn _type_assertion(
6462            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6463        ) {
6464            match _t {
6465                alloy_sol_types::private::AssertTypeEq::<
6466                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6467                >(_) => {}
6468            }
6469        }
6470        #[automatically_derived]
6471        #[doc(hidden)]
6472        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6473            fn from(value: ProverNotPermissioned) -> Self {
6474                ()
6475            }
6476        }
6477        #[automatically_derived]
6478        #[doc(hidden)]
6479        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6480            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6481                Self
6482            }
6483        }
6484        #[automatically_derived]
6485        impl alloy_sol_types::SolError for ProverNotPermissioned {
6486            type Parameters<'a> = UnderlyingSolTuple<'a>;
6487            type Token<'a> = <Self::Parameters<
6488                'a,
6489            > as alloy_sol_types::SolType>::Token<'a>;
6490            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6491            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6492            #[inline]
6493            fn new<'a>(
6494                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6495            ) -> Self {
6496                tuple.into()
6497            }
6498            #[inline]
6499            fn tokenize(&self) -> Self::Token<'_> {
6500                ()
6501            }
6502            #[inline]
6503            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6504                <Self::Parameters<
6505                    '_,
6506                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6507                    .map(Self::new)
6508            }
6509        }
6510    };
6511    #[derive(serde::Serialize, serde::Deserialize)]
6512    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6513    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6514```solidity
6515error UUPSUnauthorizedCallContext();
6516```*/
6517    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6518    #[derive(Clone)]
6519    pub struct UUPSUnauthorizedCallContext;
6520    #[allow(
6521        non_camel_case_types,
6522        non_snake_case,
6523        clippy::pub_underscore_fields,
6524        clippy::style
6525    )]
6526    const _: () = {
6527        use alloy::sol_types as alloy_sol_types;
6528        #[doc(hidden)]
6529        type UnderlyingSolTuple<'a> = ();
6530        #[doc(hidden)]
6531        type UnderlyingRustTuple<'a> = ();
6532        #[cfg(test)]
6533        #[allow(dead_code, unreachable_patterns)]
6534        fn _type_assertion(
6535            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6536        ) {
6537            match _t {
6538                alloy_sol_types::private::AssertTypeEq::<
6539                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6540                >(_) => {}
6541            }
6542        }
6543        #[automatically_derived]
6544        #[doc(hidden)]
6545        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6546        for UnderlyingRustTuple<'_> {
6547            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6548                ()
6549            }
6550        }
6551        #[automatically_derived]
6552        #[doc(hidden)]
6553        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6554        for UUPSUnauthorizedCallContext {
6555            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6556                Self
6557            }
6558        }
6559        #[automatically_derived]
6560        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6561            type Parameters<'a> = UnderlyingSolTuple<'a>;
6562            type Token<'a> = <Self::Parameters<
6563                'a,
6564            > as alloy_sol_types::SolType>::Token<'a>;
6565            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6566            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6567            #[inline]
6568            fn new<'a>(
6569                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6570            ) -> Self {
6571                tuple.into()
6572            }
6573            #[inline]
6574            fn tokenize(&self) -> Self::Token<'_> {
6575                ()
6576            }
6577            #[inline]
6578            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6579                <Self::Parameters<
6580                    '_,
6581                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6582                    .map(Self::new)
6583            }
6584        }
6585    };
6586    #[derive(serde::Serialize, serde::Deserialize)]
6587    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6588    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6589```solidity
6590error UUPSUnsupportedProxiableUUID(bytes32 slot);
6591```*/
6592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6593    #[derive(Clone)]
6594    pub struct UUPSUnsupportedProxiableUUID {
6595        #[allow(missing_docs)]
6596        pub slot: alloy::sol_types::private::FixedBytes<32>,
6597    }
6598    #[allow(
6599        non_camel_case_types,
6600        non_snake_case,
6601        clippy::pub_underscore_fields,
6602        clippy::style
6603    )]
6604    const _: () = {
6605        use alloy::sol_types as alloy_sol_types;
6606        #[doc(hidden)]
6607        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6608        #[doc(hidden)]
6609        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6610        #[cfg(test)]
6611        #[allow(dead_code, unreachable_patterns)]
6612        fn _type_assertion(
6613            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6614        ) {
6615            match _t {
6616                alloy_sol_types::private::AssertTypeEq::<
6617                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6618                >(_) => {}
6619            }
6620        }
6621        #[automatically_derived]
6622        #[doc(hidden)]
6623        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6624        for UnderlyingRustTuple<'_> {
6625            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6626                (value.slot,)
6627            }
6628        }
6629        #[automatically_derived]
6630        #[doc(hidden)]
6631        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6632        for UUPSUnsupportedProxiableUUID {
6633            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6634                Self { slot: tuple.0 }
6635            }
6636        }
6637        #[automatically_derived]
6638        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6639            type Parameters<'a> = UnderlyingSolTuple<'a>;
6640            type Token<'a> = <Self::Parameters<
6641                'a,
6642            > as alloy_sol_types::SolType>::Token<'a>;
6643            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6644            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6645            #[inline]
6646            fn new<'a>(
6647                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6648            ) -> Self {
6649                tuple.into()
6650            }
6651            #[inline]
6652            fn tokenize(&self) -> Self::Token<'_> {
6653                (
6654                    <alloy::sol_types::sol_data::FixedBytes<
6655                        32,
6656                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6657                )
6658            }
6659            #[inline]
6660            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6661                <Self::Parameters<
6662                    '_,
6663                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6664                    .map(Self::new)
6665            }
6666        }
6667    };
6668    #[derive(serde::Serialize, serde::Deserialize)]
6669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6670    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6671```solidity
6672error WrongStakeTableUsed();
6673```*/
6674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6675    #[derive(Clone)]
6676    pub struct WrongStakeTableUsed;
6677    #[allow(
6678        non_camel_case_types,
6679        non_snake_case,
6680        clippy::pub_underscore_fields,
6681        clippy::style
6682    )]
6683    const _: () = {
6684        use alloy::sol_types as alloy_sol_types;
6685        #[doc(hidden)]
6686        type UnderlyingSolTuple<'a> = ();
6687        #[doc(hidden)]
6688        type UnderlyingRustTuple<'a> = ();
6689        #[cfg(test)]
6690        #[allow(dead_code, unreachable_patterns)]
6691        fn _type_assertion(
6692            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6693        ) {
6694            match _t {
6695                alloy_sol_types::private::AssertTypeEq::<
6696                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6697                >(_) => {}
6698            }
6699        }
6700        #[automatically_derived]
6701        #[doc(hidden)]
6702        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6703            fn from(value: WrongStakeTableUsed) -> Self {
6704                ()
6705            }
6706        }
6707        #[automatically_derived]
6708        #[doc(hidden)]
6709        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6710            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6711                Self
6712            }
6713        }
6714        #[automatically_derived]
6715        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6716            type Parameters<'a> = UnderlyingSolTuple<'a>;
6717            type Token<'a> = <Self::Parameters<
6718                'a,
6719            > as alloy_sol_types::SolType>::Token<'a>;
6720            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6721            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6722            #[inline]
6723            fn new<'a>(
6724                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6725            ) -> Self {
6726                tuple.into()
6727            }
6728            #[inline]
6729            fn tokenize(&self) -> Self::Token<'_> {
6730                ()
6731            }
6732            #[inline]
6733            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6734                <Self::Parameters<
6735                    '_,
6736                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6737                    .map(Self::new)
6738            }
6739        }
6740    };
6741    #[derive(serde::Serialize, serde::Deserialize)]
6742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6743    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6744```solidity
6745event Initialized(uint64 version);
6746```*/
6747    #[allow(
6748        non_camel_case_types,
6749        non_snake_case,
6750        clippy::pub_underscore_fields,
6751        clippy::style
6752    )]
6753    #[derive(Clone)]
6754    pub struct Initialized {
6755        #[allow(missing_docs)]
6756        pub version: u64,
6757    }
6758    #[allow(
6759        non_camel_case_types,
6760        non_snake_case,
6761        clippy::pub_underscore_fields,
6762        clippy::style
6763    )]
6764    const _: () = {
6765        use alloy::sol_types as alloy_sol_types;
6766        #[automatically_derived]
6767        impl alloy_sol_types::SolEvent for Initialized {
6768            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6769            type DataToken<'a> = <Self::DataTuple<
6770                'a,
6771            > as alloy_sol_types::SolType>::Token<'a>;
6772            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6773            const SIGNATURE: &'static str = "Initialized(uint64)";
6774            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6775                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6776                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6777                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6778            ]);
6779            const ANONYMOUS: bool = false;
6780            #[allow(unused_variables)]
6781            #[inline]
6782            fn new(
6783                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6784                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6785            ) -> Self {
6786                Self { version: data.0 }
6787            }
6788            #[inline]
6789            fn check_signature(
6790                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6791            ) -> alloy_sol_types::Result<()> {
6792                if topics.0 != Self::SIGNATURE_HASH {
6793                    return Err(
6794                        alloy_sol_types::Error::invalid_event_signature_hash(
6795                            Self::SIGNATURE,
6796                            topics.0,
6797                            Self::SIGNATURE_HASH,
6798                        ),
6799                    );
6800                }
6801                Ok(())
6802            }
6803            #[inline]
6804            fn tokenize_body(&self) -> Self::DataToken<'_> {
6805                (
6806                    <alloy::sol_types::sol_data::Uint<
6807                        64,
6808                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6809                )
6810            }
6811            #[inline]
6812            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6813                (Self::SIGNATURE_HASH.into(),)
6814            }
6815            #[inline]
6816            fn encode_topics_raw(
6817                &self,
6818                out: &mut [alloy_sol_types::abi::token::WordToken],
6819            ) -> alloy_sol_types::Result<()> {
6820                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6821                    return Err(alloy_sol_types::Error::Overrun);
6822                }
6823                out[0usize] = alloy_sol_types::abi::token::WordToken(
6824                    Self::SIGNATURE_HASH,
6825                );
6826                Ok(())
6827            }
6828        }
6829        #[automatically_derived]
6830        impl alloy_sol_types::private::IntoLogData for Initialized {
6831            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6832                From::from(self)
6833            }
6834            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6835                From::from(&self)
6836            }
6837        }
6838        #[automatically_derived]
6839        impl From<&Initialized> for alloy_sol_types::private::LogData {
6840            #[inline]
6841            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6842                alloy_sol_types::SolEvent::encode_log_data(this)
6843            }
6844        }
6845    };
6846    #[derive(serde::Serialize, serde::Deserialize)]
6847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6848    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6849```solidity
6850event NewEpoch(uint64 epoch);
6851```*/
6852    #[allow(
6853        non_camel_case_types,
6854        non_snake_case,
6855        clippy::pub_underscore_fields,
6856        clippy::style
6857    )]
6858    #[derive(Clone)]
6859    pub struct NewEpoch {
6860        #[allow(missing_docs)]
6861        pub epoch: u64,
6862    }
6863    #[allow(
6864        non_camel_case_types,
6865        non_snake_case,
6866        clippy::pub_underscore_fields,
6867        clippy::style
6868    )]
6869    const _: () = {
6870        use alloy::sol_types as alloy_sol_types;
6871        #[automatically_derived]
6872        impl alloy_sol_types::SolEvent for NewEpoch {
6873            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6874            type DataToken<'a> = <Self::DataTuple<
6875                'a,
6876            > as alloy_sol_types::SolType>::Token<'a>;
6877            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6878            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6879            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6880                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6881                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6882                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6883            ]);
6884            const ANONYMOUS: bool = false;
6885            #[allow(unused_variables)]
6886            #[inline]
6887            fn new(
6888                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6889                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6890            ) -> Self {
6891                Self { epoch: data.0 }
6892            }
6893            #[inline]
6894            fn check_signature(
6895                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6896            ) -> alloy_sol_types::Result<()> {
6897                if topics.0 != Self::SIGNATURE_HASH {
6898                    return Err(
6899                        alloy_sol_types::Error::invalid_event_signature_hash(
6900                            Self::SIGNATURE,
6901                            topics.0,
6902                            Self::SIGNATURE_HASH,
6903                        ),
6904                    );
6905                }
6906                Ok(())
6907            }
6908            #[inline]
6909            fn tokenize_body(&self) -> Self::DataToken<'_> {
6910                (
6911                    <alloy::sol_types::sol_data::Uint<
6912                        64,
6913                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6914                )
6915            }
6916            #[inline]
6917            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6918                (Self::SIGNATURE_HASH.into(),)
6919            }
6920            #[inline]
6921            fn encode_topics_raw(
6922                &self,
6923                out: &mut [alloy_sol_types::abi::token::WordToken],
6924            ) -> alloy_sol_types::Result<()> {
6925                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6926                    return Err(alloy_sol_types::Error::Overrun);
6927                }
6928                out[0usize] = alloy_sol_types::abi::token::WordToken(
6929                    Self::SIGNATURE_HASH,
6930                );
6931                Ok(())
6932            }
6933        }
6934        #[automatically_derived]
6935        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6936            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6937                From::from(self)
6938            }
6939            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6940                From::from(&self)
6941            }
6942        }
6943        #[automatically_derived]
6944        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6945            #[inline]
6946            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6947                alloy_sol_types::SolEvent::encode_log_data(this)
6948            }
6949        }
6950    };
6951    #[derive(serde::Serialize, serde::Deserialize)]
6952    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6953    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6954```solidity
6955event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6956```*/
6957    #[allow(
6958        non_camel_case_types,
6959        non_snake_case,
6960        clippy::pub_underscore_fields,
6961        clippy::style
6962    )]
6963    #[derive(Clone)]
6964    pub struct NewState {
6965        #[allow(missing_docs)]
6966        pub viewNum: u64,
6967        #[allow(missing_docs)]
6968        pub blockHeight: u64,
6969        #[allow(missing_docs)]
6970        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6971    }
6972    #[allow(
6973        non_camel_case_types,
6974        non_snake_case,
6975        clippy::pub_underscore_fields,
6976        clippy::style
6977    )]
6978    const _: () = {
6979        use alloy::sol_types as alloy_sol_types;
6980        #[automatically_derived]
6981        impl alloy_sol_types::SolEvent for NewState {
6982            type DataTuple<'a> = (BN254::ScalarField,);
6983            type DataToken<'a> = <Self::DataTuple<
6984                'a,
6985            > as alloy_sol_types::SolType>::Token<'a>;
6986            type TopicList = (
6987                alloy_sol_types::sol_data::FixedBytes<32>,
6988                alloy::sol_types::sol_data::Uint<64>,
6989                alloy::sol_types::sol_data::Uint<64>,
6990            );
6991            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6992            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6993                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6994                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6995                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6996            ]);
6997            const ANONYMOUS: bool = false;
6998            #[allow(unused_variables)]
6999            #[inline]
7000            fn new(
7001                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7002                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7003            ) -> Self {
7004                Self {
7005                    viewNum: topics.1,
7006                    blockHeight: topics.2,
7007                    blockCommRoot: data.0,
7008                }
7009            }
7010            #[inline]
7011            fn check_signature(
7012                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7013            ) -> alloy_sol_types::Result<()> {
7014                if topics.0 != Self::SIGNATURE_HASH {
7015                    return Err(
7016                        alloy_sol_types::Error::invalid_event_signature_hash(
7017                            Self::SIGNATURE,
7018                            topics.0,
7019                            Self::SIGNATURE_HASH,
7020                        ),
7021                    );
7022                }
7023                Ok(())
7024            }
7025            #[inline]
7026            fn tokenize_body(&self) -> Self::DataToken<'_> {
7027                (
7028                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7029                        &self.blockCommRoot,
7030                    ),
7031                )
7032            }
7033            #[inline]
7034            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7035                (
7036                    Self::SIGNATURE_HASH.into(),
7037                    self.viewNum.clone(),
7038                    self.blockHeight.clone(),
7039                )
7040            }
7041            #[inline]
7042            fn encode_topics_raw(
7043                &self,
7044                out: &mut [alloy_sol_types::abi::token::WordToken],
7045            ) -> alloy_sol_types::Result<()> {
7046                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7047                    return Err(alloy_sol_types::Error::Overrun);
7048                }
7049                out[0usize] = alloy_sol_types::abi::token::WordToken(
7050                    Self::SIGNATURE_HASH,
7051                );
7052                out[1usize] = <alloy::sol_types::sol_data::Uint<
7053                    64,
7054                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7055                out[2usize] = <alloy::sol_types::sol_data::Uint<
7056                    64,
7057                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7058                Ok(())
7059            }
7060        }
7061        #[automatically_derived]
7062        impl alloy_sol_types::private::IntoLogData for NewState {
7063            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7064                From::from(self)
7065            }
7066            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7067                From::from(&self)
7068            }
7069        }
7070        #[automatically_derived]
7071        impl From<&NewState> for alloy_sol_types::private::LogData {
7072            #[inline]
7073            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7074                alloy_sol_types::SolEvent::encode_log_data(this)
7075            }
7076        }
7077    };
7078    #[derive(serde::Serialize, serde::Deserialize)]
7079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7080    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7081```solidity
7082event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7083```*/
7084    #[allow(
7085        non_camel_case_types,
7086        non_snake_case,
7087        clippy::pub_underscore_fields,
7088        clippy::style
7089    )]
7090    #[derive(Clone)]
7091    pub struct OwnershipTransferred {
7092        #[allow(missing_docs)]
7093        pub previousOwner: alloy::sol_types::private::Address,
7094        #[allow(missing_docs)]
7095        pub newOwner: alloy::sol_types::private::Address,
7096    }
7097    #[allow(
7098        non_camel_case_types,
7099        non_snake_case,
7100        clippy::pub_underscore_fields,
7101        clippy::style
7102    )]
7103    const _: () = {
7104        use alloy::sol_types as alloy_sol_types;
7105        #[automatically_derived]
7106        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7107            type DataTuple<'a> = ();
7108            type DataToken<'a> = <Self::DataTuple<
7109                'a,
7110            > as alloy_sol_types::SolType>::Token<'a>;
7111            type TopicList = (
7112                alloy_sol_types::sol_data::FixedBytes<32>,
7113                alloy::sol_types::sol_data::Address,
7114                alloy::sol_types::sol_data::Address,
7115            );
7116            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7117            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7118                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7119                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7120                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7121            ]);
7122            const ANONYMOUS: bool = false;
7123            #[allow(unused_variables)]
7124            #[inline]
7125            fn new(
7126                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7127                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7128            ) -> Self {
7129                Self {
7130                    previousOwner: topics.1,
7131                    newOwner: topics.2,
7132                }
7133            }
7134            #[inline]
7135            fn check_signature(
7136                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7137            ) -> alloy_sol_types::Result<()> {
7138                if topics.0 != Self::SIGNATURE_HASH {
7139                    return Err(
7140                        alloy_sol_types::Error::invalid_event_signature_hash(
7141                            Self::SIGNATURE,
7142                            topics.0,
7143                            Self::SIGNATURE_HASH,
7144                        ),
7145                    );
7146                }
7147                Ok(())
7148            }
7149            #[inline]
7150            fn tokenize_body(&self) -> Self::DataToken<'_> {
7151                ()
7152            }
7153            #[inline]
7154            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7155                (
7156                    Self::SIGNATURE_HASH.into(),
7157                    self.previousOwner.clone(),
7158                    self.newOwner.clone(),
7159                )
7160            }
7161            #[inline]
7162            fn encode_topics_raw(
7163                &self,
7164                out: &mut [alloy_sol_types::abi::token::WordToken],
7165            ) -> alloy_sol_types::Result<()> {
7166                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7167                    return Err(alloy_sol_types::Error::Overrun);
7168                }
7169                out[0usize] = alloy_sol_types::abi::token::WordToken(
7170                    Self::SIGNATURE_HASH,
7171                );
7172                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7173                    &self.previousOwner,
7174                );
7175                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7176                    &self.newOwner,
7177                );
7178                Ok(())
7179            }
7180        }
7181        #[automatically_derived]
7182        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7183            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7184                From::from(self)
7185            }
7186            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7187                From::from(&self)
7188            }
7189        }
7190        #[automatically_derived]
7191        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7192            #[inline]
7193            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7194                alloy_sol_types::SolEvent::encode_log_data(this)
7195            }
7196        }
7197    };
7198    #[derive(serde::Serialize, serde::Deserialize)]
7199    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7200    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7201```solidity
7202event PermissionedProverNotRequired();
7203```*/
7204    #[allow(
7205        non_camel_case_types,
7206        non_snake_case,
7207        clippy::pub_underscore_fields,
7208        clippy::style
7209    )]
7210    #[derive(Clone)]
7211    pub struct PermissionedProverNotRequired;
7212    #[allow(
7213        non_camel_case_types,
7214        non_snake_case,
7215        clippy::pub_underscore_fields,
7216        clippy::style
7217    )]
7218    const _: () = {
7219        use alloy::sol_types as alloy_sol_types;
7220        #[automatically_derived]
7221        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7222            type DataTuple<'a> = ();
7223            type DataToken<'a> = <Self::DataTuple<
7224                'a,
7225            > as alloy_sol_types::SolType>::Token<'a>;
7226            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7227            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7228            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7229                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7230                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7231                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7232            ]);
7233            const ANONYMOUS: bool = false;
7234            #[allow(unused_variables)]
7235            #[inline]
7236            fn new(
7237                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7238                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7239            ) -> Self {
7240                Self {}
7241            }
7242            #[inline]
7243            fn check_signature(
7244                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7245            ) -> alloy_sol_types::Result<()> {
7246                if topics.0 != Self::SIGNATURE_HASH {
7247                    return Err(
7248                        alloy_sol_types::Error::invalid_event_signature_hash(
7249                            Self::SIGNATURE,
7250                            topics.0,
7251                            Self::SIGNATURE_HASH,
7252                        ),
7253                    );
7254                }
7255                Ok(())
7256            }
7257            #[inline]
7258            fn tokenize_body(&self) -> Self::DataToken<'_> {
7259                ()
7260            }
7261            #[inline]
7262            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7263                (Self::SIGNATURE_HASH.into(),)
7264            }
7265            #[inline]
7266            fn encode_topics_raw(
7267                &self,
7268                out: &mut [alloy_sol_types::abi::token::WordToken],
7269            ) -> alloy_sol_types::Result<()> {
7270                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7271                    return Err(alloy_sol_types::Error::Overrun);
7272                }
7273                out[0usize] = alloy_sol_types::abi::token::WordToken(
7274                    Self::SIGNATURE_HASH,
7275                );
7276                Ok(())
7277            }
7278        }
7279        #[automatically_derived]
7280        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7281            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7282                From::from(self)
7283            }
7284            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7285                From::from(&self)
7286            }
7287        }
7288        #[automatically_derived]
7289        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7290            #[inline]
7291            fn from(
7292                this: &PermissionedProverNotRequired,
7293            ) -> alloy_sol_types::private::LogData {
7294                alloy_sol_types::SolEvent::encode_log_data(this)
7295            }
7296        }
7297    };
7298    #[derive(serde::Serialize, serde::Deserialize)]
7299    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7300    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7301```solidity
7302event PermissionedProverRequired(address permissionedProver);
7303```*/
7304    #[allow(
7305        non_camel_case_types,
7306        non_snake_case,
7307        clippy::pub_underscore_fields,
7308        clippy::style
7309    )]
7310    #[derive(Clone)]
7311    pub struct PermissionedProverRequired {
7312        #[allow(missing_docs)]
7313        pub permissionedProver: alloy::sol_types::private::Address,
7314    }
7315    #[allow(
7316        non_camel_case_types,
7317        non_snake_case,
7318        clippy::pub_underscore_fields,
7319        clippy::style
7320    )]
7321    const _: () = {
7322        use alloy::sol_types as alloy_sol_types;
7323        #[automatically_derived]
7324        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7325            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7326            type DataToken<'a> = <Self::DataTuple<
7327                'a,
7328            > as alloy_sol_types::SolType>::Token<'a>;
7329            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7330            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7331            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7332                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7333                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7334                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7335            ]);
7336            const ANONYMOUS: bool = false;
7337            #[allow(unused_variables)]
7338            #[inline]
7339            fn new(
7340                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7341                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7342            ) -> Self {
7343                Self { permissionedProver: data.0 }
7344            }
7345            #[inline]
7346            fn check_signature(
7347                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7348            ) -> alloy_sol_types::Result<()> {
7349                if topics.0 != Self::SIGNATURE_HASH {
7350                    return Err(
7351                        alloy_sol_types::Error::invalid_event_signature_hash(
7352                            Self::SIGNATURE,
7353                            topics.0,
7354                            Self::SIGNATURE_HASH,
7355                        ),
7356                    );
7357                }
7358                Ok(())
7359            }
7360            #[inline]
7361            fn tokenize_body(&self) -> Self::DataToken<'_> {
7362                (
7363                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7364                        &self.permissionedProver,
7365                    ),
7366                )
7367            }
7368            #[inline]
7369            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7370                (Self::SIGNATURE_HASH.into(),)
7371            }
7372            #[inline]
7373            fn encode_topics_raw(
7374                &self,
7375                out: &mut [alloy_sol_types::abi::token::WordToken],
7376            ) -> alloy_sol_types::Result<()> {
7377                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7378                    return Err(alloy_sol_types::Error::Overrun);
7379                }
7380                out[0usize] = alloy_sol_types::abi::token::WordToken(
7381                    Self::SIGNATURE_HASH,
7382                );
7383                Ok(())
7384            }
7385        }
7386        #[automatically_derived]
7387        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7388            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7389                From::from(self)
7390            }
7391            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7392                From::from(&self)
7393            }
7394        }
7395        #[automatically_derived]
7396        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7397            #[inline]
7398            fn from(
7399                this: &PermissionedProverRequired,
7400            ) -> alloy_sol_types::private::LogData {
7401                alloy_sol_types::SolEvent::encode_log_data(this)
7402            }
7403        }
7404    };
7405    #[derive(serde::Serialize, serde::Deserialize)]
7406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7407    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7408```solidity
7409event Upgrade(address implementation);
7410```*/
7411    #[allow(
7412        non_camel_case_types,
7413        non_snake_case,
7414        clippy::pub_underscore_fields,
7415        clippy::style
7416    )]
7417    #[derive(Clone)]
7418    pub struct Upgrade {
7419        #[allow(missing_docs)]
7420        pub implementation: alloy::sol_types::private::Address,
7421    }
7422    #[allow(
7423        non_camel_case_types,
7424        non_snake_case,
7425        clippy::pub_underscore_fields,
7426        clippy::style
7427    )]
7428    const _: () = {
7429        use alloy::sol_types as alloy_sol_types;
7430        #[automatically_derived]
7431        impl alloy_sol_types::SolEvent for Upgrade {
7432            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7433            type DataToken<'a> = <Self::DataTuple<
7434                'a,
7435            > as alloy_sol_types::SolType>::Token<'a>;
7436            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7437            const SIGNATURE: &'static str = "Upgrade(address)";
7438            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7439                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7440                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7441                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7442            ]);
7443            const ANONYMOUS: bool = false;
7444            #[allow(unused_variables)]
7445            #[inline]
7446            fn new(
7447                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7448                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7449            ) -> Self {
7450                Self { implementation: data.0 }
7451            }
7452            #[inline]
7453            fn check_signature(
7454                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7455            ) -> alloy_sol_types::Result<()> {
7456                if topics.0 != Self::SIGNATURE_HASH {
7457                    return Err(
7458                        alloy_sol_types::Error::invalid_event_signature_hash(
7459                            Self::SIGNATURE,
7460                            topics.0,
7461                            Self::SIGNATURE_HASH,
7462                        ),
7463                    );
7464                }
7465                Ok(())
7466            }
7467            #[inline]
7468            fn tokenize_body(&self) -> Self::DataToken<'_> {
7469                (
7470                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7471                        &self.implementation,
7472                    ),
7473                )
7474            }
7475            #[inline]
7476            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7477                (Self::SIGNATURE_HASH.into(),)
7478            }
7479            #[inline]
7480            fn encode_topics_raw(
7481                &self,
7482                out: &mut [alloy_sol_types::abi::token::WordToken],
7483            ) -> alloy_sol_types::Result<()> {
7484                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7485                    return Err(alloy_sol_types::Error::Overrun);
7486                }
7487                out[0usize] = alloy_sol_types::abi::token::WordToken(
7488                    Self::SIGNATURE_HASH,
7489                );
7490                Ok(())
7491            }
7492        }
7493        #[automatically_derived]
7494        impl alloy_sol_types::private::IntoLogData for Upgrade {
7495            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7496                From::from(self)
7497            }
7498            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7499                From::from(&self)
7500            }
7501        }
7502        #[automatically_derived]
7503        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7504            #[inline]
7505            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7506                alloy_sol_types::SolEvent::encode_log_data(this)
7507            }
7508        }
7509    };
7510    #[derive(serde::Serialize, serde::Deserialize)]
7511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7512    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7513```solidity
7514event Upgraded(address indexed implementation);
7515```*/
7516    #[allow(
7517        non_camel_case_types,
7518        non_snake_case,
7519        clippy::pub_underscore_fields,
7520        clippy::style
7521    )]
7522    #[derive(Clone)]
7523    pub struct Upgraded {
7524        #[allow(missing_docs)]
7525        pub implementation: alloy::sol_types::private::Address,
7526    }
7527    #[allow(
7528        non_camel_case_types,
7529        non_snake_case,
7530        clippy::pub_underscore_fields,
7531        clippy::style
7532    )]
7533    const _: () = {
7534        use alloy::sol_types as alloy_sol_types;
7535        #[automatically_derived]
7536        impl alloy_sol_types::SolEvent for Upgraded {
7537            type DataTuple<'a> = ();
7538            type DataToken<'a> = <Self::DataTuple<
7539                'a,
7540            > as alloy_sol_types::SolType>::Token<'a>;
7541            type TopicList = (
7542                alloy_sol_types::sol_data::FixedBytes<32>,
7543                alloy::sol_types::sol_data::Address,
7544            );
7545            const SIGNATURE: &'static str = "Upgraded(address)";
7546            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7547                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7548                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7549                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7550            ]);
7551            const ANONYMOUS: bool = false;
7552            #[allow(unused_variables)]
7553            #[inline]
7554            fn new(
7555                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7556                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7557            ) -> Self {
7558                Self { implementation: topics.1 }
7559            }
7560            #[inline]
7561            fn check_signature(
7562                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7563            ) -> alloy_sol_types::Result<()> {
7564                if topics.0 != Self::SIGNATURE_HASH {
7565                    return Err(
7566                        alloy_sol_types::Error::invalid_event_signature_hash(
7567                            Self::SIGNATURE,
7568                            topics.0,
7569                            Self::SIGNATURE_HASH,
7570                        ),
7571                    );
7572                }
7573                Ok(())
7574            }
7575            #[inline]
7576            fn tokenize_body(&self) -> Self::DataToken<'_> {
7577                ()
7578            }
7579            #[inline]
7580            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7581                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7582            }
7583            #[inline]
7584            fn encode_topics_raw(
7585                &self,
7586                out: &mut [alloy_sol_types::abi::token::WordToken],
7587            ) -> alloy_sol_types::Result<()> {
7588                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7589                    return Err(alloy_sol_types::Error::Overrun);
7590                }
7591                out[0usize] = alloy_sol_types::abi::token::WordToken(
7592                    Self::SIGNATURE_HASH,
7593                );
7594                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7595                    &self.implementation,
7596                );
7597                Ok(())
7598            }
7599        }
7600        #[automatically_derived]
7601        impl alloy_sol_types::private::IntoLogData for Upgraded {
7602            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7603                From::from(self)
7604            }
7605            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7606                From::from(&self)
7607            }
7608        }
7609        #[automatically_derived]
7610        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7611            #[inline]
7612            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7613                alloy_sol_types::SolEvent::encode_log_data(this)
7614            }
7615        }
7616    };
7617    #[derive(serde::Serialize, serde::Deserialize)]
7618    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7619    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7620```solidity
7621function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7622```*/
7623    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7624    #[derive(Clone)]
7625    pub struct UPGRADE_INTERFACE_VERSIONCall;
7626    #[derive(serde::Serialize, serde::Deserialize)]
7627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7628    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7630    #[derive(Clone)]
7631    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7632        #[allow(missing_docs)]
7633        pub _0: alloy::sol_types::private::String,
7634    }
7635    #[allow(
7636        non_camel_case_types,
7637        non_snake_case,
7638        clippy::pub_underscore_fields,
7639        clippy::style
7640    )]
7641    const _: () = {
7642        use alloy::sol_types as alloy_sol_types;
7643        {
7644            #[doc(hidden)]
7645            type UnderlyingSolTuple<'a> = ();
7646            #[doc(hidden)]
7647            type UnderlyingRustTuple<'a> = ();
7648            #[cfg(test)]
7649            #[allow(dead_code, unreachable_patterns)]
7650            fn _type_assertion(
7651                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7652            ) {
7653                match _t {
7654                    alloy_sol_types::private::AssertTypeEq::<
7655                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7656                    >(_) => {}
7657                }
7658            }
7659            #[automatically_derived]
7660            #[doc(hidden)]
7661            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7662            for UnderlyingRustTuple<'_> {
7663                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7664                    ()
7665                }
7666            }
7667            #[automatically_derived]
7668            #[doc(hidden)]
7669            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7670            for UPGRADE_INTERFACE_VERSIONCall {
7671                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7672                    Self
7673                }
7674            }
7675        }
7676        {
7677            #[doc(hidden)]
7678            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7679            #[doc(hidden)]
7680            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7681            #[cfg(test)]
7682            #[allow(dead_code, unreachable_patterns)]
7683            fn _type_assertion(
7684                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7685            ) {
7686                match _t {
7687                    alloy_sol_types::private::AssertTypeEq::<
7688                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7689                    >(_) => {}
7690                }
7691            }
7692            #[automatically_derived]
7693            #[doc(hidden)]
7694            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7695            for UnderlyingRustTuple<'_> {
7696                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7697                    (value._0,)
7698                }
7699            }
7700            #[automatically_derived]
7701            #[doc(hidden)]
7702            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7703            for UPGRADE_INTERFACE_VERSIONReturn {
7704                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7705                    Self { _0: tuple.0 }
7706                }
7707            }
7708        }
7709        #[automatically_derived]
7710        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7711            type Parameters<'a> = ();
7712            type Token<'a> = <Self::Parameters<
7713                'a,
7714            > as alloy_sol_types::SolType>::Token<'a>;
7715            type Return = alloy::sol_types::private::String;
7716            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7717            type ReturnToken<'a> = <Self::ReturnTuple<
7718                'a,
7719            > as alloy_sol_types::SolType>::Token<'a>;
7720            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7721            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7722            #[inline]
7723            fn new<'a>(
7724                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7725            ) -> Self {
7726                tuple.into()
7727            }
7728            #[inline]
7729            fn tokenize(&self) -> Self::Token<'_> {
7730                ()
7731            }
7732            #[inline]
7733            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7734                (
7735                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7736                        ret,
7737                    ),
7738                )
7739            }
7740            #[inline]
7741            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7742                <Self::ReturnTuple<
7743                    '_,
7744                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7745                    .map(|r| {
7746                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7747                        r._0
7748                    })
7749            }
7750            #[inline]
7751            fn abi_decode_returns_validate(
7752                data: &[u8],
7753            ) -> alloy_sol_types::Result<Self::Return> {
7754                <Self::ReturnTuple<
7755                    '_,
7756                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7757                    .map(|r| {
7758                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7759                        r._0
7760                    })
7761            }
7762        }
7763    };
7764    #[derive(serde::Serialize, serde::Deserialize)]
7765    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7766    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7767```solidity
7768function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7769```*/
7770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7771    #[derive(Clone)]
7772    pub struct _getVkCall;
7773    #[derive(serde::Serialize, serde::Deserialize)]
7774    #[derive()]
7775    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7776    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7777    #[derive(Clone)]
7778    pub struct _getVkReturn {
7779        #[allow(missing_docs)]
7780        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7781    }
7782    #[allow(
7783        non_camel_case_types,
7784        non_snake_case,
7785        clippy::pub_underscore_fields,
7786        clippy::style
7787    )]
7788    const _: () = {
7789        use alloy::sol_types as alloy_sol_types;
7790        {
7791            #[doc(hidden)]
7792            type UnderlyingSolTuple<'a> = ();
7793            #[doc(hidden)]
7794            type UnderlyingRustTuple<'a> = ();
7795            #[cfg(test)]
7796            #[allow(dead_code, unreachable_patterns)]
7797            fn _type_assertion(
7798                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7799            ) {
7800                match _t {
7801                    alloy_sol_types::private::AssertTypeEq::<
7802                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7803                    >(_) => {}
7804                }
7805            }
7806            #[automatically_derived]
7807            #[doc(hidden)]
7808            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7809                fn from(value: _getVkCall) -> Self {
7810                    ()
7811                }
7812            }
7813            #[automatically_derived]
7814            #[doc(hidden)]
7815            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7816                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7817                    Self
7818                }
7819            }
7820        }
7821        {
7822            #[doc(hidden)]
7823            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7824            #[doc(hidden)]
7825            type UnderlyingRustTuple<'a> = (
7826                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7827            );
7828            #[cfg(test)]
7829            #[allow(dead_code, unreachable_patterns)]
7830            fn _type_assertion(
7831                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7832            ) {
7833                match _t {
7834                    alloy_sol_types::private::AssertTypeEq::<
7835                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7836                    >(_) => {}
7837                }
7838            }
7839            #[automatically_derived]
7840            #[doc(hidden)]
7841            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7842                fn from(value: _getVkReturn) -> Self {
7843                    (value.vk,)
7844                }
7845            }
7846            #[automatically_derived]
7847            #[doc(hidden)]
7848            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7849                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7850                    Self { vk: tuple.0 }
7851                }
7852            }
7853        }
7854        #[automatically_derived]
7855        impl alloy_sol_types::SolCall for _getVkCall {
7856            type Parameters<'a> = ();
7857            type Token<'a> = <Self::Parameters<
7858                'a,
7859            > as alloy_sol_types::SolType>::Token<'a>;
7860            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7861            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7862            type ReturnToken<'a> = <Self::ReturnTuple<
7863                'a,
7864            > as alloy_sol_types::SolType>::Token<'a>;
7865            const SIGNATURE: &'static str = "_getVk()";
7866            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7867            #[inline]
7868            fn new<'a>(
7869                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7870            ) -> Self {
7871                tuple.into()
7872            }
7873            #[inline]
7874            fn tokenize(&self) -> Self::Token<'_> {
7875                ()
7876            }
7877            #[inline]
7878            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7879                (
7880                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7881                        ret,
7882                    ),
7883                )
7884            }
7885            #[inline]
7886            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7887                <Self::ReturnTuple<
7888                    '_,
7889                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7890                    .map(|r| {
7891                        let r: _getVkReturn = r.into();
7892                        r.vk
7893                    })
7894            }
7895            #[inline]
7896            fn abi_decode_returns_validate(
7897                data: &[u8],
7898            ) -> alloy_sol_types::Result<Self::Return> {
7899                <Self::ReturnTuple<
7900                    '_,
7901                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7902                    .map(|r| {
7903                        let r: _getVkReturn = r.into();
7904                        r.vk
7905                    })
7906            }
7907        }
7908    };
7909    #[derive(serde::Serialize, serde::Deserialize)]
7910    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7911    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7912```solidity
7913function blocksPerEpoch() external view returns (uint64);
7914```*/
7915    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7916    #[derive(Clone)]
7917    pub struct blocksPerEpochCall;
7918    #[derive(serde::Serialize, serde::Deserialize)]
7919    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7920    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7921    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7922    #[derive(Clone)]
7923    pub struct blocksPerEpochReturn {
7924        #[allow(missing_docs)]
7925        pub _0: u64,
7926    }
7927    #[allow(
7928        non_camel_case_types,
7929        non_snake_case,
7930        clippy::pub_underscore_fields,
7931        clippy::style
7932    )]
7933    const _: () = {
7934        use alloy::sol_types as alloy_sol_types;
7935        {
7936            #[doc(hidden)]
7937            type UnderlyingSolTuple<'a> = ();
7938            #[doc(hidden)]
7939            type UnderlyingRustTuple<'a> = ();
7940            #[cfg(test)]
7941            #[allow(dead_code, unreachable_patterns)]
7942            fn _type_assertion(
7943                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7944            ) {
7945                match _t {
7946                    alloy_sol_types::private::AssertTypeEq::<
7947                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7948                    >(_) => {}
7949                }
7950            }
7951            #[automatically_derived]
7952            #[doc(hidden)]
7953            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7954                fn from(value: blocksPerEpochCall) -> Self {
7955                    ()
7956                }
7957            }
7958            #[automatically_derived]
7959            #[doc(hidden)]
7960            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7961                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7962                    Self
7963                }
7964            }
7965        }
7966        {
7967            #[doc(hidden)]
7968            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7969            #[doc(hidden)]
7970            type UnderlyingRustTuple<'a> = (u64,);
7971            #[cfg(test)]
7972            #[allow(dead_code, unreachable_patterns)]
7973            fn _type_assertion(
7974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7975            ) {
7976                match _t {
7977                    alloy_sol_types::private::AssertTypeEq::<
7978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7979                    >(_) => {}
7980                }
7981            }
7982            #[automatically_derived]
7983            #[doc(hidden)]
7984            impl ::core::convert::From<blocksPerEpochReturn>
7985            for UnderlyingRustTuple<'_> {
7986                fn from(value: blocksPerEpochReturn) -> Self {
7987                    (value._0,)
7988                }
7989            }
7990            #[automatically_derived]
7991            #[doc(hidden)]
7992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7993            for blocksPerEpochReturn {
7994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7995                    Self { _0: tuple.0 }
7996                }
7997            }
7998        }
7999        #[automatically_derived]
8000        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8001            type Parameters<'a> = ();
8002            type Token<'a> = <Self::Parameters<
8003                'a,
8004            > as alloy_sol_types::SolType>::Token<'a>;
8005            type Return = u64;
8006            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8007            type ReturnToken<'a> = <Self::ReturnTuple<
8008                'a,
8009            > as alloy_sol_types::SolType>::Token<'a>;
8010            const SIGNATURE: &'static str = "blocksPerEpoch()";
8011            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8012            #[inline]
8013            fn new<'a>(
8014                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8015            ) -> Self {
8016                tuple.into()
8017            }
8018            #[inline]
8019            fn tokenize(&self) -> Self::Token<'_> {
8020                ()
8021            }
8022            #[inline]
8023            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8024                (
8025                    <alloy::sol_types::sol_data::Uint<
8026                        64,
8027                    > as alloy_sol_types::SolType>::tokenize(ret),
8028                )
8029            }
8030            #[inline]
8031            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8032                <Self::ReturnTuple<
8033                    '_,
8034                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8035                    .map(|r| {
8036                        let r: blocksPerEpochReturn = r.into();
8037                        r._0
8038                    })
8039            }
8040            #[inline]
8041            fn abi_decode_returns_validate(
8042                data: &[u8],
8043            ) -> alloy_sol_types::Result<Self::Return> {
8044                <Self::ReturnTuple<
8045                    '_,
8046                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8047                    .map(|r| {
8048                        let r: blocksPerEpochReturn = r.into();
8049                        r._0
8050                    })
8051            }
8052        }
8053    };
8054    #[derive(serde::Serialize, serde::Deserialize)]
8055    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8056    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8057```solidity
8058function currentBlockNumber() external view returns (uint256);
8059```*/
8060    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8061    #[derive(Clone)]
8062    pub struct currentBlockNumberCall;
8063    #[derive(serde::Serialize, serde::Deserialize)]
8064    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8065    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8066    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8067    #[derive(Clone)]
8068    pub struct currentBlockNumberReturn {
8069        #[allow(missing_docs)]
8070        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8071    }
8072    #[allow(
8073        non_camel_case_types,
8074        non_snake_case,
8075        clippy::pub_underscore_fields,
8076        clippy::style
8077    )]
8078    const _: () = {
8079        use alloy::sol_types as alloy_sol_types;
8080        {
8081            #[doc(hidden)]
8082            type UnderlyingSolTuple<'a> = ();
8083            #[doc(hidden)]
8084            type UnderlyingRustTuple<'a> = ();
8085            #[cfg(test)]
8086            #[allow(dead_code, unreachable_patterns)]
8087            fn _type_assertion(
8088                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8089            ) {
8090                match _t {
8091                    alloy_sol_types::private::AssertTypeEq::<
8092                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8093                    >(_) => {}
8094                }
8095            }
8096            #[automatically_derived]
8097            #[doc(hidden)]
8098            impl ::core::convert::From<currentBlockNumberCall>
8099            for UnderlyingRustTuple<'_> {
8100                fn from(value: currentBlockNumberCall) -> Self {
8101                    ()
8102                }
8103            }
8104            #[automatically_derived]
8105            #[doc(hidden)]
8106            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8107            for currentBlockNumberCall {
8108                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8109                    Self
8110                }
8111            }
8112        }
8113        {
8114            #[doc(hidden)]
8115            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8116            #[doc(hidden)]
8117            type UnderlyingRustTuple<'a> = (
8118                alloy::sol_types::private::primitives::aliases::U256,
8119            );
8120            #[cfg(test)]
8121            #[allow(dead_code, unreachable_patterns)]
8122            fn _type_assertion(
8123                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8124            ) {
8125                match _t {
8126                    alloy_sol_types::private::AssertTypeEq::<
8127                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8128                    >(_) => {}
8129                }
8130            }
8131            #[automatically_derived]
8132            #[doc(hidden)]
8133            impl ::core::convert::From<currentBlockNumberReturn>
8134            for UnderlyingRustTuple<'_> {
8135                fn from(value: currentBlockNumberReturn) -> Self {
8136                    (value._0,)
8137                }
8138            }
8139            #[automatically_derived]
8140            #[doc(hidden)]
8141            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8142            for currentBlockNumberReturn {
8143                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8144                    Self { _0: tuple.0 }
8145                }
8146            }
8147        }
8148        #[automatically_derived]
8149        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8150            type Parameters<'a> = ();
8151            type Token<'a> = <Self::Parameters<
8152                'a,
8153            > as alloy_sol_types::SolType>::Token<'a>;
8154            type Return = alloy::sol_types::private::primitives::aliases::U256;
8155            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8156            type ReturnToken<'a> = <Self::ReturnTuple<
8157                'a,
8158            > as alloy_sol_types::SolType>::Token<'a>;
8159            const SIGNATURE: &'static str = "currentBlockNumber()";
8160            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8161            #[inline]
8162            fn new<'a>(
8163                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8164            ) -> Self {
8165                tuple.into()
8166            }
8167            #[inline]
8168            fn tokenize(&self) -> Self::Token<'_> {
8169                ()
8170            }
8171            #[inline]
8172            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8173                (
8174                    <alloy::sol_types::sol_data::Uint<
8175                        256,
8176                    > as alloy_sol_types::SolType>::tokenize(ret),
8177                )
8178            }
8179            #[inline]
8180            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8181                <Self::ReturnTuple<
8182                    '_,
8183                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8184                    .map(|r| {
8185                        let r: currentBlockNumberReturn = r.into();
8186                        r._0
8187                    })
8188            }
8189            #[inline]
8190            fn abi_decode_returns_validate(
8191                data: &[u8],
8192            ) -> alloy_sol_types::Result<Self::Return> {
8193                <Self::ReturnTuple<
8194                    '_,
8195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8196                    .map(|r| {
8197                        let r: currentBlockNumberReturn = r.into();
8198                        r._0
8199                    })
8200            }
8201        }
8202    };
8203    #[derive(serde::Serialize, serde::Deserialize)]
8204    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8205    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8206```solidity
8207function currentEpoch() external view returns (uint64);
8208```*/
8209    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8210    #[derive(Clone)]
8211    pub struct currentEpochCall;
8212    #[derive(serde::Serialize, serde::Deserialize)]
8213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8214    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8216    #[derive(Clone)]
8217    pub struct currentEpochReturn {
8218        #[allow(missing_docs)]
8219        pub _0: u64,
8220    }
8221    #[allow(
8222        non_camel_case_types,
8223        non_snake_case,
8224        clippy::pub_underscore_fields,
8225        clippy::style
8226    )]
8227    const _: () = {
8228        use alloy::sol_types as alloy_sol_types;
8229        {
8230            #[doc(hidden)]
8231            type UnderlyingSolTuple<'a> = ();
8232            #[doc(hidden)]
8233            type UnderlyingRustTuple<'a> = ();
8234            #[cfg(test)]
8235            #[allow(dead_code, unreachable_patterns)]
8236            fn _type_assertion(
8237                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8238            ) {
8239                match _t {
8240                    alloy_sol_types::private::AssertTypeEq::<
8241                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8242                    >(_) => {}
8243                }
8244            }
8245            #[automatically_derived]
8246            #[doc(hidden)]
8247            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8248                fn from(value: currentEpochCall) -> Self {
8249                    ()
8250                }
8251            }
8252            #[automatically_derived]
8253            #[doc(hidden)]
8254            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8255                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8256                    Self
8257                }
8258            }
8259        }
8260        {
8261            #[doc(hidden)]
8262            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8263            #[doc(hidden)]
8264            type UnderlyingRustTuple<'a> = (u64,);
8265            #[cfg(test)]
8266            #[allow(dead_code, unreachable_patterns)]
8267            fn _type_assertion(
8268                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8269            ) {
8270                match _t {
8271                    alloy_sol_types::private::AssertTypeEq::<
8272                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8273                    >(_) => {}
8274                }
8275            }
8276            #[automatically_derived]
8277            #[doc(hidden)]
8278            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8279                fn from(value: currentEpochReturn) -> Self {
8280                    (value._0,)
8281                }
8282            }
8283            #[automatically_derived]
8284            #[doc(hidden)]
8285            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8286                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8287                    Self { _0: tuple.0 }
8288                }
8289            }
8290        }
8291        #[automatically_derived]
8292        impl alloy_sol_types::SolCall for currentEpochCall {
8293            type Parameters<'a> = ();
8294            type Token<'a> = <Self::Parameters<
8295                'a,
8296            > as alloy_sol_types::SolType>::Token<'a>;
8297            type Return = u64;
8298            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8299            type ReturnToken<'a> = <Self::ReturnTuple<
8300                'a,
8301            > as alloy_sol_types::SolType>::Token<'a>;
8302            const SIGNATURE: &'static str = "currentEpoch()";
8303            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8304            #[inline]
8305            fn new<'a>(
8306                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8307            ) -> Self {
8308                tuple.into()
8309            }
8310            #[inline]
8311            fn tokenize(&self) -> Self::Token<'_> {
8312                ()
8313            }
8314            #[inline]
8315            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8316                (
8317                    <alloy::sol_types::sol_data::Uint<
8318                        64,
8319                    > as alloy_sol_types::SolType>::tokenize(ret),
8320                )
8321            }
8322            #[inline]
8323            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8324                <Self::ReturnTuple<
8325                    '_,
8326                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8327                    .map(|r| {
8328                        let r: currentEpochReturn = r.into();
8329                        r._0
8330                    })
8331            }
8332            #[inline]
8333            fn abi_decode_returns_validate(
8334                data: &[u8],
8335            ) -> alloy_sol_types::Result<Self::Return> {
8336                <Self::ReturnTuple<
8337                    '_,
8338                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8339                    .map(|r| {
8340                        let r: currentEpochReturn = r.into();
8341                        r._0
8342                    })
8343            }
8344        }
8345    };
8346    #[derive(serde::Serialize, serde::Deserialize)]
8347    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8348    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8349```solidity
8350function disablePermissionedProverMode() external;
8351```*/
8352    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8353    #[derive(Clone)]
8354    pub struct disablePermissionedProverModeCall;
8355    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8357    #[derive(Clone)]
8358    pub struct disablePermissionedProverModeReturn {}
8359    #[allow(
8360        non_camel_case_types,
8361        non_snake_case,
8362        clippy::pub_underscore_fields,
8363        clippy::style
8364    )]
8365    const _: () = {
8366        use alloy::sol_types as alloy_sol_types;
8367        {
8368            #[doc(hidden)]
8369            type UnderlyingSolTuple<'a> = ();
8370            #[doc(hidden)]
8371            type UnderlyingRustTuple<'a> = ();
8372            #[cfg(test)]
8373            #[allow(dead_code, unreachable_patterns)]
8374            fn _type_assertion(
8375                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8376            ) {
8377                match _t {
8378                    alloy_sol_types::private::AssertTypeEq::<
8379                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8380                    >(_) => {}
8381                }
8382            }
8383            #[automatically_derived]
8384            #[doc(hidden)]
8385            impl ::core::convert::From<disablePermissionedProverModeCall>
8386            for UnderlyingRustTuple<'_> {
8387                fn from(value: disablePermissionedProverModeCall) -> Self {
8388                    ()
8389                }
8390            }
8391            #[automatically_derived]
8392            #[doc(hidden)]
8393            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8394            for disablePermissionedProverModeCall {
8395                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8396                    Self
8397                }
8398            }
8399        }
8400        {
8401            #[doc(hidden)]
8402            type UnderlyingSolTuple<'a> = ();
8403            #[doc(hidden)]
8404            type UnderlyingRustTuple<'a> = ();
8405            #[cfg(test)]
8406            #[allow(dead_code, unreachable_patterns)]
8407            fn _type_assertion(
8408                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8409            ) {
8410                match _t {
8411                    alloy_sol_types::private::AssertTypeEq::<
8412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8413                    >(_) => {}
8414                }
8415            }
8416            #[automatically_derived]
8417            #[doc(hidden)]
8418            impl ::core::convert::From<disablePermissionedProverModeReturn>
8419            for UnderlyingRustTuple<'_> {
8420                fn from(value: disablePermissionedProverModeReturn) -> Self {
8421                    ()
8422                }
8423            }
8424            #[automatically_derived]
8425            #[doc(hidden)]
8426            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8427            for disablePermissionedProverModeReturn {
8428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8429                    Self {}
8430                }
8431            }
8432        }
8433        impl disablePermissionedProverModeReturn {
8434            fn _tokenize(
8435                &self,
8436            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8437                '_,
8438            > {
8439                ()
8440            }
8441        }
8442        #[automatically_derived]
8443        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8444            type Parameters<'a> = ();
8445            type Token<'a> = <Self::Parameters<
8446                'a,
8447            > as alloy_sol_types::SolType>::Token<'a>;
8448            type Return = disablePermissionedProverModeReturn;
8449            type ReturnTuple<'a> = ();
8450            type ReturnToken<'a> = <Self::ReturnTuple<
8451                'a,
8452            > as alloy_sol_types::SolType>::Token<'a>;
8453            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8454            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8455            #[inline]
8456            fn new<'a>(
8457                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8458            ) -> Self {
8459                tuple.into()
8460            }
8461            #[inline]
8462            fn tokenize(&self) -> Self::Token<'_> {
8463                ()
8464            }
8465            #[inline]
8466            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8467                disablePermissionedProverModeReturn::_tokenize(ret)
8468            }
8469            #[inline]
8470            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8471                <Self::ReturnTuple<
8472                    '_,
8473                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8474                    .map(Into::into)
8475            }
8476            #[inline]
8477            fn abi_decode_returns_validate(
8478                data: &[u8],
8479            ) -> alloy_sol_types::Result<Self::Return> {
8480                <Self::ReturnTuple<
8481                    '_,
8482                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8483                    .map(Into::into)
8484            }
8485        }
8486    };
8487    #[derive(serde::Serialize, serde::Deserialize)]
8488    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8489    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8490```solidity
8491function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8492```*/
8493    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8494    #[derive(Clone)]
8495    pub struct epochFromBlockNumberCall {
8496        #[allow(missing_docs)]
8497        pub _blockNum: u64,
8498        #[allow(missing_docs)]
8499        pub _blocksPerEpoch: u64,
8500    }
8501    #[derive(serde::Serialize, serde::Deserialize)]
8502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8503    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8504    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8505    #[derive(Clone)]
8506    pub struct epochFromBlockNumberReturn {
8507        #[allow(missing_docs)]
8508        pub _0: u64,
8509    }
8510    #[allow(
8511        non_camel_case_types,
8512        non_snake_case,
8513        clippy::pub_underscore_fields,
8514        clippy::style
8515    )]
8516    const _: () = {
8517        use alloy::sol_types as alloy_sol_types;
8518        {
8519            #[doc(hidden)]
8520            type UnderlyingSolTuple<'a> = (
8521                alloy::sol_types::sol_data::Uint<64>,
8522                alloy::sol_types::sol_data::Uint<64>,
8523            );
8524            #[doc(hidden)]
8525            type UnderlyingRustTuple<'a> = (u64, u64);
8526            #[cfg(test)]
8527            #[allow(dead_code, unreachable_patterns)]
8528            fn _type_assertion(
8529                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8530            ) {
8531                match _t {
8532                    alloy_sol_types::private::AssertTypeEq::<
8533                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8534                    >(_) => {}
8535                }
8536            }
8537            #[automatically_derived]
8538            #[doc(hidden)]
8539            impl ::core::convert::From<epochFromBlockNumberCall>
8540            for UnderlyingRustTuple<'_> {
8541                fn from(value: epochFromBlockNumberCall) -> Self {
8542                    (value._blockNum, value._blocksPerEpoch)
8543                }
8544            }
8545            #[automatically_derived]
8546            #[doc(hidden)]
8547            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8548            for epochFromBlockNumberCall {
8549                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8550                    Self {
8551                        _blockNum: tuple.0,
8552                        _blocksPerEpoch: tuple.1,
8553                    }
8554                }
8555            }
8556        }
8557        {
8558            #[doc(hidden)]
8559            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8560            #[doc(hidden)]
8561            type UnderlyingRustTuple<'a> = (u64,);
8562            #[cfg(test)]
8563            #[allow(dead_code, unreachable_patterns)]
8564            fn _type_assertion(
8565                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8566            ) {
8567                match _t {
8568                    alloy_sol_types::private::AssertTypeEq::<
8569                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8570                    >(_) => {}
8571                }
8572            }
8573            #[automatically_derived]
8574            #[doc(hidden)]
8575            impl ::core::convert::From<epochFromBlockNumberReturn>
8576            for UnderlyingRustTuple<'_> {
8577                fn from(value: epochFromBlockNumberReturn) -> Self {
8578                    (value._0,)
8579                }
8580            }
8581            #[automatically_derived]
8582            #[doc(hidden)]
8583            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8584            for epochFromBlockNumberReturn {
8585                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8586                    Self { _0: tuple.0 }
8587                }
8588            }
8589        }
8590        #[automatically_derived]
8591        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8592            type Parameters<'a> = (
8593                alloy::sol_types::sol_data::Uint<64>,
8594                alloy::sol_types::sol_data::Uint<64>,
8595            );
8596            type Token<'a> = <Self::Parameters<
8597                'a,
8598            > as alloy_sol_types::SolType>::Token<'a>;
8599            type Return = u64;
8600            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8601            type ReturnToken<'a> = <Self::ReturnTuple<
8602                'a,
8603            > as alloy_sol_types::SolType>::Token<'a>;
8604            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8605            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8606            #[inline]
8607            fn new<'a>(
8608                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8609            ) -> Self {
8610                tuple.into()
8611            }
8612            #[inline]
8613            fn tokenize(&self) -> Self::Token<'_> {
8614                (
8615                    <alloy::sol_types::sol_data::Uint<
8616                        64,
8617                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8618                    <alloy::sol_types::sol_data::Uint<
8619                        64,
8620                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8621                )
8622            }
8623            #[inline]
8624            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8625                (
8626                    <alloy::sol_types::sol_data::Uint<
8627                        64,
8628                    > as alloy_sol_types::SolType>::tokenize(ret),
8629                )
8630            }
8631            #[inline]
8632            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8633                <Self::ReturnTuple<
8634                    '_,
8635                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8636                    .map(|r| {
8637                        let r: epochFromBlockNumberReturn = r.into();
8638                        r._0
8639                    })
8640            }
8641            #[inline]
8642            fn abi_decode_returns_validate(
8643                data: &[u8],
8644            ) -> alloy_sol_types::Result<Self::Return> {
8645                <Self::ReturnTuple<
8646                    '_,
8647                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8648                    .map(|r| {
8649                        let r: epochFromBlockNumberReturn = r.into();
8650                        r._0
8651                    })
8652            }
8653        }
8654    };
8655    #[derive(serde::Serialize, serde::Deserialize)]
8656    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8657    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8658```solidity
8659function epochStartBlock() external view returns (uint64);
8660```*/
8661    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8662    #[derive(Clone)]
8663    pub struct epochStartBlockCall;
8664    #[derive(serde::Serialize, serde::Deserialize)]
8665    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8666    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8667    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8668    #[derive(Clone)]
8669    pub struct epochStartBlockReturn {
8670        #[allow(missing_docs)]
8671        pub _0: u64,
8672    }
8673    #[allow(
8674        non_camel_case_types,
8675        non_snake_case,
8676        clippy::pub_underscore_fields,
8677        clippy::style
8678    )]
8679    const _: () = {
8680        use alloy::sol_types as alloy_sol_types;
8681        {
8682            #[doc(hidden)]
8683            type UnderlyingSolTuple<'a> = ();
8684            #[doc(hidden)]
8685            type UnderlyingRustTuple<'a> = ();
8686            #[cfg(test)]
8687            #[allow(dead_code, unreachable_patterns)]
8688            fn _type_assertion(
8689                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8690            ) {
8691                match _t {
8692                    alloy_sol_types::private::AssertTypeEq::<
8693                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8694                    >(_) => {}
8695                }
8696            }
8697            #[automatically_derived]
8698            #[doc(hidden)]
8699            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8700                fn from(value: epochStartBlockCall) -> Self {
8701                    ()
8702                }
8703            }
8704            #[automatically_derived]
8705            #[doc(hidden)]
8706            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8707                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8708                    Self
8709                }
8710            }
8711        }
8712        {
8713            #[doc(hidden)]
8714            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8715            #[doc(hidden)]
8716            type UnderlyingRustTuple<'a> = (u64,);
8717            #[cfg(test)]
8718            #[allow(dead_code, unreachable_patterns)]
8719            fn _type_assertion(
8720                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8721            ) {
8722                match _t {
8723                    alloy_sol_types::private::AssertTypeEq::<
8724                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8725                    >(_) => {}
8726                }
8727            }
8728            #[automatically_derived]
8729            #[doc(hidden)]
8730            impl ::core::convert::From<epochStartBlockReturn>
8731            for UnderlyingRustTuple<'_> {
8732                fn from(value: epochStartBlockReturn) -> Self {
8733                    (value._0,)
8734                }
8735            }
8736            #[automatically_derived]
8737            #[doc(hidden)]
8738            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8739            for epochStartBlockReturn {
8740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8741                    Self { _0: tuple.0 }
8742                }
8743            }
8744        }
8745        #[automatically_derived]
8746        impl alloy_sol_types::SolCall for epochStartBlockCall {
8747            type Parameters<'a> = ();
8748            type Token<'a> = <Self::Parameters<
8749                'a,
8750            > as alloy_sol_types::SolType>::Token<'a>;
8751            type Return = u64;
8752            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8753            type ReturnToken<'a> = <Self::ReturnTuple<
8754                'a,
8755            > as alloy_sol_types::SolType>::Token<'a>;
8756            const SIGNATURE: &'static str = "epochStartBlock()";
8757            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8758            #[inline]
8759            fn new<'a>(
8760                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8761            ) -> Self {
8762                tuple.into()
8763            }
8764            #[inline]
8765            fn tokenize(&self) -> Self::Token<'_> {
8766                ()
8767            }
8768            #[inline]
8769            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8770                (
8771                    <alloy::sol_types::sol_data::Uint<
8772                        64,
8773                    > as alloy_sol_types::SolType>::tokenize(ret),
8774                )
8775            }
8776            #[inline]
8777            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8778                <Self::ReturnTuple<
8779                    '_,
8780                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8781                    .map(|r| {
8782                        let r: epochStartBlockReturn = r.into();
8783                        r._0
8784                    })
8785            }
8786            #[inline]
8787            fn abi_decode_returns_validate(
8788                data: &[u8],
8789            ) -> alloy_sol_types::Result<Self::Return> {
8790                <Self::ReturnTuple<
8791                    '_,
8792                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8793                    .map(|r| {
8794                        let r: epochStartBlockReturn = r.into();
8795                        r._0
8796                    })
8797            }
8798        }
8799    };
8800    #[derive(serde::Serialize, serde::Deserialize)]
8801    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8802    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8803```solidity
8804function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8805```*/
8806    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8807    #[derive(Clone)]
8808    pub struct finalizedStateCall;
8809    #[derive(serde::Serialize, serde::Deserialize)]
8810    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8811    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8812    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8813    #[derive(Clone)]
8814    pub struct finalizedStateReturn {
8815        #[allow(missing_docs)]
8816        pub viewNum: u64,
8817        #[allow(missing_docs)]
8818        pub blockHeight: u64,
8819        #[allow(missing_docs)]
8820        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8821    }
8822    #[allow(
8823        non_camel_case_types,
8824        non_snake_case,
8825        clippy::pub_underscore_fields,
8826        clippy::style
8827    )]
8828    const _: () = {
8829        use alloy::sol_types as alloy_sol_types;
8830        {
8831            #[doc(hidden)]
8832            type UnderlyingSolTuple<'a> = ();
8833            #[doc(hidden)]
8834            type UnderlyingRustTuple<'a> = ();
8835            #[cfg(test)]
8836            #[allow(dead_code, unreachable_patterns)]
8837            fn _type_assertion(
8838                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8839            ) {
8840                match _t {
8841                    alloy_sol_types::private::AssertTypeEq::<
8842                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8843                    >(_) => {}
8844                }
8845            }
8846            #[automatically_derived]
8847            #[doc(hidden)]
8848            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8849                fn from(value: finalizedStateCall) -> Self {
8850                    ()
8851                }
8852            }
8853            #[automatically_derived]
8854            #[doc(hidden)]
8855            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8857                    Self
8858                }
8859            }
8860        }
8861        {
8862            #[doc(hidden)]
8863            type UnderlyingSolTuple<'a> = (
8864                alloy::sol_types::sol_data::Uint<64>,
8865                alloy::sol_types::sol_data::Uint<64>,
8866                BN254::ScalarField,
8867            );
8868            #[doc(hidden)]
8869            type UnderlyingRustTuple<'a> = (
8870                u64,
8871                u64,
8872                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8873            );
8874            #[cfg(test)]
8875            #[allow(dead_code, unreachable_patterns)]
8876            fn _type_assertion(
8877                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8878            ) {
8879                match _t {
8880                    alloy_sol_types::private::AssertTypeEq::<
8881                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8882                    >(_) => {}
8883                }
8884            }
8885            #[automatically_derived]
8886            #[doc(hidden)]
8887            impl ::core::convert::From<finalizedStateReturn>
8888            for UnderlyingRustTuple<'_> {
8889                fn from(value: finalizedStateReturn) -> Self {
8890                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8891                }
8892            }
8893            #[automatically_derived]
8894            #[doc(hidden)]
8895            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8896            for finalizedStateReturn {
8897                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8898                    Self {
8899                        viewNum: tuple.0,
8900                        blockHeight: tuple.1,
8901                        blockCommRoot: tuple.2,
8902                    }
8903                }
8904            }
8905        }
8906        impl finalizedStateReturn {
8907            fn _tokenize(
8908                &self,
8909            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8910                (
8911                    <alloy::sol_types::sol_data::Uint<
8912                        64,
8913                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8914                    <alloy::sol_types::sol_data::Uint<
8915                        64,
8916                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8917                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8918                        &self.blockCommRoot,
8919                    ),
8920                )
8921            }
8922        }
8923        #[automatically_derived]
8924        impl alloy_sol_types::SolCall for finalizedStateCall {
8925            type Parameters<'a> = ();
8926            type Token<'a> = <Self::Parameters<
8927                'a,
8928            > as alloy_sol_types::SolType>::Token<'a>;
8929            type Return = finalizedStateReturn;
8930            type ReturnTuple<'a> = (
8931                alloy::sol_types::sol_data::Uint<64>,
8932                alloy::sol_types::sol_data::Uint<64>,
8933                BN254::ScalarField,
8934            );
8935            type ReturnToken<'a> = <Self::ReturnTuple<
8936                'a,
8937            > as alloy_sol_types::SolType>::Token<'a>;
8938            const SIGNATURE: &'static str = "finalizedState()";
8939            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8940            #[inline]
8941            fn new<'a>(
8942                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8943            ) -> Self {
8944                tuple.into()
8945            }
8946            #[inline]
8947            fn tokenize(&self) -> Self::Token<'_> {
8948                ()
8949            }
8950            #[inline]
8951            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8952                finalizedStateReturn::_tokenize(ret)
8953            }
8954            #[inline]
8955            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8956                <Self::ReturnTuple<
8957                    '_,
8958                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8959                    .map(Into::into)
8960            }
8961            #[inline]
8962            fn abi_decode_returns_validate(
8963                data: &[u8],
8964            ) -> alloy_sol_types::Result<Self::Return> {
8965                <Self::ReturnTuple<
8966                    '_,
8967                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8968                    .map(Into::into)
8969            }
8970        }
8971    };
8972    #[derive(serde::Serialize, serde::Deserialize)]
8973    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8974    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
8975```solidity
8976function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
8977```*/
8978    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8979    #[derive(Clone)]
8980    pub struct genesisStakeTableStateCall;
8981    #[derive(serde::Serialize, serde::Deserialize)]
8982    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8983    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
8984    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8985    #[derive(Clone)]
8986    pub struct genesisStakeTableStateReturn {
8987        #[allow(missing_docs)]
8988        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
8989        #[allow(missing_docs)]
8990        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8991        #[allow(missing_docs)]
8992        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8993        #[allow(missing_docs)]
8994        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8995    }
8996    #[allow(
8997        non_camel_case_types,
8998        non_snake_case,
8999        clippy::pub_underscore_fields,
9000        clippy::style
9001    )]
9002    const _: () = {
9003        use alloy::sol_types as alloy_sol_types;
9004        {
9005            #[doc(hidden)]
9006            type UnderlyingSolTuple<'a> = ();
9007            #[doc(hidden)]
9008            type UnderlyingRustTuple<'a> = ();
9009            #[cfg(test)]
9010            #[allow(dead_code, unreachable_patterns)]
9011            fn _type_assertion(
9012                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9013            ) {
9014                match _t {
9015                    alloy_sol_types::private::AssertTypeEq::<
9016                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9017                    >(_) => {}
9018                }
9019            }
9020            #[automatically_derived]
9021            #[doc(hidden)]
9022            impl ::core::convert::From<genesisStakeTableStateCall>
9023            for UnderlyingRustTuple<'_> {
9024                fn from(value: genesisStakeTableStateCall) -> Self {
9025                    ()
9026                }
9027            }
9028            #[automatically_derived]
9029            #[doc(hidden)]
9030            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9031            for genesisStakeTableStateCall {
9032                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9033                    Self
9034                }
9035            }
9036        }
9037        {
9038            #[doc(hidden)]
9039            type UnderlyingSolTuple<'a> = (
9040                alloy::sol_types::sol_data::Uint<256>,
9041                BN254::ScalarField,
9042                BN254::ScalarField,
9043                BN254::ScalarField,
9044            );
9045            #[doc(hidden)]
9046            type UnderlyingRustTuple<'a> = (
9047                alloy::sol_types::private::primitives::aliases::U256,
9048                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9049                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9050                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9051            );
9052            #[cfg(test)]
9053            #[allow(dead_code, unreachable_patterns)]
9054            fn _type_assertion(
9055                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9056            ) {
9057                match _t {
9058                    alloy_sol_types::private::AssertTypeEq::<
9059                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9060                    >(_) => {}
9061                }
9062            }
9063            #[automatically_derived]
9064            #[doc(hidden)]
9065            impl ::core::convert::From<genesisStakeTableStateReturn>
9066            for UnderlyingRustTuple<'_> {
9067                fn from(value: genesisStakeTableStateReturn) -> Self {
9068                    (
9069                        value.threshold,
9070                        value.blsKeyComm,
9071                        value.schnorrKeyComm,
9072                        value.amountComm,
9073                    )
9074                }
9075            }
9076            #[automatically_derived]
9077            #[doc(hidden)]
9078            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9079            for genesisStakeTableStateReturn {
9080                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9081                    Self {
9082                        threshold: tuple.0,
9083                        blsKeyComm: tuple.1,
9084                        schnorrKeyComm: tuple.2,
9085                        amountComm: tuple.3,
9086                    }
9087                }
9088            }
9089        }
9090        impl genesisStakeTableStateReturn {
9091            fn _tokenize(
9092                &self,
9093            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9094                '_,
9095            > {
9096                (
9097                    <alloy::sol_types::sol_data::Uint<
9098                        256,
9099                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9100                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9101                        &self.blsKeyComm,
9102                    ),
9103                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9104                        &self.schnorrKeyComm,
9105                    ),
9106                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9107                        &self.amountComm,
9108                    ),
9109                )
9110            }
9111        }
9112        #[automatically_derived]
9113        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9114            type Parameters<'a> = ();
9115            type Token<'a> = <Self::Parameters<
9116                'a,
9117            > as alloy_sol_types::SolType>::Token<'a>;
9118            type Return = genesisStakeTableStateReturn;
9119            type ReturnTuple<'a> = (
9120                alloy::sol_types::sol_data::Uint<256>,
9121                BN254::ScalarField,
9122                BN254::ScalarField,
9123                BN254::ScalarField,
9124            );
9125            type ReturnToken<'a> = <Self::ReturnTuple<
9126                'a,
9127            > as alloy_sol_types::SolType>::Token<'a>;
9128            const SIGNATURE: &'static str = "genesisStakeTableState()";
9129            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9130            #[inline]
9131            fn new<'a>(
9132                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9133            ) -> Self {
9134                tuple.into()
9135            }
9136            #[inline]
9137            fn tokenize(&self) -> Self::Token<'_> {
9138                ()
9139            }
9140            #[inline]
9141            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9142                genesisStakeTableStateReturn::_tokenize(ret)
9143            }
9144            #[inline]
9145            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9146                <Self::ReturnTuple<
9147                    '_,
9148                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9149                    .map(Into::into)
9150            }
9151            #[inline]
9152            fn abi_decode_returns_validate(
9153                data: &[u8],
9154            ) -> alloy_sol_types::Result<Self::Return> {
9155                <Self::ReturnTuple<
9156                    '_,
9157                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9158                    .map(Into::into)
9159            }
9160        }
9161    };
9162    #[derive(serde::Serialize, serde::Deserialize)]
9163    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9164    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9165```solidity
9166function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9167```*/
9168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9169    #[derive(Clone)]
9170    pub struct genesisStateCall;
9171    #[derive(serde::Serialize, serde::Deserialize)]
9172    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9173    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9174    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9175    #[derive(Clone)]
9176    pub struct genesisStateReturn {
9177        #[allow(missing_docs)]
9178        pub viewNum: u64,
9179        #[allow(missing_docs)]
9180        pub blockHeight: u64,
9181        #[allow(missing_docs)]
9182        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9183    }
9184    #[allow(
9185        non_camel_case_types,
9186        non_snake_case,
9187        clippy::pub_underscore_fields,
9188        clippy::style
9189    )]
9190    const _: () = {
9191        use alloy::sol_types as alloy_sol_types;
9192        {
9193            #[doc(hidden)]
9194            type UnderlyingSolTuple<'a> = ();
9195            #[doc(hidden)]
9196            type UnderlyingRustTuple<'a> = ();
9197            #[cfg(test)]
9198            #[allow(dead_code, unreachable_patterns)]
9199            fn _type_assertion(
9200                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9201            ) {
9202                match _t {
9203                    alloy_sol_types::private::AssertTypeEq::<
9204                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9205                    >(_) => {}
9206                }
9207            }
9208            #[automatically_derived]
9209            #[doc(hidden)]
9210            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
9211                fn from(value: genesisStateCall) -> Self {
9212                    ()
9213                }
9214            }
9215            #[automatically_derived]
9216            #[doc(hidden)]
9217            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9218                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9219                    Self
9220                }
9221            }
9222        }
9223        {
9224            #[doc(hidden)]
9225            type UnderlyingSolTuple<'a> = (
9226                alloy::sol_types::sol_data::Uint<64>,
9227                alloy::sol_types::sol_data::Uint<64>,
9228                BN254::ScalarField,
9229            );
9230            #[doc(hidden)]
9231            type UnderlyingRustTuple<'a> = (
9232                u64,
9233                u64,
9234                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9235            );
9236            #[cfg(test)]
9237            #[allow(dead_code, unreachable_patterns)]
9238            fn _type_assertion(
9239                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9240            ) {
9241                match _t {
9242                    alloy_sol_types::private::AssertTypeEq::<
9243                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9244                    >(_) => {}
9245                }
9246            }
9247            #[automatically_derived]
9248            #[doc(hidden)]
9249            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9250                fn from(value: genesisStateReturn) -> Self {
9251                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9252                }
9253            }
9254            #[automatically_derived]
9255            #[doc(hidden)]
9256            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9257                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9258                    Self {
9259                        viewNum: tuple.0,
9260                        blockHeight: tuple.1,
9261                        blockCommRoot: tuple.2,
9262                    }
9263                }
9264            }
9265        }
9266        impl genesisStateReturn {
9267            fn _tokenize(
9268                &self,
9269            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9270                (
9271                    <alloy::sol_types::sol_data::Uint<
9272                        64,
9273                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9274                    <alloy::sol_types::sol_data::Uint<
9275                        64,
9276                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9277                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9278                        &self.blockCommRoot,
9279                    ),
9280                )
9281            }
9282        }
9283        #[automatically_derived]
9284        impl alloy_sol_types::SolCall for genesisStateCall {
9285            type Parameters<'a> = ();
9286            type Token<'a> = <Self::Parameters<
9287                'a,
9288            > as alloy_sol_types::SolType>::Token<'a>;
9289            type Return = genesisStateReturn;
9290            type ReturnTuple<'a> = (
9291                alloy::sol_types::sol_data::Uint<64>,
9292                alloy::sol_types::sol_data::Uint<64>,
9293                BN254::ScalarField,
9294            );
9295            type ReturnToken<'a> = <Self::ReturnTuple<
9296                'a,
9297            > as alloy_sol_types::SolType>::Token<'a>;
9298            const SIGNATURE: &'static str = "genesisState()";
9299            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9300            #[inline]
9301            fn new<'a>(
9302                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9303            ) -> Self {
9304                tuple.into()
9305            }
9306            #[inline]
9307            fn tokenize(&self) -> Self::Token<'_> {
9308                ()
9309            }
9310            #[inline]
9311            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9312                genesisStateReturn::_tokenize(ret)
9313            }
9314            #[inline]
9315            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9316                <Self::ReturnTuple<
9317                    '_,
9318                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9319                    .map(Into::into)
9320            }
9321            #[inline]
9322            fn abi_decode_returns_validate(
9323                data: &[u8],
9324            ) -> alloy_sol_types::Result<Self::Return> {
9325                <Self::ReturnTuple<
9326                    '_,
9327                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9328                    .map(Into::into)
9329            }
9330        }
9331    };
9332    #[derive(serde::Serialize, serde::Deserialize)]
9333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9334    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9335```solidity
9336function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9337```*/
9338    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9339    #[derive(Clone)]
9340    pub struct getHotShotCommitmentCall {
9341        #[allow(missing_docs)]
9342        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9343    }
9344    #[derive(serde::Serialize, serde::Deserialize)]
9345    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9346    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9347    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9348    #[derive(Clone)]
9349    pub struct getHotShotCommitmentReturn {
9350        #[allow(missing_docs)]
9351        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9352        #[allow(missing_docs)]
9353        pub hotshotBlockHeight: u64,
9354    }
9355    #[allow(
9356        non_camel_case_types,
9357        non_snake_case,
9358        clippy::pub_underscore_fields,
9359        clippy::style
9360    )]
9361    const _: () = {
9362        use alloy::sol_types as alloy_sol_types;
9363        {
9364            #[doc(hidden)]
9365            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9366            #[doc(hidden)]
9367            type UnderlyingRustTuple<'a> = (
9368                alloy::sol_types::private::primitives::aliases::U256,
9369            );
9370            #[cfg(test)]
9371            #[allow(dead_code, unreachable_patterns)]
9372            fn _type_assertion(
9373                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9374            ) {
9375                match _t {
9376                    alloy_sol_types::private::AssertTypeEq::<
9377                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9378                    >(_) => {}
9379                }
9380            }
9381            #[automatically_derived]
9382            #[doc(hidden)]
9383            impl ::core::convert::From<getHotShotCommitmentCall>
9384            for UnderlyingRustTuple<'_> {
9385                fn from(value: getHotShotCommitmentCall) -> Self {
9386                    (value.hotShotBlockHeight,)
9387                }
9388            }
9389            #[automatically_derived]
9390            #[doc(hidden)]
9391            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9392            for getHotShotCommitmentCall {
9393                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9394                    Self {
9395                        hotShotBlockHeight: tuple.0,
9396                    }
9397                }
9398            }
9399        }
9400        {
9401            #[doc(hidden)]
9402            type UnderlyingSolTuple<'a> = (
9403                BN254::ScalarField,
9404                alloy::sol_types::sol_data::Uint<64>,
9405            );
9406            #[doc(hidden)]
9407            type UnderlyingRustTuple<'a> = (
9408                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9409                u64,
9410            );
9411            #[cfg(test)]
9412            #[allow(dead_code, unreachable_patterns)]
9413            fn _type_assertion(
9414                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9415            ) {
9416                match _t {
9417                    alloy_sol_types::private::AssertTypeEq::<
9418                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9419                    >(_) => {}
9420                }
9421            }
9422            #[automatically_derived]
9423            #[doc(hidden)]
9424            impl ::core::convert::From<getHotShotCommitmentReturn>
9425            for UnderlyingRustTuple<'_> {
9426                fn from(value: getHotShotCommitmentReturn) -> Self {
9427                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9433            for getHotShotCommitmentReturn {
9434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9435                    Self {
9436                        hotShotBlockCommRoot: tuple.0,
9437                        hotshotBlockHeight: tuple.1,
9438                    }
9439                }
9440            }
9441        }
9442        impl getHotShotCommitmentReturn {
9443            fn _tokenize(
9444                &self,
9445            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9446                '_,
9447            > {
9448                (
9449                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9450                        &self.hotShotBlockCommRoot,
9451                    ),
9452                    <alloy::sol_types::sol_data::Uint<
9453                        64,
9454                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9455                )
9456            }
9457        }
9458        #[automatically_derived]
9459        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9460            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9461            type Token<'a> = <Self::Parameters<
9462                'a,
9463            > as alloy_sol_types::SolType>::Token<'a>;
9464            type Return = getHotShotCommitmentReturn;
9465            type ReturnTuple<'a> = (
9466                BN254::ScalarField,
9467                alloy::sol_types::sol_data::Uint<64>,
9468            );
9469            type ReturnToken<'a> = <Self::ReturnTuple<
9470                'a,
9471            > as alloy_sol_types::SolType>::Token<'a>;
9472            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9473            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9474            #[inline]
9475            fn new<'a>(
9476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9477            ) -> Self {
9478                tuple.into()
9479            }
9480            #[inline]
9481            fn tokenize(&self) -> Self::Token<'_> {
9482                (
9483                    <alloy::sol_types::sol_data::Uint<
9484                        256,
9485                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9486                )
9487            }
9488            #[inline]
9489            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9490                getHotShotCommitmentReturn::_tokenize(ret)
9491            }
9492            #[inline]
9493            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9494                <Self::ReturnTuple<
9495                    '_,
9496                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9497                    .map(Into::into)
9498            }
9499            #[inline]
9500            fn abi_decode_returns_validate(
9501                data: &[u8],
9502            ) -> alloy_sol_types::Result<Self::Return> {
9503                <Self::ReturnTuple<
9504                    '_,
9505                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9506                    .map(Into::into)
9507            }
9508        }
9509    };
9510    #[derive(serde::Serialize, serde::Deserialize)]
9511    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9512    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9513```solidity
9514function getStateHistoryCount() external view returns (uint256);
9515```*/
9516    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9517    #[derive(Clone)]
9518    pub struct getStateHistoryCountCall;
9519    #[derive(serde::Serialize, serde::Deserialize)]
9520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9521    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9522    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9523    #[derive(Clone)]
9524    pub struct getStateHistoryCountReturn {
9525        #[allow(missing_docs)]
9526        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9527    }
9528    #[allow(
9529        non_camel_case_types,
9530        non_snake_case,
9531        clippy::pub_underscore_fields,
9532        clippy::style
9533    )]
9534    const _: () = {
9535        use alloy::sol_types as alloy_sol_types;
9536        {
9537            #[doc(hidden)]
9538            type UnderlyingSolTuple<'a> = ();
9539            #[doc(hidden)]
9540            type UnderlyingRustTuple<'a> = ();
9541            #[cfg(test)]
9542            #[allow(dead_code, unreachable_patterns)]
9543            fn _type_assertion(
9544                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9545            ) {
9546                match _t {
9547                    alloy_sol_types::private::AssertTypeEq::<
9548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9549                    >(_) => {}
9550                }
9551            }
9552            #[automatically_derived]
9553            #[doc(hidden)]
9554            impl ::core::convert::From<getStateHistoryCountCall>
9555            for UnderlyingRustTuple<'_> {
9556                fn from(value: getStateHistoryCountCall) -> Self {
9557                    ()
9558                }
9559            }
9560            #[automatically_derived]
9561            #[doc(hidden)]
9562            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9563            for getStateHistoryCountCall {
9564                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9565                    Self
9566                }
9567            }
9568        }
9569        {
9570            #[doc(hidden)]
9571            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9572            #[doc(hidden)]
9573            type UnderlyingRustTuple<'a> = (
9574                alloy::sol_types::private::primitives::aliases::U256,
9575            );
9576            #[cfg(test)]
9577            #[allow(dead_code, unreachable_patterns)]
9578            fn _type_assertion(
9579                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9580            ) {
9581                match _t {
9582                    alloy_sol_types::private::AssertTypeEq::<
9583                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9584                    >(_) => {}
9585                }
9586            }
9587            #[automatically_derived]
9588            #[doc(hidden)]
9589            impl ::core::convert::From<getStateHistoryCountReturn>
9590            for UnderlyingRustTuple<'_> {
9591                fn from(value: getStateHistoryCountReturn) -> Self {
9592                    (value._0,)
9593                }
9594            }
9595            #[automatically_derived]
9596            #[doc(hidden)]
9597            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9598            for getStateHistoryCountReturn {
9599                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9600                    Self { _0: tuple.0 }
9601                }
9602            }
9603        }
9604        #[automatically_derived]
9605        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9606            type Parameters<'a> = ();
9607            type Token<'a> = <Self::Parameters<
9608                'a,
9609            > as alloy_sol_types::SolType>::Token<'a>;
9610            type Return = alloy::sol_types::private::primitives::aliases::U256;
9611            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9612            type ReturnToken<'a> = <Self::ReturnTuple<
9613                'a,
9614            > as alloy_sol_types::SolType>::Token<'a>;
9615            const SIGNATURE: &'static str = "getStateHistoryCount()";
9616            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9617            #[inline]
9618            fn new<'a>(
9619                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9620            ) -> Self {
9621                tuple.into()
9622            }
9623            #[inline]
9624            fn tokenize(&self) -> Self::Token<'_> {
9625                ()
9626            }
9627            #[inline]
9628            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9629                (
9630                    <alloy::sol_types::sol_data::Uint<
9631                        256,
9632                    > as alloy_sol_types::SolType>::tokenize(ret),
9633                )
9634            }
9635            #[inline]
9636            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9637                <Self::ReturnTuple<
9638                    '_,
9639                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9640                    .map(|r| {
9641                        let r: getStateHistoryCountReturn = r.into();
9642                        r._0
9643                    })
9644            }
9645            #[inline]
9646            fn abi_decode_returns_validate(
9647                data: &[u8],
9648            ) -> alloy_sol_types::Result<Self::Return> {
9649                <Self::ReturnTuple<
9650                    '_,
9651                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9652                    .map(|r| {
9653                        let r: getStateHistoryCountReturn = r.into();
9654                        r._0
9655                    })
9656            }
9657        }
9658    };
9659    #[derive(serde::Serialize, serde::Deserialize)]
9660    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9661    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9662```solidity
9663function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9664```*/
9665    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9666    #[derive(Clone)]
9667    pub struct getVersionCall;
9668    #[derive(serde::Serialize, serde::Deserialize)]
9669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9670    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9671    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9672    #[derive(Clone)]
9673    pub struct getVersionReturn {
9674        #[allow(missing_docs)]
9675        pub majorVersion: u8,
9676        #[allow(missing_docs)]
9677        pub minorVersion: u8,
9678        #[allow(missing_docs)]
9679        pub patchVersion: u8,
9680    }
9681    #[allow(
9682        non_camel_case_types,
9683        non_snake_case,
9684        clippy::pub_underscore_fields,
9685        clippy::style
9686    )]
9687    const _: () = {
9688        use alloy::sol_types as alloy_sol_types;
9689        {
9690            #[doc(hidden)]
9691            type UnderlyingSolTuple<'a> = ();
9692            #[doc(hidden)]
9693            type UnderlyingRustTuple<'a> = ();
9694            #[cfg(test)]
9695            #[allow(dead_code, unreachable_patterns)]
9696            fn _type_assertion(
9697                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9698            ) {
9699                match _t {
9700                    alloy_sol_types::private::AssertTypeEq::<
9701                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9702                    >(_) => {}
9703                }
9704            }
9705            #[automatically_derived]
9706            #[doc(hidden)]
9707            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9708                fn from(value: getVersionCall) -> Self {
9709                    ()
9710                }
9711            }
9712            #[automatically_derived]
9713            #[doc(hidden)]
9714            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9715                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9716                    Self
9717                }
9718            }
9719        }
9720        {
9721            #[doc(hidden)]
9722            type UnderlyingSolTuple<'a> = (
9723                alloy::sol_types::sol_data::Uint<8>,
9724                alloy::sol_types::sol_data::Uint<8>,
9725                alloy::sol_types::sol_data::Uint<8>,
9726            );
9727            #[doc(hidden)]
9728            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9729            #[cfg(test)]
9730            #[allow(dead_code, unreachable_patterns)]
9731            fn _type_assertion(
9732                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9733            ) {
9734                match _t {
9735                    alloy_sol_types::private::AssertTypeEq::<
9736                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9737                    >(_) => {}
9738                }
9739            }
9740            #[automatically_derived]
9741            #[doc(hidden)]
9742            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9743                fn from(value: getVersionReturn) -> Self {
9744                    (value.majorVersion, value.minorVersion, value.patchVersion)
9745                }
9746            }
9747            #[automatically_derived]
9748            #[doc(hidden)]
9749            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9750                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9751                    Self {
9752                        majorVersion: tuple.0,
9753                        minorVersion: tuple.1,
9754                        patchVersion: tuple.2,
9755                    }
9756                }
9757            }
9758        }
9759        impl getVersionReturn {
9760            fn _tokenize(
9761                &self,
9762            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9763                (
9764                    <alloy::sol_types::sol_data::Uint<
9765                        8,
9766                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
9767                    <alloy::sol_types::sol_data::Uint<
9768                        8,
9769                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
9770                    <alloy::sol_types::sol_data::Uint<
9771                        8,
9772                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
9773                )
9774            }
9775        }
9776        #[automatically_derived]
9777        impl alloy_sol_types::SolCall for getVersionCall {
9778            type Parameters<'a> = ();
9779            type Token<'a> = <Self::Parameters<
9780                'a,
9781            > as alloy_sol_types::SolType>::Token<'a>;
9782            type Return = getVersionReturn;
9783            type ReturnTuple<'a> = (
9784                alloy::sol_types::sol_data::Uint<8>,
9785                alloy::sol_types::sol_data::Uint<8>,
9786                alloy::sol_types::sol_data::Uint<8>,
9787            );
9788            type ReturnToken<'a> = <Self::ReturnTuple<
9789                'a,
9790            > as alloy_sol_types::SolType>::Token<'a>;
9791            const SIGNATURE: &'static str = "getVersion()";
9792            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9793            #[inline]
9794            fn new<'a>(
9795                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9796            ) -> Self {
9797                tuple.into()
9798            }
9799            #[inline]
9800            fn tokenize(&self) -> Self::Token<'_> {
9801                ()
9802            }
9803            #[inline]
9804            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9805                getVersionReturn::_tokenize(ret)
9806            }
9807            #[inline]
9808            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9809                <Self::ReturnTuple<
9810                    '_,
9811                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9812                    .map(Into::into)
9813            }
9814            #[inline]
9815            fn abi_decode_returns_validate(
9816                data: &[u8],
9817            ) -> alloy_sol_types::Result<Self::Return> {
9818                <Self::ReturnTuple<
9819                    '_,
9820                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9821                    .map(Into::into)
9822            }
9823        }
9824    };
9825    #[derive(serde::Serialize, serde::Deserialize)]
9826    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9827    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9828```solidity
9829function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9830```*/
9831    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9832    #[derive(Clone)]
9833    pub struct initializeCall {
9834        #[allow(missing_docs)]
9835        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9836        #[allow(missing_docs)]
9837        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9838        #[allow(missing_docs)]
9839        pub _stateHistoryRetentionPeriod: u32,
9840        #[allow(missing_docs)]
9841        pub owner: alloy::sol_types::private::Address,
9842    }
9843    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9844    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9845    #[derive(Clone)]
9846    pub struct initializeReturn {}
9847    #[allow(
9848        non_camel_case_types,
9849        non_snake_case,
9850        clippy::pub_underscore_fields,
9851        clippy::style
9852    )]
9853    const _: () = {
9854        use alloy::sol_types as alloy_sol_types;
9855        {
9856            #[doc(hidden)]
9857            type UnderlyingSolTuple<'a> = (
9858                LightClient::LightClientState,
9859                LightClient::StakeTableState,
9860                alloy::sol_types::sol_data::Uint<32>,
9861                alloy::sol_types::sol_data::Address,
9862            );
9863            #[doc(hidden)]
9864            type UnderlyingRustTuple<'a> = (
9865                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9866                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9867                u32,
9868                alloy::sol_types::private::Address,
9869            );
9870            #[cfg(test)]
9871            #[allow(dead_code, unreachable_patterns)]
9872            fn _type_assertion(
9873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9874            ) {
9875                match _t {
9876                    alloy_sol_types::private::AssertTypeEq::<
9877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9878                    >(_) => {}
9879                }
9880            }
9881            #[automatically_derived]
9882            #[doc(hidden)]
9883            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9884                fn from(value: initializeCall) -> Self {
9885                    (
9886                        value._genesis,
9887                        value._genesisStakeTableState,
9888                        value._stateHistoryRetentionPeriod,
9889                        value.owner,
9890                    )
9891                }
9892            }
9893            #[automatically_derived]
9894            #[doc(hidden)]
9895            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9896                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9897                    Self {
9898                        _genesis: tuple.0,
9899                        _genesisStakeTableState: tuple.1,
9900                        _stateHistoryRetentionPeriod: tuple.2,
9901                        owner: tuple.3,
9902                    }
9903                }
9904            }
9905        }
9906        {
9907            #[doc(hidden)]
9908            type UnderlyingSolTuple<'a> = ();
9909            #[doc(hidden)]
9910            type UnderlyingRustTuple<'a> = ();
9911            #[cfg(test)]
9912            #[allow(dead_code, unreachable_patterns)]
9913            fn _type_assertion(
9914                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9915            ) {
9916                match _t {
9917                    alloy_sol_types::private::AssertTypeEq::<
9918                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9919                    >(_) => {}
9920                }
9921            }
9922            #[automatically_derived]
9923            #[doc(hidden)]
9924            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9925                fn from(value: initializeReturn) -> Self {
9926                    ()
9927                }
9928            }
9929            #[automatically_derived]
9930            #[doc(hidden)]
9931            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9932                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9933                    Self {}
9934                }
9935            }
9936        }
9937        impl initializeReturn {
9938            fn _tokenize(
9939                &self,
9940            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9941                ()
9942            }
9943        }
9944        #[automatically_derived]
9945        impl alloy_sol_types::SolCall for initializeCall {
9946            type Parameters<'a> = (
9947                LightClient::LightClientState,
9948                LightClient::StakeTableState,
9949                alloy::sol_types::sol_data::Uint<32>,
9950                alloy::sol_types::sol_data::Address,
9951            );
9952            type Token<'a> = <Self::Parameters<
9953                'a,
9954            > as alloy_sol_types::SolType>::Token<'a>;
9955            type Return = initializeReturn;
9956            type ReturnTuple<'a> = ();
9957            type ReturnToken<'a> = <Self::ReturnTuple<
9958                'a,
9959            > as alloy_sol_types::SolType>::Token<'a>;
9960            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
9961            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
9962            #[inline]
9963            fn new<'a>(
9964                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9965            ) -> Self {
9966                tuple.into()
9967            }
9968            #[inline]
9969            fn tokenize(&self) -> Self::Token<'_> {
9970                (
9971                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9972                        &self._genesis,
9973                    ),
9974                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
9975                        &self._genesisStakeTableState,
9976                    ),
9977                    <alloy::sol_types::sol_data::Uint<
9978                        32,
9979                    > as alloy_sol_types::SolType>::tokenize(
9980                        &self._stateHistoryRetentionPeriod,
9981                    ),
9982                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9983                        &self.owner,
9984                    ),
9985                )
9986            }
9987            #[inline]
9988            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9989                initializeReturn::_tokenize(ret)
9990            }
9991            #[inline]
9992            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9993                <Self::ReturnTuple<
9994                    '_,
9995                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9996                    .map(Into::into)
9997            }
9998            #[inline]
9999            fn abi_decode_returns_validate(
10000                data: &[u8],
10001            ) -> alloy_sol_types::Result<Self::Return> {
10002                <Self::ReturnTuple<
10003                    '_,
10004                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10005                    .map(Into::into)
10006            }
10007        }
10008    };
10009    #[derive(serde::Serialize, serde::Deserialize)]
10010    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10011    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10012```solidity
10013function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10014```*/
10015    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10016    #[derive(Clone)]
10017    pub struct initializeV2Call {
10018        #[allow(missing_docs)]
10019        pub _blocksPerEpoch: u64,
10020        #[allow(missing_docs)]
10021        pub _epochStartBlock: u64,
10022    }
10023    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10024    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10025    #[derive(Clone)]
10026    pub struct initializeV2Return {}
10027    #[allow(
10028        non_camel_case_types,
10029        non_snake_case,
10030        clippy::pub_underscore_fields,
10031        clippy::style
10032    )]
10033    const _: () = {
10034        use alloy::sol_types as alloy_sol_types;
10035        {
10036            #[doc(hidden)]
10037            type UnderlyingSolTuple<'a> = (
10038                alloy::sol_types::sol_data::Uint<64>,
10039                alloy::sol_types::sol_data::Uint<64>,
10040            );
10041            #[doc(hidden)]
10042            type UnderlyingRustTuple<'a> = (u64, u64);
10043            #[cfg(test)]
10044            #[allow(dead_code, unreachable_patterns)]
10045            fn _type_assertion(
10046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10047            ) {
10048                match _t {
10049                    alloy_sol_types::private::AssertTypeEq::<
10050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10051                    >(_) => {}
10052                }
10053            }
10054            #[automatically_derived]
10055            #[doc(hidden)]
10056            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10057                fn from(value: initializeV2Call) -> Self {
10058                    (value._blocksPerEpoch, value._epochStartBlock)
10059                }
10060            }
10061            #[automatically_derived]
10062            #[doc(hidden)]
10063            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10064                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10065                    Self {
10066                        _blocksPerEpoch: tuple.0,
10067                        _epochStartBlock: tuple.1,
10068                    }
10069                }
10070            }
10071        }
10072        {
10073            #[doc(hidden)]
10074            type UnderlyingSolTuple<'a> = ();
10075            #[doc(hidden)]
10076            type UnderlyingRustTuple<'a> = ();
10077            #[cfg(test)]
10078            #[allow(dead_code, unreachable_patterns)]
10079            fn _type_assertion(
10080                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10081            ) {
10082                match _t {
10083                    alloy_sol_types::private::AssertTypeEq::<
10084                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10085                    >(_) => {}
10086                }
10087            }
10088            #[automatically_derived]
10089            #[doc(hidden)]
10090            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10091                fn from(value: initializeV2Return) -> Self {
10092                    ()
10093                }
10094            }
10095            #[automatically_derived]
10096            #[doc(hidden)]
10097            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10098                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10099                    Self {}
10100                }
10101            }
10102        }
10103        impl initializeV2Return {
10104            fn _tokenize(
10105                &self,
10106            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10107                ()
10108            }
10109        }
10110        #[automatically_derived]
10111        impl alloy_sol_types::SolCall for initializeV2Call {
10112            type Parameters<'a> = (
10113                alloy::sol_types::sol_data::Uint<64>,
10114                alloy::sol_types::sol_data::Uint<64>,
10115            );
10116            type Token<'a> = <Self::Parameters<
10117                'a,
10118            > as alloy_sol_types::SolType>::Token<'a>;
10119            type Return = initializeV2Return;
10120            type ReturnTuple<'a> = ();
10121            type ReturnToken<'a> = <Self::ReturnTuple<
10122                'a,
10123            > as alloy_sol_types::SolType>::Token<'a>;
10124            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10125            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10126            #[inline]
10127            fn new<'a>(
10128                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10129            ) -> Self {
10130                tuple.into()
10131            }
10132            #[inline]
10133            fn tokenize(&self) -> Self::Token<'_> {
10134                (
10135                    <alloy::sol_types::sol_data::Uint<
10136                        64,
10137                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10138                    <alloy::sol_types::sol_data::Uint<
10139                        64,
10140                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10141                )
10142            }
10143            #[inline]
10144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10145                initializeV2Return::_tokenize(ret)
10146            }
10147            #[inline]
10148            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10149                <Self::ReturnTuple<
10150                    '_,
10151                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10152                    .map(Into::into)
10153            }
10154            #[inline]
10155            fn abi_decode_returns_validate(
10156                data: &[u8],
10157            ) -> alloy_sol_types::Result<Self::Return> {
10158                <Self::ReturnTuple<
10159                    '_,
10160                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10161                    .map(Into::into)
10162            }
10163        }
10164    };
10165    #[derive(serde::Serialize, serde::Deserialize)]
10166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10167    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10168```solidity
10169function isEpochRoot(uint64 blockHeight) external view returns (bool);
10170```*/
10171    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10172    #[derive(Clone)]
10173    pub struct isEpochRootCall {
10174        #[allow(missing_docs)]
10175        pub blockHeight: u64,
10176    }
10177    #[derive(serde::Serialize, serde::Deserialize)]
10178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10179    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10180    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10181    #[derive(Clone)]
10182    pub struct isEpochRootReturn {
10183        #[allow(missing_docs)]
10184        pub _0: bool,
10185    }
10186    #[allow(
10187        non_camel_case_types,
10188        non_snake_case,
10189        clippy::pub_underscore_fields,
10190        clippy::style
10191    )]
10192    const _: () = {
10193        use alloy::sol_types as alloy_sol_types;
10194        {
10195            #[doc(hidden)]
10196            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10197            #[doc(hidden)]
10198            type UnderlyingRustTuple<'a> = (u64,);
10199            #[cfg(test)]
10200            #[allow(dead_code, unreachable_patterns)]
10201            fn _type_assertion(
10202                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10203            ) {
10204                match _t {
10205                    alloy_sol_types::private::AssertTypeEq::<
10206                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10207                    >(_) => {}
10208                }
10209            }
10210            #[automatically_derived]
10211            #[doc(hidden)]
10212            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10213                fn from(value: isEpochRootCall) -> Self {
10214                    (value.blockHeight,)
10215                }
10216            }
10217            #[automatically_derived]
10218            #[doc(hidden)]
10219            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10220                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10221                    Self { blockHeight: tuple.0 }
10222                }
10223            }
10224        }
10225        {
10226            #[doc(hidden)]
10227            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10228            #[doc(hidden)]
10229            type UnderlyingRustTuple<'a> = (bool,);
10230            #[cfg(test)]
10231            #[allow(dead_code, unreachable_patterns)]
10232            fn _type_assertion(
10233                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10234            ) {
10235                match _t {
10236                    alloy_sol_types::private::AssertTypeEq::<
10237                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10238                    >(_) => {}
10239                }
10240            }
10241            #[automatically_derived]
10242            #[doc(hidden)]
10243            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10244                fn from(value: isEpochRootReturn) -> Self {
10245                    (value._0,)
10246                }
10247            }
10248            #[automatically_derived]
10249            #[doc(hidden)]
10250            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10251                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10252                    Self { _0: tuple.0 }
10253                }
10254            }
10255        }
10256        #[automatically_derived]
10257        impl alloy_sol_types::SolCall for isEpochRootCall {
10258            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10259            type Token<'a> = <Self::Parameters<
10260                'a,
10261            > as alloy_sol_types::SolType>::Token<'a>;
10262            type Return = bool;
10263            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10264            type ReturnToken<'a> = <Self::ReturnTuple<
10265                'a,
10266            > as alloy_sol_types::SolType>::Token<'a>;
10267            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10268            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10269            #[inline]
10270            fn new<'a>(
10271                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10272            ) -> Self {
10273                tuple.into()
10274            }
10275            #[inline]
10276            fn tokenize(&self) -> Self::Token<'_> {
10277                (
10278                    <alloy::sol_types::sol_data::Uint<
10279                        64,
10280                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10281                )
10282            }
10283            #[inline]
10284            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10285                (
10286                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10287                        ret,
10288                    ),
10289                )
10290            }
10291            #[inline]
10292            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10293                <Self::ReturnTuple<
10294                    '_,
10295                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10296                    .map(|r| {
10297                        let r: isEpochRootReturn = r.into();
10298                        r._0
10299                    })
10300            }
10301            #[inline]
10302            fn abi_decode_returns_validate(
10303                data: &[u8],
10304            ) -> alloy_sol_types::Result<Self::Return> {
10305                <Self::ReturnTuple<
10306                    '_,
10307                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10308                    .map(|r| {
10309                        let r: isEpochRootReturn = r.into();
10310                        r._0
10311                    })
10312            }
10313        }
10314    };
10315    #[derive(serde::Serialize, serde::Deserialize)]
10316    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10317    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10318```solidity
10319function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10320```*/
10321    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10322    #[derive(Clone)]
10323    pub struct isGtEpochRootCall {
10324        #[allow(missing_docs)]
10325        pub blockHeight: u64,
10326    }
10327    #[derive(serde::Serialize, serde::Deserialize)]
10328    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10329    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10330    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10331    #[derive(Clone)]
10332    pub struct isGtEpochRootReturn {
10333        #[allow(missing_docs)]
10334        pub _0: bool,
10335    }
10336    #[allow(
10337        non_camel_case_types,
10338        non_snake_case,
10339        clippy::pub_underscore_fields,
10340        clippy::style
10341    )]
10342    const _: () = {
10343        use alloy::sol_types as alloy_sol_types;
10344        {
10345            #[doc(hidden)]
10346            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10347            #[doc(hidden)]
10348            type UnderlyingRustTuple<'a> = (u64,);
10349            #[cfg(test)]
10350            #[allow(dead_code, unreachable_patterns)]
10351            fn _type_assertion(
10352                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10353            ) {
10354                match _t {
10355                    alloy_sol_types::private::AssertTypeEq::<
10356                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10357                    >(_) => {}
10358                }
10359            }
10360            #[automatically_derived]
10361            #[doc(hidden)]
10362            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10363                fn from(value: isGtEpochRootCall) -> Self {
10364                    (value.blockHeight,)
10365                }
10366            }
10367            #[automatically_derived]
10368            #[doc(hidden)]
10369            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10370                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10371                    Self { blockHeight: tuple.0 }
10372                }
10373            }
10374        }
10375        {
10376            #[doc(hidden)]
10377            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10378            #[doc(hidden)]
10379            type UnderlyingRustTuple<'a> = (bool,);
10380            #[cfg(test)]
10381            #[allow(dead_code, unreachable_patterns)]
10382            fn _type_assertion(
10383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10384            ) {
10385                match _t {
10386                    alloy_sol_types::private::AssertTypeEq::<
10387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10388                    >(_) => {}
10389                }
10390            }
10391            #[automatically_derived]
10392            #[doc(hidden)]
10393            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10394                fn from(value: isGtEpochRootReturn) -> Self {
10395                    (value._0,)
10396                }
10397            }
10398            #[automatically_derived]
10399            #[doc(hidden)]
10400            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10401                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10402                    Self { _0: tuple.0 }
10403                }
10404            }
10405        }
10406        #[automatically_derived]
10407        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10408            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10409            type Token<'a> = <Self::Parameters<
10410                'a,
10411            > as alloy_sol_types::SolType>::Token<'a>;
10412            type Return = bool;
10413            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10414            type ReturnToken<'a> = <Self::ReturnTuple<
10415                'a,
10416            > as alloy_sol_types::SolType>::Token<'a>;
10417            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10418            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10419            #[inline]
10420            fn new<'a>(
10421                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10422            ) -> Self {
10423                tuple.into()
10424            }
10425            #[inline]
10426            fn tokenize(&self) -> Self::Token<'_> {
10427                (
10428                    <alloy::sol_types::sol_data::Uint<
10429                        64,
10430                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10431                )
10432            }
10433            #[inline]
10434            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10435                (
10436                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10437                        ret,
10438                    ),
10439                )
10440            }
10441            #[inline]
10442            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10443                <Self::ReturnTuple<
10444                    '_,
10445                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10446                    .map(|r| {
10447                        let r: isGtEpochRootReturn = r.into();
10448                        r._0
10449                    })
10450            }
10451            #[inline]
10452            fn abi_decode_returns_validate(
10453                data: &[u8],
10454            ) -> alloy_sol_types::Result<Self::Return> {
10455                <Self::ReturnTuple<
10456                    '_,
10457                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10458                    .map(|r| {
10459                        let r: isGtEpochRootReturn = r.into();
10460                        r._0
10461                    })
10462            }
10463        }
10464    };
10465    #[derive(serde::Serialize, serde::Deserialize)]
10466    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10467    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10468```solidity
10469function isPermissionedProverEnabled() external view returns (bool);
10470```*/
10471    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10472    #[derive(Clone)]
10473    pub struct isPermissionedProverEnabledCall;
10474    #[derive(serde::Serialize, serde::Deserialize)]
10475    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10476    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10478    #[derive(Clone)]
10479    pub struct isPermissionedProverEnabledReturn {
10480        #[allow(missing_docs)]
10481        pub _0: bool,
10482    }
10483    #[allow(
10484        non_camel_case_types,
10485        non_snake_case,
10486        clippy::pub_underscore_fields,
10487        clippy::style
10488    )]
10489    const _: () = {
10490        use alloy::sol_types as alloy_sol_types;
10491        {
10492            #[doc(hidden)]
10493            type UnderlyingSolTuple<'a> = ();
10494            #[doc(hidden)]
10495            type UnderlyingRustTuple<'a> = ();
10496            #[cfg(test)]
10497            #[allow(dead_code, unreachable_patterns)]
10498            fn _type_assertion(
10499                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10500            ) {
10501                match _t {
10502                    alloy_sol_types::private::AssertTypeEq::<
10503                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10504                    >(_) => {}
10505                }
10506            }
10507            #[automatically_derived]
10508            #[doc(hidden)]
10509            impl ::core::convert::From<isPermissionedProverEnabledCall>
10510            for UnderlyingRustTuple<'_> {
10511                fn from(value: isPermissionedProverEnabledCall) -> Self {
10512                    ()
10513                }
10514            }
10515            #[automatically_derived]
10516            #[doc(hidden)]
10517            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10518            for isPermissionedProverEnabledCall {
10519                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10520                    Self
10521                }
10522            }
10523        }
10524        {
10525            #[doc(hidden)]
10526            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10527            #[doc(hidden)]
10528            type UnderlyingRustTuple<'a> = (bool,);
10529            #[cfg(test)]
10530            #[allow(dead_code, unreachable_patterns)]
10531            fn _type_assertion(
10532                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10533            ) {
10534                match _t {
10535                    alloy_sol_types::private::AssertTypeEq::<
10536                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10537                    >(_) => {}
10538                }
10539            }
10540            #[automatically_derived]
10541            #[doc(hidden)]
10542            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10543            for UnderlyingRustTuple<'_> {
10544                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10545                    (value._0,)
10546                }
10547            }
10548            #[automatically_derived]
10549            #[doc(hidden)]
10550            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10551            for isPermissionedProverEnabledReturn {
10552                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10553                    Self { _0: tuple.0 }
10554                }
10555            }
10556        }
10557        #[automatically_derived]
10558        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10559            type Parameters<'a> = ();
10560            type Token<'a> = <Self::Parameters<
10561                'a,
10562            > as alloy_sol_types::SolType>::Token<'a>;
10563            type Return = bool;
10564            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10565            type ReturnToken<'a> = <Self::ReturnTuple<
10566                'a,
10567            > as alloy_sol_types::SolType>::Token<'a>;
10568            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10569            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10570            #[inline]
10571            fn new<'a>(
10572                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10573            ) -> Self {
10574                tuple.into()
10575            }
10576            #[inline]
10577            fn tokenize(&self) -> Self::Token<'_> {
10578                ()
10579            }
10580            #[inline]
10581            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10582                (
10583                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10584                        ret,
10585                    ),
10586                )
10587            }
10588            #[inline]
10589            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10590                <Self::ReturnTuple<
10591                    '_,
10592                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10593                    .map(|r| {
10594                        let r: isPermissionedProverEnabledReturn = r.into();
10595                        r._0
10596                    })
10597            }
10598            #[inline]
10599            fn abi_decode_returns_validate(
10600                data: &[u8],
10601            ) -> alloy_sol_types::Result<Self::Return> {
10602                <Self::ReturnTuple<
10603                    '_,
10604                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10605                    .map(|r| {
10606                        let r: isPermissionedProverEnabledReturn = r.into();
10607                        r._0
10608                    })
10609            }
10610        }
10611    };
10612    #[derive(serde::Serialize, serde::Deserialize)]
10613    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10614    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10615```solidity
10616function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10617```*/
10618    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10619    #[derive(Clone)]
10620    pub struct lagOverEscapeHatchThresholdCall {
10621        #[allow(missing_docs)]
10622        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10623        #[allow(missing_docs)]
10624        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10625    }
10626    #[derive(serde::Serialize, serde::Deserialize)]
10627    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10628    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10630    #[derive(Clone)]
10631    pub struct lagOverEscapeHatchThresholdReturn {
10632        #[allow(missing_docs)]
10633        pub _0: bool,
10634    }
10635    #[allow(
10636        non_camel_case_types,
10637        non_snake_case,
10638        clippy::pub_underscore_fields,
10639        clippy::style
10640    )]
10641    const _: () = {
10642        use alloy::sol_types as alloy_sol_types;
10643        {
10644            #[doc(hidden)]
10645            type UnderlyingSolTuple<'a> = (
10646                alloy::sol_types::sol_data::Uint<256>,
10647                alloy::sol_types::sol_data::Uint<256>,
10648            );
10649            #[doc(hidden)]
10650            type UnderlyingRustTuple<'a> = (
10651                alloy::sol_types::private::primitives::aliases::U256,
10652                alloy::sol_types::private::primitives::aliases::U256,
10653            );
10654            #[cfg(test)]
10655            #[allow(dead_code, unreachable_patterns)]
10656            fn _type_assertion(
10657                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10658            ) {
10659                match _t {
10660                    alloy_sol_types::private::AssertTypeEq::<
10661                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10662                    >(_) => {}
10663                }
10664            }
10665            #[automatically_derived]
10666            #[doc(hidden)]
10667            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10668            for UnderlyingRustTuple<'_> {
10669                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10670                    (value.blockNumber, value.blockThreshold)
10671                }
10672            }
10673            #[automatically_derived]
10674            #[doc(hidden)]
10675            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10676            for lagOverEscapeHatchThresholdCall {
10677                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10678                    Self {
10679                        blockNumber: tuple.0,
10680                        blockThreshold: tuple.1,
10681                    }
10682                }
10683            }
10684        }
10685        {
10686            #[doc(hidden)]
10687            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10688            #[doc(hidden)]
10689            type UnderlyingRustTuple<'a> = (bool,);
10690            #[cfg(test)]
10691            #[allow(dead_code, unreachable_patterns)]
10692            fn _type_assertion(
10693                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10694            ) {
10695                match _t {
10696                    alloy_sol_types::private::AssertTypeEq::<
10697                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10698                    >(_) => {}
10699                }
10700            }
10701            #[automatically_derived]
10702            #[doc(hidden)]
10703            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10704            for UnderlyingRustTuple<'_> {
10705                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10706                    (value._0,)
10707                }
10708            }
10709            #[automatically_derived]
10710            #[doc(hidden)]
10711            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10712            for lagOverEscapeHatchThresholdReturn {
10713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10714                    Self { _0: tuple.0 }
10715                }
10716            }
10717        }
10718        #[automatically_derived]
10719        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10720            type Parameters<'a> = (
10721                alloy::sol_types::sol_data::Uint<256>,
10722                alloy::sol_types::sol_data::Uint<256>,
10723            );
10724            type Token<'a> = <Self::Parameters<
10725                'a,
10726            > as alloy_sol_types::SolType>::Token<'a>;
10727            type Return = bool;
10728            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10729            type ReturnToken<'a> = <Self::ReturnTuple<
10730                'a,
10731            > as alloy_sol_types::SolType>::Token<'a>;
10732            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10733            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10734            #[inline]
10735            fn new<'a>(
10736                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10737            ) -> Self {
10738                tuple.into()
10739            }
10740            #[inline]
10741            fn tokenize(&self) -> Self::Token<'_> {
10742                (
10743                    <alloy::sol_types::sol_data::Uint<
10744                        256,
10745                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10746                    <alloy::sol_types::sol_data::Uint<
10747                        256,
10748                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
10749                )
10750            }
10751            #[inline]
10752            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10753                (
10754                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10755                        ret,
10756                    ),
10757                )
10758            }
10759            #[inline]
10760            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10761                <Self::ReturnTuple<
10762                    '_,
10763                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10764                    .map(|r| {
10765                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10766                        r._0
10767                    })
10768            }
10769            #[inline]
10770            fn abi_decode_returns_validate(
10771                data: &[u8],
10772            ) -> alloy_sol_types::Result<Self::Return> {
10773                <Self::ReturnTuple<
10774                    '_,
10775                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10776                    .map(|r| {
10777                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10778                        r._0
10779                    })
10780            }
10781        }
10782    };
10783    #[derive(serde::Serialize, serde::Deserialize)]
10784    #[derive()]
10785    /**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`.
10786```solidity
10787function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10788```*/
10789    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10790    #[derive(Clone)]
10791    pub struct newFinalizedState_0Call {
10792        #[allow(missing_docs)]
10793        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10794        #[allow(missing_docs)]
10795        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10796    }
10797    ///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.
10798    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10799    #[derive(Clone)]
10800    pub struct newFinalizedState_0Return {}
10801    #[allow(
10802        non_camel_case_types,
10803        non_snake_case,
10804        clippy::pub_underscore_fields,
10805        clippy::style
10806    )]
10807    const _: () = {
10808        use alloy::sol_types as alloy_sol_types;
10809        {
10810            #[doc(hidden)]
10811            type UnderlyingSolTuple<'a> = (
10812                LightClient::LightClientState,
10813                IPlonkVerifier::PlonkProof,
10814            );
10815            #[doc(hidden)]
10816            type UnderlyingRustTuple<'a> = (
10817                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10818                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10819            );
10820            #[cfg(test)]
10821            #[allow(dead_code, unreachable_patterns)]
10822            fn _type_assertion(
10823                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10824            ) {
10825                match _t {
10826                    alloy_sol_types::private::AssertTypeEq::<
10827                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10828                    >(_) => {}
10829                }
10830            }
10831            #[automatically_derived]
10832            #[doc(hidden)]
10833            impl ::core::convert::From<newFinalizedState_0Call>
10834            for UnderlyingRustTuple<'_> {
10835                fn from(value: newFinalizedState_0Call) -> Self {
10836                    (value._0, value._1)
10837                }
10838            }
10839            #[automatically_derived]
10840            #[doc(hidden)]
10841            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10842            for newFinalizedState_0Call {
10843                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10844                    Self { _0: tuple.0, _1: tuple.1 }
10845                }
10846            }
10847        }
10848        {
10849            #[doc(hidden)]
10850            type UnderlyingSolTuple<'a> = ();
10851            #[doc(hidden)]
10852            type UnderlyingRustTuple<'a> = ();
10853            #[cfg(test)]
10854            #[allow(dead_code, unreachable_patterns)]
10855            fn _type_assertion(
10856                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10857            ) {
10858                match _t {
10859                    alloy_sol_types::private::AssertTypeEq::<
10860                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10861                    >(_) => {}
10862                }
10863            }
10864            #[automatically_derived]
10865            #[doc(hidden)]
10866            impl ::core::convert::From<newFinalizedState_0Return>
10867            for UnderlyingRustTuple<'_> {
10868                fn from(value: newFinalizedState_0Return) -> Self {
10869                    ()
10870                }
10871            }
10872            #[automatically_derived]
10873            #[doc(hidden)]
10874            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10875            for newFinalizedState_0Return {
10876                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10877                    Self {}
10878                }
10879            }
10880        }
10881        impl newFinalizedState_0Return {
10882            fn _tokenize(
10883                &self,
10884            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10885                ()
10886            }
10887        }
10888        #[automatically_derived]
10889        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10890            type Parameters<'a> = (
10891                LightClient::LightClientState,
10892                IPlonkVerifier::PlonkProof,
10893            );
10894            type Token<'a> = <Self::Parameters<
10895                'a,
10896            > as alloy_sol_types::SolType>::Token<'a>;
10897            type Return = newFinalizedState_0Return;
10898            type ReturnTuple<'a> = ();
10899            type ReturnToken<'a> = <Self::ReturnTuple<
10900                'a,
10901            > as alloy_sol_types::SolType>::Token<'a>;
10902            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))";
10903            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10904            #[inline]
10905            fn new<'a>(
10906                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10907            ) -> Self {
10908                tuple.into()
10909            }
10910            #[inline]
10911            fn tokenize(&self) -> Self::Token<'_> {
10912                (
10913                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10914                        &self._0,
10915                    ),
10916                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10917                        &self._1,
10918                    ),
10919                )
10920            }
10921            #[inline]
10922            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10923                newFinalizedState_0Return::_tokenize(ret)
10924            }
10925            #[inline]
10926            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10927                <Self::ReturnTuple<
10928                    '_,
10929                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10930                    .map(Into::into)
10931            }
10932            #[inline]
10933            fn abi_decode_returns_validate(
10934                data: &[u8],
10935            ) -> alloy_sol_types::Result<Self::Return> {
10936                <Self::ReturnTuple<
10937                    '_,
10938                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10939                    .map(Into::into)
10940            }
10941        }
10942    };
10943    #[derive(serde::Serialize, serde::Deserialize)]
10944    #[derive()]
10945    /**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`.
10946```solidity
10947function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
10948```*/
10949    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10950    #[derive(Clone)]
10951    pub struct newFinalizedState_1Call {
10952        #[allow(missing_docs)]
10953        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10954        #[allow(missing_docs)]
10955        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10956        #[allow(missing_docs)]
10957        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10958    }
10959    ///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.
10960    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10961    #[derive(Clone)]
10962    pub struct newFinalizedState_1Return {}
10963    #[allow(
10964        non_camel_case_types,
10965        non_snake_case,
10966        clippy::pub_underscore_fields,
10967        clippy::style
10968    )]
10969    const _: () = {
10970        use alloy::sol_types as alloy_sol_types;
10971        {
10972            #[doc(hidden)]
10973            type UnderlyingSolTuple<'a> = (
10974                LightClient::LightClientState,
10975                LightClient::StakeTableState,
10976                IPlonkVerifier::PlonkProof,
10977            );
10978            #[doc(hidden)]
10979            type UnderlyingRustTuple<'a> = (
10980                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10981                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
10982                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10983            );
10984            #[cfg(test)]
10985            #[allow(dead_code, unreachable_patterns)]
10986            fn _type_assertion(
10987                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10988            ) {
10989                match _t {
10990                    alloy_sol_types::private::AssertTypeEq::<
10991                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10992                    >(_) => {}
10993                }
10994            }
10995            #[automatically_derived]
10996            #[doc(hidden)]
10997            impl ::core::convert::From<newFinalizedState_1Call>
10998            for UnderlyingRustTuple<'_> {
10999                fn from(value: newFinalizedState_1Call) -> Self {
11000                    (value.newState, value.nextStakeTable, value.proof)
11001                }
11002            }
11003            #[automatically_derived]
11004            #[doc(hidden)]
11005            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11006            for newFinalizedState_1Call {
11007                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11008                    Self {
11009                        newState: tuple.0,
11010                        nextStakeTable: tuple.1,
11011                        proof: tuple.2,
11012                    }
11013                }
11014            }
11015        }
11016        {
11017            #[doc(hidden)]
11018            type UnderlyingSolTuple<'a> = ();
11019            #[doc(hidden)]
11020            type UnderlyingRustTuple<'a> = ();
11021            #[cfg(test)]
11022            #[allow(dead_code, unreachable_patterns)]
11023            fn _type_assertion(
11024                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11025            ) {
11026                match _t {
11027                    alloy_sol_types::private::AssertTypeEq::<
11028                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11029                    >(_) => {}
11030                }
11031            }
11032            #[automatically_derived]
11033            #[doc(hidden)]
11034            impl ::core::convert::From<newFinalizedState_1Return>
11035            for UnderlyingRustTuple<'_> {
11036                fn from(value: newFinalizedState_1Return) -> Self {
11037                    ()
11038                }
11039            }
11040            #[automatically_derived]
11041            #[doc(hidden)]
11042            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11043            for newFinalizedState_1Return {
11044                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11045                    Self {}
11046                }
11047            }
11048        }
11049        impl newFinalizedState_1Return {
11050            fn _tokenize(
11051                &self,
11052            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11053                ()
11054            }
11055        }
11056        #[automatically_derived]
11057        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11058            type Parameters<'a> = (
11059                LightClient::LightClientState,
11060                LightClient::StakeTableState,
11061                IPlonkVerifier::PlonkProof,
11062            );
11063            type Token<'a> = <Self::Parameters<
11064                'a,
11065            > as alloy_sol_types::SolType>::Token<'a>;
11066            type Return = newFinalizedState_1Return;
11067            type ReturnTuple<'a> = ();
11068            type ReturnToken<'a> = <Self::ReturnTuple<
11069                'a,
11070            > as alloy_sol_types::SolType>::Token<'a>;
11071            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))";
11072            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11073            #[inline]
11074            fn new<'a>(
11075                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11076            ) -> Self {
11077                tuple.into()
11078            }
11079            #[inline]
11080            fn tokenize(&self) -> Self::Token<'_> {
11081                (
11082                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11083                        &self.newState,
11084                    ),
11085                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11086                        &self.nextStakeTable,
11087                    ),
11088                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11089                        &self.proof,
11090                    ),
11091                )
11092            }
11093            #[inline]
11094            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11095                newFinalizedState_1Return::_tokenize(ret)
11096            }
11097            #[inline]
11098            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11099                <Self::ReturnTuple<
11100                    '_,
11101                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11102                    .map(Into::into)
11103            }
11104            #[inline]
11105            fn abi_decode_returns_validate(
11106                data: &[u8],
11107            ) -> alloy_sol_types::Result<Self::Return> {
11108                <Self::ReturnTuple<
11109                    '_,
11110                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11111                    .map(Into::into)
11112            }
11113        }
11114    };
11115    #[derive(serde::Serialize, serde::Deserialize)]
11116    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11117    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11118```solidity
11119function owner() external view returns (address);
11120```*/
11121    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11122    #[derive(Clone)]
11123    pub struct ownerCall;
11124    #[derive(serde::Serialize, serde::Deserialize)]
11125    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11126    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11127    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11128    #[derive(Clone)]
11129    pub struct ownerReturn {
11130        #[allow(missing_docs)]
11131        pub _0: alloy::sol_types::private::Address,
11132    }
11133    #[allow(
11134        non_camel_case_types,
11135        non_snake_case,
11136        clippy::pub_underscore_fields,
11137        clippy::style
11138    )]
11139    const _: () = {
11140        use alloy::sol_types as alloy_sol_types;
11141        {
11142            #[doc(hidden)]
11143            type UnderlyingSolTuple<'a> = ();
11144            #[doc(hidden)]
11145            type UnderlyingRustTuple<'a> = ();
11146            #[cfg(test)]
11147            #[allow(dead_code, unreachable_patterns)]
11148            fn _type_assertion(
11149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11150            ) {
11151                match _t {
11152                    alloy_sol_types::private::AssertTypeEq::<
11153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11154                    >(_) => {}
11155                }
11156            }
11157            #[automatically_derived]
11158            #[doc(hidden)]
11159            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11160                fn from(value: ownerCall) -> Self {
11161                    ()
11162                }
11163            }
11164            #[automatically_derived]
11165            #[doc(hidden)]
11166            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11167                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11168                    Self
11169                }
11170            }
11171        }
11172        {
11173            #[doc(hidden)]
11174            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11175            #[doc(hidden)]
11176            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11177            #[cfg(test)]
11178            #[allow(dead_code, unreachable_patterns)]
11179            fn _type_assertion(
11180                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11181            ) {
11182                match _t {
11183                    alloy_sol_types::private::AssertTypeEq::<
11184                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11185                    >(_) => {}
11186                }
11187            }
11188            #[automatically_derived]
11189            #[doc(hidden)]
11190            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11191                fn from(value: ownerReturn) -> Self {
11192                    (value._0,)
11193                }
11194            }
11195            #[automatically_derived]
11196            #[doc(hidden)]
11197            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11198                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11199                    Self { _0: tuple.0 }
11200                }
11201            }
11202        }
11203        #[automatically_derived]
11204        impl alloy_sol_types::SolCall for ownerCall {
11205            type Parameters<'a> = ();
11206            type Token<'a> = <Self::Parameters<
11207                'a,
11208            > as alloy_sol_types::SolType>::Token<'a>;
11209            type Return = alloy::sol_types::private::Address;
11210            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11211            type ReturnToken<'a> = <Self::ReturnTuple<
11212                'a,
11213            > as alloy_sol_types::SolType>::Token<'a>;
11214            const SIGNATURE: &'static str = "owner()";
11215            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11216            #[inline]
11217            fn new<'a>(
11218                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11219            ) -> Self {
11220                tuple.into()
11221            }
11222            #[inline]
11223            fn tokenize(&self) -> Self::Token<'_> {
11224                ()
11225            }
11226            #[inline]
11227            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11228                (
11229                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11230                        ret,
11231                    ),
11232                )
11233            }
11234            #[inline]
11235            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11236                <Self::ReturnTuple<
11237                    '_,
11238                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11239                    .map(|r| {
11240                        let r: ownerReturn = r.into();
11241                        r._0
11242                    })
11243            }
11244            #[inline]
11245            fn abi_decode_returns_validate(
11246                data: &[u8],
11247            ) -> alloy_sol_types::Result<Self::Return> {
11248                <Self::ReturnTuple<
11249                    '_,
11250                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11251                    .map(|r| {
11252                        let r: ownerReturn = r.into();
11253                        r._0
11254                    })
11255            }
11256        }
11257    };
11258    #[derive(serde::Serialize, serde::Deserialize)]
11259    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11260    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11261```solidity
11262function permissionedProver() external view returns (address);
11263```*/
11264    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11265    #[derive(Clone)]
11266    pub struct permissionedProverCall;
11267    #[derive(serde::Serialize, serde::Deserialize)]
11268    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11269    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11270    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11271    #[derive(Clone)]
11272    pub struct permissionedProverReturn {
11273        #[allow(missing_docs)]
11274        pub _0: alloy::sol_types::private::Address,
11275    }
11276    #[allow(
11277        non_camel_case_types,
11278        non_snake_case,
11279        clippy::pub_underscore_fields,
11280        clippy::style
11281    )]
11282    const _: () = {
11283        use alloy::sol_types as alloy_sol_types;
11284        {
11285            #[doc(hidden)]
11286            type UnderlyingSolTuple<'a> = ();
11287            #[doc(hidden)]
11288            type UnderlyingRustTuple<'a> = ();
11289            #[cfg(test)]
11290            #[allow(dead_code, unreachable_patterns)]
11291            fn _type_assertion(
11292                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11293            ) {
11294                match _t {
11295                    alloy_sol_types::private::AssertTypeEq::<
11296                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11297                    >(_) => {}
11298                }
11299            }
11300            #[automatically_derived]
11301            #[doc(hidden)]
11302            impl ::core::convert::From<permissionedProverCall>
11303            for UnderlyingRustTuple<'_> {
11304                fn from(value: permissionedProverCall) -> Self {
11305                    ()
11306                }
11307            }
11308            #[automatically_derived]
11309            #[doc(hidden)]
11310            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11311            for permissionedProverCall {
11312                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11313                    Self
11314                }
11315            }
11316        }
11317        {
11318            #[doc(hidden)]
11319            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11320            #[doc(hidden)]
11321            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11322            #[cfg(test)]
11323            #[allow(dead_code, unreachable_patterns)]
11324            fn _type_assertion(
11325                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11326            ) {
11327                match _t {
11328                    alloy_sol_types::private::AssertTypeEq::<
11329                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11330                    >(_) => {}
11331                }
11332            }
11333            #[automatically_derived]
11334            #[doc(hidden)]
11335            impl ::core::convert::From<permissionedProverReturn>
11336            for UnderlyingRustTuple<'_> {
11337                fn from(value: permissionedProverReturn) -> Self {
11338                    (value._0,)
11339                }
11340            }
11341            #[automatically_derived]
11342            #[doc(hidden)]
11343            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11344            for permissionedProverReturn {
11345                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11346                    Self { _0: tuple.0 }
11347                }
11348            }
11349        }
11350        #[automatically_derived]
11351        impl alloy_sol_types::SolCall for permissionedProverCall {
11352            type Parameters<'a> = ();
11353            type Token<'a> = <Self::Parameters<
11354                'a,
11355            > as alloy_sol_types::SolType>::Token<'a>;
11356            type Return = alloy::sol_types::private::Address;
11357            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11358            type ReturnToken<'a> = <Self::ReturnTuple<
11359                'a,
11360            > as alloy_sol_types::SolType>::Token<'a>;
11361            const SIGNATURE: &'static str = "permissionedProver()";
11362            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11363            #[inline]
11364            fn new<'a>(
11365                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11366            ) -> Self {
11367                tuple.into()
11368            }
11369            #[inline]
11370            fn tokenize(&self) -> Self::Token<'_> {
11371                ()
11372            }
11373            #[inline]
11374            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11375                (
11376                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11377                        ret,
11378                    ),
11379                )
11380            }
11381            #[inline]
11382            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11383                <Self::ReturnTuple<
11384                    '_,
11385                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11386                    .map(|r| {
11387                        let r: permissionedProverReturn = r.into();
11388                        r._0
11389                    })
11390            }
11391            #[inline]
11392            fn abi_decode_returns_validate(
11393                data: &[u8],
11394            ) -> alloy_sol_types::Result<Self::Return> {
11395                <Self::ReturnTuple<
11396                    '_,
11397                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11398                    .map(|r| {
11399                        let r: permissionedProverReturn = r.into();
11400                        r._0
11401                    })
11402            }
11403        }
11404    };
11405    #[derive(serde::Serialize, serde::Deserialize)]
11406    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11407    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11408```solidity
11409function proxiableUUID() external view returns (bytes32);
11410```*/
11411    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11412    #[derive(Clone)]
11413    pub struct proxiableUUIDCall;
11414    #[derive(serde::Serialize, serde::Deserialize)]
11415    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11416    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11417    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11418    #[derive(Clone)]
11419    pub struct proxiableUUIDReturn {
11420        #[allow(missing_docs)]
11421        pub _0: alloy::sol_types::private::FixedBytes<32>,
11422    }
11423    #[allow(
11424        non_camel_case_types,
11425        non_snake_case,
11426        clippy::pub_underscore_fields,
11427        clippy::style
11428    )]
11429    const _: () = {
11430        use alloy::sol_types as alloy_sol_types;
11431        {
11432            #[doc(hidden)]
11433            type UnderlyingSolTuple<'a> = ();
11434            #[doc(hidden)]
11435            type UnderlyingRustTuple<'a> = ();
11436            #[cfg(test)]
11437            #[allow(dead_code, unreachable_patterns)]
11438            fn _type_assertion(
11439                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11440            ) {
11441                match _t {
11442                    alloy_sol_types::private::AssertTypeEq::<
11443                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11444                    >(_) => {}
11445                }
11446            }
11447            #[automatically_derived]
11448            #[doc(hidden)]
11449            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11450                fn from(value: proxiableUUIDCall) -> Self {
11451                    ()
11452                }
11453            }
11454            #[automatically_derived]
11455            #[doc(hidden)]
11456            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11457                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11458                    Self
11459                }
11460            }
11461        }
11462        {
11463            #[doc(hidden)]
11464            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11465            #[doc(hidden)]
11466            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11467            #[cfg(test)]
11468            #[allow(dead_code, unreachable_patterns)]
11469            fn _type_assertion(
11470                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11471            ) {
11472                match _t {
11473                    alloy_sol_types::private::AssertTypeEq::<
11474                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11475                    >(_) => {}
11476                }
11477            }
11478            #[automatically_derived]
11479            #[doc(hidden)]
11480            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11481                fn from(value: proxiableUUIDReturn) -> Self {
11482                    (value._0,)
11483                }
11484            }
11485            #[automatically_derived]
11486            #[doc(hidden)]
11487            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11488                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11489                    Self { _0: tuple.0 }
11490                }
11491            }
11492        }
11493        #[automatically_derived]
11494        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11495            type Parameters<'a> = ();
11496            type Token<'a> = <Self::Parameters<
11497                'a,
11498            > as alloy_sol_types::SolType>::Token<'a>;
11499            type Return = alloy::sol_types::private::FixedBytes<32>;
11500            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11501            type ReturnToken<'a> = <Self::ReturnTuple<
11502                'a,
11503            > as alloy_sol_types::SolType>::Token<'a>;
11504            const SIGNATURE: &'static str = "proxiableUUID()";
11505            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11506            #[inline]
11507            fn new<'a>(
11508                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11509            ) -> Self {
11510                tuple.into()
11511            }
11512            #[inline]
11513            fn tokenize(&self) -> Self::Token<'_> {
11514                ()
11515            }
11516            #[inline]
11517            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11518                (
11519                    <alloy::sol_types::sol_data::FixedBytes<
11520                        32,
11521                    > as alloy_sol_types::SolType>::tokenize(ret),
11522                )
11523            }
11524            #[inline]
11525            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11526                <Self::ReturnTuple<
11527                    '_,
11528                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11529                    .map(|r| {
11530                        let r: proxiableUUIDReturn = r.into();
11531                        r._0
11532                    })
11533            }
11534            #[inline]
11535            fn abi_decode_returns_validate(
11536                data: &[u8],
11537            ) -> alloy_sol_types::Result<Self::Return> {
11538                <Self::ReturnTuple<
11539                    '_,
11540                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11541                    .map(|r| {
11542                        let r: proxiableUUIDReturn = r.into();
11543                        r._0
11544                    })
11545            }
11546        }
11547    };
11548    #[derive(serde::Serialize, serde::Deserialize)]
11549    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11550    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11551```solidity
11552function renounceOwnership() external;
11553```*/
11554    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11555    #[derive(Clone)]
11556    pub struct renounceOwnershipCall;
11557    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11559    #[derive(Clone)]
11560    pub struct renounceOwnershipReturn {}
11561    #[allow(
11562        non_camel_case_types,
11563        non_snake_case,
11564        clippy::pub_underscore_fields,
11565        clippy::style
11566    )]
11567    const _: () = {
11568        use alloy::sol_types as alloy_sol_types;
11569        {
11570            #[doc(hidden)]
11571            type UnderlyingSolTuple<'a> = ();
11572            #[doc(hidden)]
11573            type UnderlyingRustTuple<'a> = ();
11574            #[cfg(test)]
11575            #[allow(dead_code, unreachable_patterns)]
11576            fn _type_assertion(
11577                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11578            ) {
11579                match _t {
11580                    alloy_sol_types::private::AssertTypeEq::<
11581                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11582                    >(_) => {}
11583                }
11584            }
11585            #[automatically_derived]
11586            #[doc(hidden)]
11587            impl ::core::convert::From<renounceOwnershipCall>
11588            for UnderlyingRustTuple<'_> {
11589                fn from(value: renounceOwnershipCall) -> Self {
11590                    ()
11591                }
11592            }
11593            #[automatically_derived]
11594            #[doc(hidden)]
11595            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11596            for renounceOwnershipCall {
11597                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11598                    Self
11599                }
11600            }
11601        }
11602        {
11603            #[doc(hidden)]
11604            type UnderlyingSolTuple<'a> = ();
11605            #[doc(hidden)]
11606            type UnderlyingRustTuple<'a> = ();
11607            #[cfg(test)]
11608            #[allow(dead_code, unreachable_patterns)]
11609            fn _type_assertion(
11610                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11611            ) {
11612                match _t {
11613                    alloy_sol_types::private::AssertTypeEq::<
11614                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11615                    >(_) => {}
11616                }
11617            }
11618            #[automatically_derived]
11619            #[doc(hidden)]
11620            impl ::core::convert::From<renounceOwnershipReturn>
11621            for UnderlyingRustTuple<'_> {
11622                fn from(value: renounceOwnershipReturn) -> Self {
11623                    ()
11624                }
11625            }
11626            #[automatically_derived]
11627            #[doc(hidden)]
11628            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11629            for renounceOwnershipReturn {
11630                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11631                    Self {}
11632                }
11633            }
11634        }
11635        impl renounceOwnershipReturn {
11636            fn _tokenize(
11637                &self,
11638            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11639                ()
11640            }
11641        }
11642        #[automatically_derived]
11643        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11644            type Parameters<'a> = ();
11645            type Token<'a> = <Self::Parameters<
11646                'a,
11647            > as alloy_sol_types::SolType>::Token<'a>;
11648            type Return = renounceOwnershipReturn;
11649            type ReturnTuple<'a> = ();
11650            type ReturnToken<'a> = <Self::ReturnTuple<
11651                'a,
11652            > as alloy_sol_types::SolType>::Token<'a>;
11653            const SIGNATURE: &'static str = "renounceOwnership()";
11654            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11655            #[inline]
11656            fn new<'a>(
11657                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11658            ) -> Self {
11659                tuple.into()
11660            }
11661            #[inline]
11662            fn tokenize(&self) -> Self::Token<'_> {
11663                ()
11664            }
11665            #[inline]
11666            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11667                renounceOwnershipReturn::_tokenize(ret)
11668            }
11669            #[inline]
11670            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11671                <Self::ReturnTuple<
11672                    '_,
11673                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11674                    .map(Into::into)
11675            }
11676            #[inline]
11677            fn abi_decode_returns_validate(
11678                data: &[u8],
11679            ) -> alloy_sol_types::Result<Self::Return> {
11680                <Self::ReturnTuple<
11681                    '_,
11682                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11683                    .map(Into::into)
11684            }
11685        }
11686    };
11687    #[derive(serde::Serialize, serde::Deserialize)]
11688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11689    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11690```solidity
11691function setPermissionedProver(address prover) external;
11692```*/
11693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11694    #[derive(Clone)]
11695    pub struct setPermissionedProverCall {
11696        #[allow(missing_docs)]
11697        pub prover: alloy::sol_types::private::Address,
11698    }
11699    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11701    #[derive(Clone)]
11702    pub struct setPermissionedProverReturn {}
11703    #[allow(
11704        non_camel_case_types,
11705        non_snake_case,
11706        clippy::pub_underscore_fields,
11707        clippy::style
11708    )]
11709    const _: () = {
11710        use alloy::sol_types as alloy_sol_types;
11711        {
11712            #[doc(hidden)]
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            type UnderlyingSolTuple<'a> = ();
11747            #[doc(hidden)]
11748            type UnderlyingRustTuple<'a> = ();
11749            #[cfg(test)]
11750            #[allow(dead_code, unreachable_patterns)]
11751            fn _type_assertion(
11752                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11753            ) {
11754                match _t {
11755                    alloy_sol_types::private::AssertTypeEq::<
11756                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11757                    >(_) => {}
11758                }
11759            }
11760            #[automatically_derived]
11761            #[doc(hidden)]
11762            impl ::core::convert::From<setPermissionedProverReturn>
11763            for UnderlyingRustTuple<'_> {
11764                fn from(value: setPermissionedProverReturn) -> Self {
11765                    ()
11766                }
11767            }
11768            #[automatically_derived]
11769            #[doc(hidden)]
11770            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11771            for setPermissionedProverReturn {
11772                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11773                    Self {}
11774                }
11775            }
11776        }
11777        impl setPermissionedProverReturn {
11778            fn _tokenize(
11779                &self,
11780            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
11781                '_,
11782            > {
11783                ()
11784            }
11785        }
11786        #[automatically_derived]
11787        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11788            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11789            type Token<'a> = <Self::Parameters<
11790                'a,
11791            > as alloy_sol_types::SolType>::Token<'a>;
11792            type Return = setPermissionedProverReturn;
11793            type ReturnTuple<'a> = ();
11794            type ReturnToken<'a> = <Self::ReturnTuple<
11795                'a,
11796            > as alloy_sol_types::SolType>::Token<'a>;
11797            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11798            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11799            #[inline]
11800            fn new<'a>(
11801                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11802            ) -> Self {
11803                tuple.into()
11804            }
11805            #[inline]
11806            fn tokenize(&self) -> Self::Token<'_> {
11807                (
11808                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11809                        &self.prover,
11810                    ),
11811                )
11812            }
11813            #[inline]
11814            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11815                setPermissionedProverReturn::_tokenize(ret)
11816            }
11817            #[inline]
11818            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11819                <Self::ReturnTuple<
11820                    '_,
11821                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11822                    .map(Into::into)
11823            }
11824            #[inline]
11825            fn abi_decode_returns_validate(
11826                data: &[u8],
11827            ) -> alloy_sol_types::Result<Self::Return> {
11828                <Self::ReturnTuple<
11829                    '_,
11830                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11831                    .map(Into::into)
11832            }
11833        }
11834    };
11835    #[derive(serde::Serialize, serde::Deserialize)]
11836    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11837    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11838```solidity
11839function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11840```*/
11841    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11842    #[derive(Clone)]
11843    pub struct setStateHistoryRetentionPeriodCall {
11844        #[allow(missing_docs)]
11845        pub historySeconds: u32,
11846    }
11847    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11849    #[derive(Clone)]
11850    pub struct setStateHistoryRetentionPeriodReturn {}
11851    #[allow(
11852        non_camel_case_types,
11853        non_snake_case,
11854        clippy::pub_underscore_fields,
11855        clippy::style
11856    )]
11857    const _: () = {
11858        use alloy::sol_types as alloy_sol_types;
11859        {
11860            #[doc(hidden)]
11861            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11862            #[doc(hidden)]
11863            type UnderlyingRustTuple<'a> = (u32,);
11864            #[cfg(test)]
11865            #[allow(dead_code, unreachable_patterns)]
11866            fn _type_assertion(
11867                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11868            ) {
11869                match _t {
11870                    alloy_sol_types::private::AssertTypeEq::<
11871                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11872                    >(_) => {}
11873                }
11874            }
11875            #[automatically_derived]
11876            #[doc(hidden)]
11877            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
11878            for UnderlyingRustTuple<'_> {
11879                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11880                    (value.historySeconds,)
11881                }
11882            }
11883            #[automatically_derived]
11884            #[doc(hidden)]
11885            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11886            for setStateHistoryRetentionPeriodCall {
11887                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11888                    Self { historySeconds: tuple.0 }
11889                }
11890            }
11891        }
11892        {
11893            #[doc(hidden)]
11894            type UnderlyingSolTuple<'a> = ();
11895            #[doc(hidden)]
11896            type UnderlyingRustTuple<'a> = ();
11897            #[cfg(test)]
11898            #[allow(dead_code, unreachable_patterns)]
11899            fn _type_assertion(
11900                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11901            ) {
11902                match _t {
11903                    alloy_sol_types::private::AssertTypeEq::<
11904                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11905                    >(_) => {}
11906                }
11907            }
11908            #[automatically_derived]
11909            #[doc(hidden)]
11910            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
11911            for UnderlyingRustTuple<'_> {
11912                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11913                    ()
11914                }
11915            }
11916            #[automatically_derived]
11917            #[doc(hidden)]
11918            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11919            for setStateHistoryRetentionPeriodReturn {
11920                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11921                    Self {}
11922                }
11923            }
11924        }
11925        impl setStateHistoryRetentionPeriodReturn {
11926            fn _tokenize(
11927                &self,
11928            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
11929                '_,
11930            > {
11931                ()
11932            }
11933        }
11934        #[automatically_derived]
11935        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
11936            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11937            type Token<'a> = <Self::Parameters<
11938                'a,
11939            > as alloy_sol_types::SolType>::Token<'a>;
11940            type Return = setStateHistoryRetentionPeriodReturn;
11941            type ReturnTuple<'a> = ();
11942            type ReturnToken<'a> = <Self::ReturnTuple<
11943                'a,
11944            > as alloy_sol_types::SolType>::Token<'a>;
11945            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
11946            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
11947            #[inline]
11948            fn new<'a>(
11949                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11950            ) -> Self {
11951                tuple.into()
11952            }
11953            #[inline]
11954            fn tokenize(&self) -> Self::Token<'_> {
11955                (
11956                    <alloy::sol_types::sol_data::Uint<
11957                        32,
11958                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
11959                )
11960            }
11961            #[inline]
11962            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11963                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
11964            }
11965            #[inline]
11966            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11967                <Self::ReturnTuple<
11968                    '_,
11969                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11970                    .map(Into::into)
11971            }
11972            #[inline]
11973            fn abi_decode_returns_validate(
11974                data: &[u8],
11975            ) -> alloy_sol_types::Result<Self::Return> {
11976                <Self::ReturnTuple<
11977                    '_,
11978                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11979                    .map(Into::into)
11980            }
11981        }
11982    };
11983    #[derive(serde::Serialize, serde::Deserialize)]
11984    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11985    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
11986```solidity
11987function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
11988```*/
11989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11990    #[derive(Clone)]
11991    pub struct setstateHistoryRetentionPeriodCall {
11992        #[allow(missing_docs)]
11993        pub historySeconds: u32,
11994    }
11995    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
11996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11997    #[derive(Clone)]
11998    pub struct setstateHistoryRetentionPeriodReturn {}
11999    #[allow(
12000        non_camel_case_types,
12001        non_snake_case,
12002        clippy::pub_underscore_fields,
12003        clippy::style
12004    )]
12005    const _: () = {
12006        use alloy::sol_types as alloy_sol_types;
12007        {
12008            #[doc(hidden)]
12009            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12010            #[doc(hidden)]
12011            type UnderlyingRustTuple<'a> = (u32,);
12012            #[cfg(test)]
12013            #[allow(dead_code, unreachable_patterns)]
12014            fn _type_assertion(
12015                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12016            ) {
12017                match _t {
12018                    alloy_sol_types::private::AssertTypeEq::<
12019                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12020                    >(_) => {}
12021                }
12022            }
12023            #[automatically_derived]
12024            #[doc(hidden)]
12025            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12026            for UnderlyingRustTuple<'_> {
12027                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12028                    (value.historySeconds,)
12029                }
12030            }
12031            #[automatically_derived]
12032            #[doc(hidden)]
12033            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12034            for setstateHistoryRetentionPeriodCall {
12035                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12036                    Self { historySeconds: tuple.0 }
12037                }
12038            }
12039        }
12040        {
12041            #[doc(hidden)]
12042            type UnderlyingSolTuple<'a> = ();
12043            #[doc(hidden)]
12044            type UnderlyingRustTuple<'a> = ();
12045            #[cfg(test)]
12046            #[allow(dead_code, unreachable_patterns)]
12047            fn _type_assertion(
12048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12049            ) {
12050                match _t {
12051                    alloy_sol_types::private::AssertTypeEq::<
12052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12053                    >(_) => {}
12054                }
12055            }
12056            #[automatically_derived]
12057            #[doc(hidden)]
12058            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12059            for UnderlyingRustTuple<'_> {
12060                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12061                    ()
12062                }
12063            }
12064            #[automatically_derived]
12065            #[doc(hidden)]
12066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12067            for setstateHistoryRetentionPeriodReturn {
12068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12069                    Self {}
12070                }
12071            }
12072        }
12073        impl setstateHistoryRetentionPeriodReturn {
12074            fn _tokenize(
12075                &self,
12076            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12077                '_,
12078            > {
12079                ()
12080            }
12081        }
12082        #[automatically_derived]
12083        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12084            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12085            type Token<'a> = <Self::Parameters<
12086                'a,
12087            > as alloy_sol_types::SolType>::Token<'a>;
12088            type Return = setstateHistoryRetentionPeriodReturn;
12089            type ReturnTuple<'a> = ();
12090            type ReturnToken<'a> = <Self::ReturnTuple<
12091                'a,
12092            > as alloy_sol_types::SolType>::Token<'a>;
12093            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12094            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12095            #[inline]
12096            fn new<'a>(
12097                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12098            ) -> Self {
12099                tuple.into()
12100            }
12101            #[inline]
12102            fn tokenize(&self) -> Self::Token<'_> {
12103                (
12104                    <alloy::sol_types::sol_data::Uint<
12105                        32,
12106                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12107                )
12108            }
12109            #[inline]
12110            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12111                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12112            }
12113            #[inline]
12114            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12115                <Self::ReturnTuple<
12116                    '_,
12117                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12118                    .map(Into::into)
12119            }
12120            #[inline]
12121            fn abi_decode_returns_validate(
12122                data: &[u8],
12123            ) -> alloy_sol_types::Result<Self::Return> {
12124                <Self::ReturnTuple<
12125                    '_,
12126                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12127                    .map(Into::into)
12128            }
12129        }
12130    };
12131    #[derive(serde::Serialize, serde::Deserialize)]
12132    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12133    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12134```solidity
12135function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12136```*/
12137    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12138    #[derive(Clone)]
12139    pub struct stateHistoryCommitmentsCall(
12140        pub alloy::sol_types::private::primitives::aliases::U256,
12141    );
12142    #[derive(serde::Serialize, serde::Deserialize)]
12143    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12144    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12145    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12146    #[derive(Clone)]
12147    pub struct stateHistoryCommitmentsReturn {
12148        #[allow(missing_docs)]
12149        pub l1BlockHeight: u64,
12150        #[allow(missing_docs)]
12151        pub l1BlockTimestamp: u64,
12152        #[allow(missing_docs)]
12153        pub hotShotBlockHeight: u64,
12154        #[allow(missing_docs)]
12155        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12156    }
12157    #[allow(
12158        non_camel_case_types,
12159        non_snake_case,
12160        clippy::pub_underscore_fields,
12161        clippy::style
12162    )]
12163    const _: () = {
12164        use alloy::sol_types as alloy_sol_types;
12165        {
12166            #[doc(hidden)]
12167            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12168            #[doc(hidden)]
12169            type UnderlyingRustTuple<'a> = (
12170                alloy::sol_types::private::primitives::aliases::U256,
12171            );
12172            #[cfg(test)]
12173            #[allow(dead_code, unreachable_patterns)]
12174            fn _type_assertion(
12175                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12176            ) {
12177                match _t {
12178                    alloy_sol_types::private::AssertTypeEq::<
12179                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12180                    >(_) => {}
12181                }
12182            }
12183            #[automatically_derived]
12184            #[doc(hidden)]
12185            impl ::core::convert::From<stateHistoryCommitmentsCall>
12186            for UnderlyingRustTuple<'_> {
12187                fn from(value: stateHistoryCommitmentsCall) -> Self {
12188                    (value.0,)
12189                }
12190            }
12191            #[automatically_derived]
12192            #[doc(hidden)]
12193            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12194            for stateHistoryCommitmentsCall {
12195                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12196                    Self(tuple.0)
12197                }
12198            }
12199        }
12200        {
12201            #[doc(hidden)]
12202            type UnderlyingSolTuple<'a> = (
12203                alloy::sol_types::sol_data::Uint<64>,
12204                alloy::sol_types::sol_data::Uint<64>,
12205                alloy::sol_types::sol_data::Uint<64>,
12206                BN254::ScalarField,
12207            );
12208            #[doc(hidden)]
12209            type UnderlyingRustTuple<'a> = (
12210                u64,
12211                u64,
12212                u64,
12213                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12214            );
12215            #[cfg(test)]
12216            #[allow(dead_code, unreachable_patterns)]
12217            fn _type_assertion(
12218                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12219            ) {
12220                match _t {
12221                    alloy_sol_types::private::AssertTypeEq::<
12222                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12223                    >(_) => {}
12224                }
12225            }
12226            #[automatically_derived]
12227            #[doc(hidden)]
12228            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12229            for UnderlyingRustTuple<'_> {
12230                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12231                    (
12232                        value.l1BlockHeight,
12233                        value.l1BlockTimestamp,
12234                        value.hotShotBlockHeight,
12235                        value.hotShotBlockCommRoot,
12236                    )
12237                }
12238            }
12239            #[automatically_derived]
12240            #[doc(hidden)]
12241            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12242            for stateHistoryCommitmentsReturn {
12243                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12244                    Self {
12245                        l1BlockHeight: tuple.0,
12246                        l1BlockTimestamp: tuple.1,
12247                        hotShotBlockHeight: tuple.2,
12248                        hotShotBlockCommRoot: tuple.3,
12249                    }
12250                }
12251            }
12252        }
12253        impl stateHistoryCommitmentsReturn {
12254            fn _tokenize(
12255                &self,
12256            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
12257                '_,
12258            > {
12259                (
12260                    <alloy::sol_types::sol_data::Uint<
12261                        64,
12262                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
12263                    <alloy::sol_types::sol_data::Uint<
12264                        64,
12265                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
12266                    <alloy::sol_types::sol_data::Uint<
12267                        64,
12268                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
12269                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
12270                        &self.hotShotBlockCommRoot,
12271                    ),
12272                )
12273            }
12274        }
12275        #[automatically_derived]
12276        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12277            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12278            type Token<'a> = <Self::Parameters<
12279                'a,
12280            > as alloy_sol_types::SolType>::Token<'a>;
12281            type Return = stateHistoryCommitmentsReturn;
12282            type ReturnTuple<'a> = (
12283                alloy::sol_types::sol_data::Uint<64>,
12284                alloy::sol_types::sol_data::Uint<64>,
12285                alloy::sol_types::sol_data::Uint<64>,
12286                BN254::ScalarField,
12287            );
12288            type ReturnToken<'a> = <Self::ReturnTuple<
12289                'a,
12290            > as alloy_sol_types::SolType>::Token<'a>;
12291            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12292            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12293            #[inline]
12294            fn new<'a>(
12295                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12296            ) -> Self {
12297                tuple.into()
12298            }
12299            #[inline]
12300            fn tokenize(&self) -> Self::Token<'_> {
12301                (
12302                    <alloy::sol_types::sol_data::Uint<
12303                        256,
12304                    > as alloy_sol_types::SolType>::tokenize(&self.0),
12305                )
12306            }
12307            #[inline]
12308            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12309                stateHistoryCommitmentsReturn::_tokenize(ret)
12310            }
12311            #[inline]
12312            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12313                <Self::ReturnTuple<
12314                    '_,
12315                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12316                    .map(Into::into)
12317            }
12318            #[inline]
12319            fn abi_decode_returns_validate(
12320                data: &[u8],
12321            ) -> alloy_sol_types::Result<Self::Return> {
12322                <Self::ReturnTuple<
12323                    '_,
12324                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12325                    .map(Into::into)
12326            }
12327        }
12328    };
12329    #[derive(serde::Serialize, serde::Deserialize)]
12330    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12331    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12332```solidity
12333function stateHistoryFirstIndex() external view returns (uint64);
12334```*/
12335    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12336    #[derive(Clone)]
12337    pub struct stateHistoryFirstIndexCall;
12338    #[derive(serde::Serialize, serde::Deserialize)]
12339    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12340    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12341    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12342    #[derive(Clone)]
12343    pub struct stateHistoryFirstIndexReturn {
12344        #[allow(missing_docs)]
12345        pub _0: u64,
12346    }
12347    #[allow(
12348        non_camel_case_types,
12349        non_snake_case,
12350        clippy::pub_underscore_fields,
12351        clippy::style
12352    )]
12353    const _: () = {
12354        use alloy::sol_types as alloy_sol_types;
12355        {
12356            #[doc(hidden)]
12357            type UnderlyingSolTuple<'a> = ();
12358            #[doc(hidden)]
12359            type UnderlyingRustTuple<'a> = ();
12360            #[cfg(test)]
12361            #[allow(dead_code, unreachable_patterns)]
12362            fn _type_assertion(
12363                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12364            ) {
12365                match _t {
12366                    alloy_sol_types::private::AssertTypeEq::<
12367                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12368                    >(_) => {}
12369                }
12370            }
12371            #[automatically_derived]
12372            #[doc(hidden)]
12373            impl ::core::convert::From<stateHistoryFirstIndexCall>
12374            for UnderlyingRustTuple<'_> {
12375                fn from(value: stateHistoryFirstIndexCall) -> Self {
12376                    ()
12377                }
12378            }
12379            #[automatically_derived]
12380            #[doc(hidden)]
12381            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12382            for stateHistoryFirstIndexCall {
12383                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12384                    Self
12385                }
12386            }
12387        }
12388        {
12389            #[doc(hidden)]
12390            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12391            #[doc(hidden)]
12392            type UnderlyingRustTuple<'a> = (u64,);
12393            #[cfg(test)]
12394            #[allow(dead_code, unreachable_patterns)]
12395            fn _type_assertion(
12396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12397            ) {
12398                match _t {
12399                    alloy_sol_types::private::AssertTypeEq::<
12400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12401                    >(_) => {}
12402                }
12403            }
12404            #[automatically_derived]
12405            #[doc(hidden)]
12406            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12407            for UnderlyingRustTuple<'_> {
12408                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12409                    (value._0,)
12410                }
12411            }
12412            #[automatically_derived]
12413            #[doc(hidden)]
12414            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12415            for stateHistoryFirstIndexReturn {
12416                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12417                    Self { _0: tuple.0 }
12418                }
12419            }
12420        }
12421        #[automatically_derived]
12422        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12423            type Parameters<'a> = ();
12424            type Token<'a> = <Self::Parameters<
12425                'a,
12426            > as alloy_sol_types::SolType>::Token<'a>;
12427            type Return = u64;
12428            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12429            type ReturnToken<'a> = <Self::ReturnTuple<
12430                'a,
12431            > as alloy_sol_types::SolType>::Token<'a>;
12432            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12433            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12434            #[inline]
12435            fn new<'a>(
12436                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12437            ) -> Self {
12438                tuple.into()
12439            }
12440            #[inline]
12441            fn tokenize(&self) -> Self::Token<'_> {
12442                ()
12443            }
12444            #[inline]
12445            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12446                (
12447                    <alloy::sol_types::sol_data::Uint<
12448                        64,
12449                    > as alloy_sol_types::SolType>::tokenize(ret),
12450                )
12451            }
12452            #[inline]
12453            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12454                <Self::ReturnTuple<
12455                    '_,
12456                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12457                    .map(|r| {
12458                        let r: stateHistoryFirstIndexReturn = r.into();
12459                        r._0
12460                    })
12461            }
12462            #[inline]
12463            fn abi_decode_returns_validate(
12464                data: &[u8],
12465            ) -> alloy_sol_types::Result<Self::Return> {
12466                <Self::ReturnTuple<
12467                    '_,
12468                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12469                    .map(|r| {
12470                        let r: stateHistoryFirstIndexReturn = r.into();
12471                        r._0
12472                    })
12473            }
12474        }
12475    };
12476    #[derive(serde::Serialize, serde::Deserialize)]
12477    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12478    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12479```solidity
12480function stateHistoryRetentionPeriod() external view returns (uint32);
12481```*/
12482    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12483    #[derive(Clone)]
12484    pub struct stateHistoryRetentionPeriodCall;
12485    #[derive(serde::Serialize, serde::Deserialize)]
12486    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12487    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12488    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12489    #[derive(Clone)]
12490    pub struct stateHistoryRetentionPeriodReturn {
12491        #[allow(missing_docs)]
12492        pub _0: u32,
12493    }
12494    #[allow(
12495        non_camel_case_types,
12496        non_snake_case,
12497        clippy::pub_underscore_fields,
12498        clippy::style
12499    )]
12500    const _: () = {
12501        use alloy::sol_types as alloy_sol_types;
12502        {
12503            #[doc(hidden)]
12504            type UnderlyingSolTuple<'a> = ();
12505            #[doc(hidden)]
12506            type UnderlyingRustTuple<'a> = ();
12507            #[cfg(test)]
12508            #[allow(dead_code, unreachable_patterns)]
12509            fn _type_assertion(
12510                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12511            ) {
12512                match _t {
12513                    alloy_sol_types::private::AssertTypeEq::<
12514                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12515                    >(_) => {}
12516                }
12517            }
12518            #[automatically_derived]
12519            #[doc(hidden)]
12520            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12521            for UnderlyingRustTuple<'_> {
12522                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12523                    ()
12524                }
12525            }
12526            #[automatically_derived]
12527            #[doc(hidden)]
12528            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12529            for stateHistoryRetentionPeriodCall {
12530                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12531                    Self
12532                }
12533            }
12534        }
12535        {
12536            #[doc(hidden)]
12537            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12538            #[doc(hidden)]
12539            type UnderlyingRustTuple<'a> = (u32,);
12540            #[cfg(test)]
12541            #[allow(dead_code, unreachable_patterns)]
12542            fn _type_assertion(
12543                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12544            ) {
12545                match _t {
12546                    alloy_sol_types::private::AssertTypeEq::<
12547                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12548                    >(_) => {}
12549                }
12550            }
12551            #[automatically_derived]
12552            #[doc(hidden)]
12553            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12554            for UnderlyingRustTuple<'_> {
12555                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12556                    (value._0,)
12557                }
12558            }
12559            #[automatically_derived]
12560            #[doc(hidden)]
12561            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12562            for stateHistoryRetentionPeriodReturn {
12563                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12564                    Self { _0: tuple.0 }
12565                }
12566            }
12567        }
12568        #[automatically_derived]
12569        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12570            type Parameters<'a> = ();
12571            type Token<'a> = <Self::Parameters<
12572                'a,
12573            > as alloy_sol_types::SolType>::Token<'a>;
12574            type Return = u32;
12575            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12576            type ReturnToken<'a> = <Self::ReturnTuple<
12577                'a,
12578            > as alloy_sol_types::SolType>::Token<'a>;
12579            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12580            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12581            #[inline]
12582            fn new<'a>(
12583                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12584            ) -> Self {
12585                tuple.into()
12586            }
12587            #[inline]
12588            fn tokenize(&self) -> Self::Token<'_> {
12589                ()
12590            }
12591            #[inline]
12592            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12593                (
12594                    <alloy::sol_types::sol_data::Uint<
12595                        32,
12596                    > as alloy_sol_types::SolType>::tokenize(ret),
12597                )
12598            }
12599            #[inline]
12600            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12601                <Self::ReturnTuple<
12602                    '_,
12603                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12604                    .map(|r| {
12605                        let r: stateHistoryRetentionPeriodReturn = r.into();
12606                        r._0
12607                    })
12608            }
12609            #[inline]
12610            fn abi_decode_returns_validate(
12611                data: &[u8],
12612            ) -> alloy_sol_types::Result<Self::Return> {
12613                <Self::ReturnTuple<
12614                    '_,
12615                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12616                    .map(|r| {
12617                        let r: stateHistoryRetentionPeriodReturn = r.into();
12618                        r._0
12619                    })
12620            }
12621        }
12622    };
12623    #[derive(serde::Serialize, serde::Deserialize)]
12624    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12625    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12626```solidity
12627function transferOwnership(address newOwner) external;
12628```*/
12629    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12630    #[derive(Clone)]
12631    pub struct transferOwnershipCall {
12632        #[allow(missing_docs)]
12633        pub newOwner: alloy::sol_types::private::Address,
12634    }
12635    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12636    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12637    #[derive(Clone)]
12638    pub struct transferOwnershipReturn {}
12639    #[allow(
12640        non_camel_case_types,
12641        non_snake_case,
12642        clippy::pub_underscore_fields,
12643        clippy::style
12644    )]
12645    const _: () = {
12646        use alloy::sol_types as alloy_sol_types;
12647        {
12648            #[doc(hidden)]
12649            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12650            #[doc(hidden)]
12651            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12652            #[cfg(test)]
12653            #[allow(dead_code, unreachable_patterns)]
12654            fn _type_assertion(
12655                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12656            ) {
12657                match _t {
12658                    alloy_sol_types::private::AssertTypeEq::<
12659                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12660                    >(_) => {}
12661                }
12662            }
12663            #[automatically_derived]
12664            #[doc(hidden)]
12665            impl ::core::convert::From<transferOwnershipCall>
12666            for UnderlyingRustTuple<'_> {
12667                fn from(value: transferOwnershipCall) -> Self {
12668                    (value.newOwner,)
12669                }
12670            }
12671            #[automatically_derived]
12672            #[doc(hidden)]
12673            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12674            for transferOwnershipCall {
12675                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12676                    Self { newOwner: tuple.0 }
12677                }
12678            }
12679        }
12680        {
12681            #[doc(hidden)]
12682            type UnderlyingSolTuple<'a> = ();
12683            #[doc(hidden)]
12684            type UnderlyingRustTuple<'a> = ();
12685            #[cfg(test)]
12686            #[allow(dead_code, unreachable_patterns)]
12687            fn _type_assertion(
12688                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12689            ) {
12690                match _t {
12691                    alloy_sol_types::private::AssertTypeEq::<
12692                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12693                    >(_) => {}
12694                }
12695            }
12696            #[automatically_derived]
12697            #[doc(hidden)]
12698            impl ::core::convert::From<transferOwnershipReturn>
12699            for UnderlyingRustTuple<'_> {
12700                fn from(value: transferOwnershipReturn) -> Self {
12701                    ()
12702                }
12703            }
12704            #[automatically_derived]
12705            #[doc(hidden)]
12706            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12707            for transferOwnershipReturn {
12708                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12709                    Self {}
12710                }
12711            }
12712        }
12713        impl transferOwnershipReturn {
12714            fn _tokenize(
12715                &self,
12716            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12717                ()
12718            }
12719        }
12720        #[automatically_derived]
12721        impl alloy_sol_types::SolCall for transferOwnershipCall {
12722            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12723            type Token<'a> = <Self::Parameters<
12724                'a,
12725            > as alloy_sol_types::SolType>::Token<'a>;
12726            type Return = transferOwnershipReturn;
12727            type ReturnTuple<'a> = ();
12728            type ReturnToken<'a> = <Self::ReturnTuple<
12729                'a,
12730            > as alloy_sol_types::SolType>::Token<'a>;
12731            const SIGNATURE: &'static str = "transferOwnership(address)";
12732            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12733            #[inline]
12734            fn new<'a>(
12735                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12736            ) -> Self {
12737                tuple.into()
12738            }
12739            #[inline]
12740            fn tokenize(&self) -> Self::Token<'_> {
12741                (
12742                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12743                        &self.newOwner,
12744                    ),
12745                )
12746            }
12747            #[inline]
12748            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12749                transferOwnershipReturn::_tokenize(ret)
12750            }
12751            #[inline]
12752            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12753                <Self::ReturnTuple<
12754                    '_,
12755                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12756                    .map(Into::into)
12757            }
12758            #[inline]
12759            fn abi_decode_returns_validate(
12760                data: &[u8],
12761            ) -> alloy_sol_types::Result<Self::Return> {
12762                <Self::ReturnTuple<
12763                    '_,
12764                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12765                    .map(Into::into)
12766            }
12767        }
12768    };
12769    #[derive(serde::Serialize, serde::Deserialize)]
12770    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12771    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12772```solidity
12773function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12774```*/
12775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12776    #[derive(Clone)]
12777    pub struct updateEpochStartBlockCall {
12778        #[allow(missing_docs)]
12779        pub newEpochStartBlock: u64,
12780    }
12781    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12782    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12783    #[derive(Clone)]
12784    pub struct updateEpochStartBlockReturn {}
12785    #[allow(
12786        non_camel_case_types,
12787        non_snake_case,
12788        clippy::pub_underscore_fields,
12789        clippy::style
12790    )]
12791    const _: () = {
12792        use alloy::sol_types as alloy_sol_types;
12793        {
12794            #[doc(hidden)]
12795            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12796            #[doc(hidden)]
12797            type UnderlyingRustTuple<'a> = (u64,);
12798            #[cfg(test)]
12799            #[allow(dead_code, unreachable_patterns)]
12800            fn _type_assertion(
12801                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12802            ) {
12803                match _t {
12804                    alloy_sol_types::private::AssertTypeEq::<
12805                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12806                    >(_) => {}
12807                }
12808            }
12809            #[automatically_derived]
12810            #[doc(hidden)]
12811            impl ::core::convert::From<updateEpochStartBlockCall>
12812            for UnderlyingRustTuple<'_> {
12813                fn from(value: updateEpochStartBlockCall) -> Self {
12814                    (value.newEpochStartBlock,)
12815                }
12816            }
12817            #[automatically_derived]
12818            #[doc(hidden)]
12819            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12820            for updateEpochStartBlockCall {
12821                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12822                    Self {
12823                        newEpochStartBlock: tuple.0,
12824                    }
12825                }
12826            }
12827        }
12828        {
12829            #[doc(hidden)]
12830            type UnderlyingSolTuple<'a> = ();
12831            #[doc(hidden)]
12832            type UnderlyingRustTuple<'a> = ();
12833            #[cfg(test)]
12834            #[allow(dead_code, unreachable_patterns)]
12835            fn _type_assertion(
12836                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12837            ) {
12838                match _t {
12839                    alloy_sol_types::private::AssertTypeEq::<
12840                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12841                    >(_) => {}
12842                }
12843            }
12844            #[automatically_derived]
12845            #[doc(hidden)]
12846            impl ::core::convert::From<updateEpochStartBlockReturn>
12847            for UnderlyingRustTuple<'_> {
12848                fn from(value: updateEpochStartBlockReturn) -> Self {
12849                    ()
12850                }
12851            }
12852            #[automatically_derived]
12853            #[doc(hidden)]
12854            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12855            for updateEpochStartBlockReturn {
12856                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12857                    Self {}
12858                }
12859            }
12860        }
12861        impl updateEpochStartBlockReturn {
12862            fn _tokenize(
12863                &self,
12864            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
12865                '_,
12866            > {
12867                ()
12868            }
12869        }
12870        #[automatically_derived]
12871        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12872            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12873            type Token<'a> = <Self::Parameters<
12874                'a,
12875            > as alloy_sol_types::SolType>::Token<'a>;
12876            type Return = updateEpochStartBlockReturn;
12877            type ReturnTuple<'a> = ();
12878            type ReturnToken<'a> = <Self::ReturnTuple<
12879                'a,
12880            > as alloy_sol_types::SolType>::Token<'a>;
12881            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12882            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12883            #[inline]
12884            fn new<'a>(
12885                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12886            ) -> Self {
12887                tuple.into()
12888            }
12889            #[inline]
12890            fn tokenize(&self) -> Self::Token<'_> {
12891                (
12892                    <alloy::sol_types::sol_data::Uint<
12893                        64,
12894                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
12895                )
12896            }
12897            #[inline]
12898            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12899                updateEpochStartBlockReturn::_tokenize(ret)
12900            }
12901            #[inline]
12902            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12903                <Self::ReturnTuple<
12904                    '_,
12905                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12906                    .map(Into::into)
12907            }
12908            #[inline]
12909            fn abi_decode_returns_validate(
12910                data: &[u8],
12911            ) -> alloy_sol_types::Result<Self::Return> {
12912                <Self::ReturnTuple<
12913                    '_,
12914                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12915                    .map(Into::into)
12916            }
12917        }
12918    };
12919    #[derive(serde::Serialize, serde::Deserialize)]
12920    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12921    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
12922```solidity
12923function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
12924```*/
12925    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12926    #[derive(Clone)]
12927    pub struct upgradeToAndCallCall {
12928        #[allow(missing_docs)]
12929        pub newImplementation: alloy::sol_types::private::Address,
12930        #[allow(missing_docs)]
12931        pub data: alloy::sol_types::private::Bytes,
12932    }
12933    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
12934    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12935    #[derive(Clone)]
12936    pub struct upgradeToAndCallReturn {}
12937    #[allow(
12938        non_camel_case_types,
12939        non_snake_case,
12940        clippy::pub_underscore_fields,
12941        clippy::style
12942    )]
12943    const _: () = {
12944        use alloy::sol_types as alloy_sol_types;
12945        {
12946            #[doc(hidden)]
12947            type UnderlyingSolTuple<'a> = (
12948                alloy::sol_types::sol_data::Address,
12949                alloy::sol_types::sol_data::Bytes,
12950            );
12951            #[doc(hidden)]
12952            type UnderlyingRustTuple<'a> = (
12953                alloy::sol_types::private::Address,
12954                alloy::sol_types::private::Bytes,
12955            );
12956            #[cfg(test)]
12957            #[allow(dead_code, unreachable_patterns)]
12958            fn _type_assertion(
12959                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12960            ) {
12961                match _t {
12962                    alloy_sol_types::private::AssertTypeEq::<
12963                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12964                    >(_) => {}
12965                }
12966            }
12967            #[automatically_derived]
12968            #[doc(hidden)]
12969            impl ::core::convert::From<upgradeToAndCallCall>
12970            for UnderlyingRustTuple<'_> {
12971                fn from(value: upgradeToAndCallCall) -> Self {
12972                    (value.newImplementation, value.data)
12973                }
12974            }
12975            #[automatically_derived]
12976            #[doc(hidden)]
12977            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12978            for upgradeToAndCallCall {
12979                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12980                    Self {
12981                        newImplementation: tuple.0,
12982                        data: tuple.1,
12983                    }
12984                }
12985            }
12986        }
12987        {
12988            #[doc(hidden)]
12989            type UnderlyingSolTuple<'a> = ();
12990            #[doc(hidden)]
12991            type UnderlyingRustTuple<'a> = ();
12992            #[cfg(test)]
12993            #[allow(dead_code, unreachable_patterns)]
12994            fn _type_assertion(
12995                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12996            ) {
12997                match _t {
12998                    alloy_sol_types::private::AssertTypeEq::<
12999                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13000                    >(_) => {}
13001                }
13002            }
13003            #[automatically_derived]
13004            #[doc(hidden)]
13005            impl ::core::convert::From<upgradeToAndCallReturn>
13006            for UnderlyingRustTuple<'_> {
13007                fn from(value: upgradeToAndCallReturn) -> Self {
13008                    ()
13009                }
13010            }
13011            #[automatically_derived]
13012            #[doc(hidden)]
13013            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13014            for upgradeToAndCallReturn {
13015                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13016                    Self {}
13017                }
13018            }
13019        }
13020        impl upgradeToAndCallReturn {
13021            fn _tokenize(
13022                &self,
13023            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13024                ()
13025            }
13026        }
13027        #[automatically_derived]
13028        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13029            type Parameters<'a> = (
13030                alloy::sol_types::sol_data::Address,
13031                alloy::sol_types::sol_data::Bytes,
13032            );
13033            type Token<'a> = <Self::Parameters<
13034                'a,
13035            > as alloy_sol_types::SolType>::Token<'a>;
13036            type Return = upgradeToAndCallReturn;
13037            type ReturnTuple<'a> = ();
13038            type ReturnToken<'a> = <Self::ReturnTuple<
13039                'a,
13040            > as alloy_sol_types::SolType>::Token<'a>;
13041            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13042            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13043            #[inline]
13044            fn new<'a>(
13045                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13046            ) -> Self {
13047                tuple.into()
13048            }
13049            #[inline]
13050            fn tokenize(&self) -> Self::Token<'_> {
13051                (
13052                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13053                        &self.newImplementation,
13054                    ),
13055                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13056                        &self.data,
13057                    ),
13058                )
13059            }
13060            #[inline]
13061            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13062                upgradeToAndCallReturn::_tokenize(ret)
13063            }
13064            #[inline]
13065            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13066                <Self::ReturnTuple<
13067                    '_,
13068                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13069                    .map(Into::into)
13070            }
13071            #[inline]
13072            fn abi_decode_returns_validate(
13073                data: &[u8],
13074            ) -> alloy_sol_types::Result<Self::Return> {
13075                <Self::ReturnTuple<
13076                    '_,
13077                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13078                    .map(Into::into)
13079            }
13080        }
13081    };
13082    #[derive(serde::Serialize, serde::Deserialize)]
13083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13084    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13085```solidity
13086function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13087```*/
13088    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13089    #[derive(Clone)]
13090    pub struct votingStakeTableStateCall;
13091    #[derive(serde::Serialize, serde::Deserialize)]
13092    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13093    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13094    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13095    #[derive(Clone)]
13096    pub struct votingStakeTableStateReturn {
13097        #[allow(missing_docs)]
13098        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13099        #[allow(missing_docs)]
13100        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13101        #[allow(missing_docs)]
13102        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13103        #[allow(missing_docs)]
13104        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13105    }
13106    #[allow(
13107        non_camel_case_types,
13108        non_snake_case,
13109        clippy::pub_underscore_fields,
13110        clippy::style
13111    )]
13112    const _: () = {
13113        use alloy::sol_types as alloy_sol_types;
13114        {
13115            #[doc(hidden)]
13116            type UnderlyingSolTuple<'a> = ();
13117            #[doc(hidden)]
13118            type UnderlyingRustTuple<'a> = ();
13119            #[cfg(test)]
13120            #[allow(dead_code, unreachable_patterns)]
13121            fn _type_assertion(
13122                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13123            ) {
13124                match _t {
13125                    alloy_sol_types::private::AssertTypeEq::<
13126                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13127                    >(_) => {}
13128                }
13129            }
13130            #[automatically_derived]
13131            #[doc(hidden)]
13132            impl ::core::convert::From<votingStakeTableStateCall>
13133            for UnderlyingRustTuple<'_> {
13134                fn from(value: votingStakeTableStateCall) -> Self {
13135                    ()
13136                }
13137            }
13138            #[automatically_derived]
13139            #[doc(hidden)]
13140            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13141            for votingStakeTableStateCall {
13142                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13143                    Self
13144                }
13145            }
13146        }
13147        {
13148            #[doc(hidden)]
13149            type UnderlyingSolTuple<'a> = (
13150                alloy::sol_types::sol_data::Uint<256>,
13151                BN254::ScalarField,
13152                BN254::ScalarField,
13153                BN254::ScalarField,
13154            );
13155            #[doc(hidden)]
13156            type UnderlyingRustTuple<'a> = (
13157                alloy::sol_types::private::primitives::aliases::U256,
13158                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13159                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13160                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13161            );
13162            #[cfg(test)]
13163            #[allow(dead_code, unreachable_patterns)]
13164            fn _type_assertion(
13165                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13166            ) {
13167                match _t {
13168                    alloy_sol_types::private::AssertTypeEq::<
13169                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13170                    >(_) => {}
13171                }
13172            }
13173            #[automatically_derived]
13174            #[doc(hidden)]
13175            impl ::core::convert::From<votingStakeTableStateReturn>
13176            for UnderlyingRustTuple<'_> {
13177                fn from(value: votingStakeTableStateReturn) -> Self {
13178                    (
13179                        value.threshold,
13180                        value.blsKeyComm,
13181                        value.schnorrKeyComm,
13182                        value.amountComm,
13183                    )
13184                }
13185            }
13186            #[automatically_derived]
13187            #[doc(hidden)]
13188            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13189            for votingStakeTableStateReturn {
13190                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13191                    Self {
13192                        threshold: tuple.0,
13193                        blsKeyComm: tuple.1,
13194                        schnorrKeyComm: tuple.2,
13195                        amountComm: tuple.3,
13196                    }
13197                }
13198            }
13199        }
13200        impl votingStakeTableStateReturn {
13201            fn _tokenize(
13202                &self,
13203            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13204                '_,
13205            > {
13206                (
13207                    <alloy::sol_types::sol_data::Uint<
13208                        256,
13209                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
13210                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13211                        &self.blsKeyComm,
13212                    ),
13213                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13214                        &self.schnorrKeyComm,
13215                    ),
13216                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13217                        &self.amountComm,
13218                    ),
13219                )
13220            }
13221        }
13222        #[automatically_derived]
13223        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13224            type Parameters<'a> = ();
13225            type Token<'a> = <Self::Parameters<
13226                'a,
13227            > as alloy_sol_types::SolType>::Token<'a>;
13228            type Return = votingStakeTableStateReturn;
13229            type ReturnTuple<'a> = (
13230                alloy::sol_types::sol_data::Uint<256>,
13231                BN254::ScalarField,
13232                BN254::ScalarField,
13233                BN254::ScalarField,
13234            );
13235            type ReturnToken<'a> = <Self::ReturnTuple<
13236                'a,
13237            > as alloy_sol_types::SolType>::Token<'a>;
13238            const SIGNATURE: &'static str = "votingStakeTableState()";
13239            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13240            #[inline]
13241            fn new<'a>(
13242                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13243            ) -> Self {
13244                tuple.into()
13245            }
13246            #[inline]
13247            fn tokenize(&self) -> Self::Token<'_> {
13248                ()
13249            }
13250            #[inline]
13251            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13252                votingStakeTableStateReturn::_tokenize(ret)
13253            }
13254            #[inline]
13255            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13256                <Self::ReturnTuple<
13257                    '_,
13258                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13259                    .map(Into::into)
13260            }
13261            #[inline]
13262            fn abi_decode_returns_validate(
13263                data: &[u8],
13264            ) -> alloy_sol_types::Result<Self::Return> {
13265                <Self::ReturnTuple<
13266                    '_,
13267                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13268                    .map(Into::into)
13269            }
13270        }
13271    };
13272    ///Container for all the [`LightClientV2`](self) function calls.
13273    #[derive(serde::Serialize, serde::Deserialize)]
13274    #[derive()]
13275    pub enum LightClientV2Calls {
13276        #[allow(missing_docs)]
13277        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13278        #[allow(missing_docs)]
13279        _getVk(_getVkCall),
13280        #[allow(missing_docs)]
13281        blocksPerEpoch(blocksPerEpochCall),
13282        #[allow(missing_docs)]
13283        currentBlockNumber(currentBlockNumberCall),
13284        #[allow(missing_docs)]
13285        currentEpoch(currentEpochCall),
13286        #[allow(missing_docs)]
13287        disablePermissionedProverMode(disablePermissionedProverModeCall),
13288        #[allow(missing_docs)]
13289        epochFromBlockNumber(epochFromBlockNumberCall),
13290        #[allow(missing_docs)]
13291        epochStartBlock(epochStartBlockCall),
13292        #[allow(missing_docs)]
13293        finalizedState(finalizedStateCall),
13294        #[allow(missing_docs)]
13295        genesisStakeTableState(genesisStakeTableStateCall),
13296        #[allow(missing_docs)]
13297        genesisState(genesisStateCall),
13298        #[allow(missing_docs)]
13299        getHotShotCommitment(getHotShotCommitmentCall),
13300        #[allow(missing_docs)]
13301        getStateHistoryCount(getStateHistoryCountCall),
13302        #[allow(missing_docs)]
13303        getVersion(getVersionCall),
13304        #[allow(missing_docs)]
13305        initialize(initializeCall),
13306        #[allow(missing_docs)]
13307        initializeV2(initializeV2Call),
13308        #[allow(missing_docs)]
13309        isEpochRoot(isEpochRootCall),
13310        #[allow(missing_docs)]
13311        isGtEpochRoot(isGtEpochRootCall),
13312        #[allow(missing_docs)]
13313        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13314        #[allow(missing_docs)]
13315        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13316        #[allow(missing_docs)]
13317        newFinalizedState_0(newFinalizedState_0Call),
13318        #[allow(missing_docs)]
13319        newFinalizedState_1(newFinalizedState_1Call),
13320        #[allow(missing_docs)]
13321        owner(ownerCall),
13322        #[allow(missing_docs)]
13323        permissionedProver(permissionedProverCall),
13324        #[allow(missing_docs)]
13325        proxiableUUID(proxiableUUIDCall),
13326        #[allow(missing_docs)]
13327        renounceOwnership(renounceOwnershipCall),
13328        #[allow(missing_docs)]
13329        setPermissionedProver(setPermissionedProverCall),
13330        #[allow(missing_docs)]
13331        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13332        #[allow(missing_docs)]
13333        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13334        #[allow(missing_docs)]
13335        stateHistoryCommitments(stateHistoryCommitmentsCall),
13336        #[allow(missing_docs)]
13337        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13338        #[allow(missing_docs)]
13339        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13340        #[allow(missing_docs)]
13341        transferOwnership(transferOwnershipCall),
13342        #[allow(missing_docs)]
13343        updateEpochStartBlock(updateEpochStartBlockCall),
13344        #[allow(missing_docs)]
13345        upgradeToAndCall(upgradeToAndCallCall),
13346        #[allow(missing_docs)]
13347        votingStakeTableState(votingStakeTableStateCall),
13348    }
13349    #[automatically_derived]
13350    impl LightClientV2Calls {
13351        /// All the selectors of this enum.
13352        ///
13353        /// Note that the selectors might not be in the same order as the variants.
13354        /// No guarantees are made about the order of the selectors.
13355        ///
13356        /// Prefer using `SolInterface` methods instead.
13357        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13358            [1u8, 63u8, 165u8, 252u8],
13359            [2u8, 181u8, 146u8, 243u8],
13360            [6u8, 37u8, 225u8, 155u8],
13361            [13u8, 142u8, 110u8, 44u8],
13362            [18u8, 23u8, 60u8, 44u8],
13363            [22u8, 122u8, 198u8, 24u8],
13364            [32u8, 99u8, 212u8, 247u8],
13365            [37u8, 41u8, 116u8, 39u8],
13366            [47u8, 121u8, 136u8, 157u8],
13367            [48u8, 12u8, 137u8, 221u8],
13368            [49u8, 61u8, 247u8, 177u8],
13369            [55u8, 142u8, 194u8, 59u8],
13370            [62u8, 213u8, 91u8, 123u8],
13371            [66u8, 109u8, 49u8, 148u8],
13372            [67u8, 61u8, 186u8, 159u8],
13373            [79u8, 30u8, 242u8, 134u8],
13374            [82u8, 209u8, 144u8, 45u8],
13375            [105u8, 204u8, 106u8, 4u8],
13376            [113u8, 80u8, 24u8, 166u8],
13377            [117u8, 124u8, 55u8, 173u8],
13378            [118u8, 103u8, 24u8, 8u8],
13379            [130u8, 110u8, 65u8, 252u8],
13380            [133u8, 132u8, 210u8, 63u8],
13381            [141u8, 165u8, 203u8, 91u8],
13382            [144u8, 193u8, 67u8, 144u8],
13383            [150u8, 193u8, 202u8, 97u8],
13384            [155u8, 170u8, 60u8, 201u8],
13385            [159u8, 219u8, 84u8, 167u8],
13386            [173u8, 60u8, 177u8, 204u8],
13387            [179u8, 59u8, 196u8, 145u8],
13388            [194u8, 59u8, 158u8, 158u8],
13389            [210u8, 77u8, 147u8, 61u8],
13390            [224u8, 48u8, 51u8, 1u8],
13391            [240u8, 104u8, 32u8, 84u8],
13392            [242u8, 253u8, 227u8, 139u8],
13393            [249u8, 229u8, 13u8, 25u8],
13394        ];
13395    }
13396    #[automatically_derived]
13397    impl alloy_sol_types::SolInterface for LightClientV2Calls {
13398        const NAME: &'static str = "LightClientV2Calls";
13399        const MIN_DATA_LENGTH: usize = 0usize;
13400        const COUNT: usize = 36usize;
13401        #[inline]
13402        fn selector(&self) -> [u8; 4] {
13403            match self {
13404                Self::UPGRADE_INTERFACE_VERSION(_) => {
13405                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13406                }
13407                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13408                Self::blocksPerEpoch(_) => {
13409                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13410                }
13411                Self::currentBlockNumber(_) => {
13412                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13413                }
13414                Self::currentEpoch(_) => {
13415                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13416                }
13417                Self::disablePermissionedProverMode(_) => {
13418                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13419                }
13420                Self::epochFromBlockNumber(_) => {
13421                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13422                }
13423                Self::epochStartBlock(_) => {
13424                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13425                }
13426                Self::finalizedState(_) => {
13427                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13428                }
13429                Self::genesisStakeTableState(_) => {
13430                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13431                }
13432                Self::genesisState(_) => {
13433                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13434                }
13435                Self::getHotShotCommitment(_) => {
13436                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13437                }
13438                Self::getStateHistoryCount(_) => {
13439                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13440                }
13441                Self::getVersion(_) => {
13442                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13443                }
13444                Self::initialize(_) => {
13445                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13446                }
13447                Self::initializeV2(_) => {
13448                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13449                }
13450                Self::isEpochRoot(_) => {
13451                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13452                }
13453                Self::isGtEpochRoot(_) => {
13454                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13455                }
13456                Self::isPermissionedProverEnabled(_) => {
13457                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13458                }
13459                Self::lagOverEscapeHatchThreshold(_) => {
13460                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13461                }
13462                Self::newFinalizedState_0(_) => {
13463                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13464                }
13465                Self::newFinalizedState_1(_) => {
13466                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13467                }
13468                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13469                Self::permissionedProver(_) => {
13470                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13471                }
13472                Self::proxiableUUID(_) => {
13473                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13474                }
13475                Self::renounceOwnership(_) => {
13476                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13477                }
13478                Self::setPermissionedProver(_) => {
13479                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13480                }
13481                Self::setStateHistoryRetentionPeriod(_) => {
13482                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13483                }
13484                Self::setstateHistoryRetentionPeriod(_) => {
13485                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13486                }
13487                Self::stateHistoryCommitments(_) => {
13488                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13489                }
13490                Self::stateHistoryFirstIndex(_) => {
13491                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13492                }
13493                Self::stateHistoryRetentionPeriod(_) => {
13494                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13495                }
13496                Self::transferOwnership(_) => {
13497                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13498                }
13499                Self::updateEpochStartBlock(_) => {
13500                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13501                }
13502                Self::upgradeToAndCall(_) => {
13503                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13504                }
13505                Self::votingStakeTableState(_) => {
13506                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13507                }
13508            }
13509        }
13510        #[inline]
13511        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13512            Self::SELECTORS.get(i).copied()
13513        }
13514        #[inline]
13515        fn valid_selector(selector: [u8; 4]) -> bool {
13516            Self::SELECTORS.binary_search(&selector).is_ok()
13517        }
13518        #[inline]
13519        #[allow(non_snake_case)]
13520        fn abi_decode_raw(
13521            selector: [u8; 4],
13522            data: &[u8],
13523        ) -> alloy_sol_types::Result<Self> {
13524            static DECODE_SHIMS: &[fn(
13525                &[u8],
13526            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
13527                {
13528                    fn setPermissionedProver(
13529                        data: &[u8],
13530                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13531                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13532                                data,
13533                            )
13534                            .map(LightClientV2Calls::setPermissionedProver)
13535                    }
13536                    setPermissionedProver
13537                },
13538                {
13539                    fn stateHistoryCommitments(
13540                        data: &[u8],
13541                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13542                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13543                                data,
13544                            )
13545                            .map(LightClientV2Calls::stateHistoryCommitments)
13546                    }
13547                    stateHistoryCommitments
13548                },
13549                {
13550                    fn votingStakeTableState(
13551                        data: &[u8],
13552                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13553                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13554                                data,
13555                            )
13556                            .map(LightClientV2Calls::votingStakeTableState)
13557                    }
13558                    votingStakeTableState
13559                },
13560                {
13561                    fn getVersion(
13562                        data: &[u8],
13563                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13564                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13565                                data,
13566                            )
13567                            .map(LightClientV2Calls::getVersion)
13568                    }
13569                    getVersion
13570                },
13571                {
13572                    fn _getVk(
13573                        data: &[u8],
13574                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13575                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13576                            .map(LightClientV2Calls::_getVk)
13577                    }
13578                    _getVk
13579                },
13580                {
13581                    fn updateEpochStartBlock(
13582                        data: &[u8],
13583                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13584                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13585                                data,
13586                            )
13587                            .map(LightClientV2Calls::updateEpochStartBlock)
13588                    }
13589                    updateEpochStartBlock
13590                },
13591                {
13592                    fn newFinalizedState_0(
13593                        data: &[u8],
13594                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13595                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13596                                data,
13597                            )
13598                            .map(LightClientV2Calls::newFinalizedState_0)
13599                    }
13600                    newFinalizedState_0
13601                },
13602                {
13603                    fn isEpochRoot(
13604                        data: &[u8],
13605                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13606                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13607                                data,
13608                            )
13609                            .map(LightClientV2Calls::isEpochRoot)
13610                    }
13611                    isEpochRoot
13612                },
13613                {
13614                    fn stateHistoryFirstIndex(
13615                        data: &[u8],
13616                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13617                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13618                                data,
13619                            )
13620                            .map(LightClientV2Calls::stateHistoryFirstIndex)
13621                    }
13622                    stateHistoryFirstIndex
13623                },
13624                {
13625                    fn isGtEpochRoot(
13626                        data: &[u8],
13627                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13628                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13629                                data,
13630                            )
13631                            .map(LightClientV2Calls::isGtEpochRoot)
13632                    }
13633                    isGtEpochRoot
13634                },
13635                {
13636                    fn permissionedProver(
13637                        data: &[u8],
13638                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13639                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13640                                data,
13641                            )
13642                            .map(LightClientV2Calls::permissionedProver)
13643                    }
13644                    permissionedProver
13645                },
13646                {
13647                    fn currentBlockNumber(
13648                        data: &[u8],
13649                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13650                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13651                                data,
13652                            )
13653                            .map(LightClientV2Calls::currentBlockNumber)
13654                    }
13655                    currentBlockNumber
13656                },
13657                {
13658                    fn epochStartBlock(
13659                        data: &[u8],
13660                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13661                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13662                                data,
13663                            )
13664                            .map(LightClientV2Calls::epochStartBlock)
13665                    }
13666                    epochStartBlock
13667                },
13668                {
13669                    fn genesisStakeTableState(
13670                        data: &[u8],
13671                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13672                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13673                                data,
13674                            )
13675                            .map(LightClientV2Calls::genesisStakeTableState)
13676                    }
13677                    genesisStakeTableState
13678                },
13679                {
13680                    fn setStateHistoryRetentionPeriod(
13681                        data: &[u8],
13682                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13683                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13684                                data,
13685                            )
13686                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
13687                    }
13688                    setStateHistoryRetentionPeriod
13689                },
13690                {
13691                    fn upgradeToAndCall(
13692                        data: &[u8],
13693                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13694                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13695                                data,
13696                            )
13697                            .map(LightClientV2Calls::upgradeToAndCall)
13698                    }
13699                    upgradeToAndCall
13700                },
13701                {
13702                    fn proxiableUUID(
13703                        data: &[u8],
13704                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13705                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13706                                data,
13707                            )
13708                            .map(LightClientV2Calls::proxiableUUID)
13709                    }
13710                    proxiableUUID
13711                },
13712                {
13713                    fn disablePermissionedProverMode(
13714                        data: &[u8],
13715                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13716                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13717                                data,
13718                            )
13719                            .map(LightClientV2Calls::disablePermissionedProverMode)
13720                    }
13721                    disablePermissionedProverMode
13722                },
13723                {
13724                    fn renounceOwnership(
13725                        data: &[u8],
13726                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13727                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13728                                data,
13729                            )
13730                            .map(LightClientV2Calls::renounceOwnership)
13731                    }
13732                    renounceOwnership
13733                },
13734                {
13735                    fn newFinalizedState_1(
13736                        data: &[u8],
13737                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13738                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13739                                data,
13740                            )
13741                            .map(LightClientV2Calls::newFinalizedState_1)
13742                    }
13743                    newFinalizedState_1
13744                },
13745                {
13746                    fn currentEpoch(
13747                        data: &[u8],
13748                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13749                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13750                                data,
13751                            )
13752                            .map(LightClientV2Calls::currentEpoch)
13753                    }
13754                    currentEpoch
13755                },
13756                {
13757                    fn isPermissionedProverEnabled(
13758                        data: &[u8],
13759                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13760                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13761                                data,
13762                            )
13763                            .map(LightClientV2Calls::isPermissionedProverEnabled)
13764                    }
13765                    isPermissionedProverEnabled
13766                },
13767                {
13768                    fn getHotShotCommitment(
13769                        data: &[u8],
13770                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13771                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13772                                data,
13773                            )
13774                            .map(LightClientV2Calls::getHotShotCommitment)
13775                    }
13776                    getHotShotCommitment
13777                },
13778                {
13779                    fn owner(
13780                        data: &[u8],
13781                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13782                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13783                            .map(LightClientV2Calls::owner)
13784                    }
13785                    owner
13786                },
13787                {
13788                    fn epochFromBlockNumber(
13789                        data: &[u8],
13790                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13791                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13792                                data,
13793                            )
13794                            .map(LightClientV2Calls::epochFromBlockNumber)
13795                    }
13796                    epochFromBlockNumber
13797                },
13798                {
13799                    fn setstateHistoryRetentionPeriod(
13800                        data: &[u8],
13801                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13802                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13803                                data,
13804                            )
13805                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
13806                    }
13807                    setstateHistoryRetentionPeriod
13808                },
13809                {
13810                    fn initialize(
13811                        data: &[u8],
13812                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13813                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13814                                data,
13815                            )
13816                            .map(LightClientV2Calls::initialize)
13817                    }
13818                    initialize
13819                },
13820                {
13821                    fn finalizedState(
13822                        data: &[u8],
13823                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13824                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13825                                data,
13826                            )
13827                            .map(LightClientV2Calls::finalizedState)
13828                    }
13829                    finalizedState
13830                },
13831                {
13832                    fn UPGRADE_INTERFACE_VERSION(
13833                        data: &[u8],
13834                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13835                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13836                                data,
13837                            )
13838                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
13839                    }
13840                    UPGRADE_INTERFACE_VERSION
13841                },
13842                {
13843                    fn initializeV2(
13844                        data: &[u8],
13845                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13846                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13847                                data,
13848                            )
13849                            .map(LightClientV2Calls::initializeV2)
13850                    }
13851                    initializeV2
13852                },
13853                {
13854                    fn stateHistoryRetentionPeriod(
13855                        data: &[u8],
13856                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13857                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13858                                data,
13859                            )
13860                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
13861                    }
13862                    stateHistoryRetentionPeriod
13863                },
13864                {
13865                    fn genesisState(
13866                        data: &[u8],
13867                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13868                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13869                                data,
13870                            )
13871                            .map(LightClientV2Calls::genesisState)
13872                    }
13873                    genesisState
13874                },
13875                {
13876                    fn lagOverEscapeHatchThreshold(
13877                        data: &[u8],
13878                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13879                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
13880                                data,
13881                            )
13882                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
13883                    }
13884                    lagOverEscapeHatchThreshold
13885                },
13886                {
13887                    fn blocksPerEpoch(
13888                        data: &[u8],
13889                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13890                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13891                                data,
13892                            )
13893                            .map(LightClientV2Calls::blocksPerEpoch)
13894                    }
13895                    blocksPerEpoch
13896                },
13897                {
13898                    fn transferOwnership(
13899                        data: &[u8],
13900                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13901                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13902                                data,
13903                            )
13904                            .map(LightClientV2Calls::transferOwnership)
13905                    }
13906                    transferOwnership
13907                },
13908                {
13909                    fn getStateHistoryCount(
13910                        data: &[u8],
13911                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13912                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
13913                                data,
13914                            )
13915                            .map(LightClientV2Calls::getStateHistoryCount)
13916                    }
13917                    getStateHistoryCount
13918                },
13919            ];
13920            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13921                return Err(
13922                    alloy_sol_types::Error::unknown_selector(
13923                        <Self as alloy_sol_types::SolInterface>::NAME,
13924                        selector,
13925                    ),
13926                );
13927            };
13928            DECODE_SHIMS[idx](data)
13929        }
13930        #[inline]
13931        #[allow(non_snake_case)]
13932        fn abi_decode_raw_validate(
13933            selector: [u8; 4],
13934            data: &[u8],
13935        ) -> alloy_sol_types::Result<Self> {
13936            static DECODE_VALIDATE_SHIMS: &[fn(
13937                &[u8],
13938            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
13939                {
13940                    fn setPermissionedProver(
13941                        data: &[u8],
13942                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13943                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13944                                data,
13945                            )
13946                            .map(LightClientV2Calls::setPermissionedProver)
13947                    }
13948                    setPermissionedProver
13949                },
13950                {
13951                    fn stateHistoryCommitments(
13952                        data: &[u8],
13953                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13954                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13955                                data,
13956                            )
13957                            .map(LightClientV2Calls::stateHistoryCommitments)
13958                    }
13959                    stateHistoryCommitments
13960                },
13961                {
13962                    fn votingStakeTableState(
13963                        data: &[u8],
13964                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13965                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13966                                data,
13967                            )
13968                            .map(LightClientV2Calls::votingStakeTableState)
13969                    }
13970                    votingStakeTableState
13971                },
13972                {
13973                    fn getVersion(
13974                        data: &[u8],
13975                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13976                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13977                                data,
13978                            )
13979                            .map(LightClientV2Calls::getVersion)
13980                    }
13981                    getVersion
13982                },
13983                {
13984                    fn _getVk(
13985                        data: &[u8],
13986                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13987                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13988                                data,
13989                            )
13990                            .map(LightClientV2Calls::_getVk)
13991                    }
13992                    _getVk
13993                },
13994                {
13995                    fn updateEpochStartBlock(
13996                        data: &[u8],
13997                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13998                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13999                                data,
14000                            )
14001                            .map(LightClientV2Calls::updateEpochStartBlock)
14002                    }
14003                    updateEpochStartBlock
14004                },
14005                {
14006                    fn newFinalizedState_0(
14007                        data: &[u8],
14008                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14009                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14010                                data,
14011                            )
14012                            .map(LightClientV2Calls::newFinalizedState_0)
14013                    }
14014                    newFinalizedState_0
14015                },
14016                {
14017                    fn isEpochRoot(
14018                        data: &[u8],
14019                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14020                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14021                                data,
14022                            )
14023                            .map(LightClientV2Calls::isEpochRoot)
14024                    }
14025                    isEpochRoot
14026                },
14027                {
14028                    fn stateHistoryFirstIndex(
14029                        data: &[u8],
14030                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14031                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14032                                data,
14033                            )
14034                            .map(LightClientV2Calls::stateHistoryFirstIndex)
14035                    }
14036                    stateHistoryFirstIndex
14037                },
14038                {
14039                    fn isGtEpochRoot(
14040                        data: &[u8],
14041                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14042                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14043                                data,
14044                            )
14045                            .map(LightClientV2Calls::isGtEpochRoot)
14046                    }
14047                    isGtEpochRoot
14048                },
14049                {
14050                    fn permissionedProver(
14051                        data: &[u8],
14052                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14053                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14054                                data,
14055                            )
14056                            .map(LightClientV2Calls::permissionedProver)
14057                    }
14058                    permissionedProver
14059                },
14060                {
14061                    fn currentBlockNumber(
14062                        data: &[u8],
14063                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14064                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14065                                data,
14066                            )
14067                            .map(LightClientV2Calls::currentBlockNumber)
14068                    }
14069                    currentBlockNumber
14070                },
14071                {
14072                    fn epochStartBlock(
14073                        data: &[u8],
14074                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14075                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14076                                data,
14077                            )
14078                            .map(LightClientV2Calls::epochStartBlock)
14079                    }
14080                    epochStartBlock
14081                },
14082                {
14083                    fn genesisStakeTableState(
14084                        data: &[u8],
14085                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14086                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14087                                data,
14088                            )
14089                            .map(LightClientV2Calls::genesisStakeTableState)
14090                    }
14091                    genesisStakeTableState
14092                },
14093                {
14094                    fn setStateHistoryRetentionPeriod(
14095                        data: &[u8],
14096                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14097                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14098                                data,
14099                            )
14100                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
14101                    }
14102                    setStateHistoryRetentionPeriod
14103                },
14104                {
14105                    fn upgradeToAndCall(
14106                        data: &[u8],
14107                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14108                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14109                                data,
14110                            )
14111                            .map(LightClientV2Calls::upgradeToAndCall)
14112                    }
14113                    upgradeToAndCall
14114                },
14115                {
14116                    fn proxiableUUID(
14117                        data: &[u8],
14118                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14119                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14120                                data,
14121                            )
14122                            .map(LightClientV2Calls::proxiableUUID)
14123                    }
14124                    proxiableUUID
14125                },
14126                {
14127                    fn disablePermissionedProverMode(
14128                        data: &[u8],
14129                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14130                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14131                                data,
14132                            )
14133                            .map(LightClientV2Calls::disablePermissionedProverMode)
14134                    }
14135                    disablePermissionedProverMode
14136                },
14137                {
14138                    fn renounceOwnership(
14139                        data: &[u8],
14140                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14141                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14142                                data,
14143                            )
14144                            .map(LightClientV2Calls::renounceOwnership)
14145                    }
14146                    renounceOwnership
14147                },
14148                {
14149                    fn newFinalizedState_1(
14150                        data: &[u8],
14151                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14152                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14153                                data,
14154                            )
14155                            .map(LightClientV2Calls::newFinalizedState_1)
14156                    }
14157                    newFinalizedState_1
14158                },
14159                {
14160                    fn currentEpoch(
14161                        data: &[u8],
14162                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14163                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14164                                data,
14165                            )
14166                            .map(LightClientV2Calls::currentEpoch)
14167                    }
14168                    currentEpoch
14169                },
14170                {
14171                    fn isPermissionedProverEnabled(
14172                        data: &[u8],
14173                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14174                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14175                                data,
14176                            )
14177                            .map(LightClientV2Calls::isPermissionedProverEnabled)
14178                    }
14179                    isPermissionedProverEnabled
14180                },
14181                {
14182                    fn getHotShotCommitment(
14183                        data: &[u8],
14184                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14185                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14186                                data,
14187                            )
14188                            .map(LightClientV2Calls::getHotShotCommitment)
14189                    }
14190                    getHotShotCommitment
14191                },
14192                {
14193                    fn owner(
14194                        data: &[u8],
14195                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14196                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14197                                data,
14198                            )
14199                            .map(LightClientV2Calls::owner)
14200                    }
14201                    owner
14202                },
14203                {
14204                    fn epochFromBlockNumber(
14205                        data: &[u8],
14206                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14207                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14208                                data,
14209                            )
14210                            .map(LightClientV2Calls::epochFromBlockNumber)
14211                    }
14212                    epochFromBlockNumber
14213                },
14214                {
14215                    fn setstateHistoryRetentionPeriod(
14216                        data: &[u8],
14217                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14218                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14219                                data,
14220                            )
14221                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
14222                    }
14223                    setstateHistoryRetentionPeriod
14224                },
14225                {
14226                    fn initialize(
14227                        data: &[u8],
14228                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14229                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14230                                data,
14231                            )
14232                            .map(LightClientV2Calls::initialize)
14233                    }
14234                    initialize
14235                },
14236                {
14237                    fn finalizedState(
14238                        data: &[u8],
14239                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14240                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14241                                data,
14242                            )
14243                            .map(LightClientV2Calls::finalizedState)
14244                    }
14245                    finalizedState
14246                },
14247                {
14248                    fn UPGRADE_INTERFACE_VERSION(
14249                        data: &[u8],
14250                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14251                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14252                                data,
14253                            )
14254                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
14255                    }
14256                    UPGRADE_INTERFACE_VERSION
14257                },
14258                {
14259                    fn initializeV2(
14260                        data: &[u8],
14261                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14262                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14263                                data,
14264                            )
14265                            .map(LightClientV2Calls::initializeV2)
14266                    }
14267                    initializeV2
14268                },
14269                {
14270                    fn stateHistoryRetentionPeriod(
14271                        data: &[u8],
14272                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14273                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14274                                data,
14275                            )
14276                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
14277                    }
14278                    stateHistoryRetentionPeriod
14279                },
14280                {
14281                    fn genesisState(
14282                        data: &[u8],
14283                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14284                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14285                                data,
14286                            )
14287                            .map(LightClientV2Calls::genesisState)
14288                    }
14289                    genesisState
14290                },
14291                {
14292                    fn lagOverEscapeHatchThreshold(
14293                        data: &[u8],
14294                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14295                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14296                                data,
14297                            )
14298                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
14299                    }
14300                    lagOverEscapeHatchThreshold
14301                },
14302                {
14303                    fn blocksPerEpoch(
14304                        data: &[u8],
14305                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14306                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14307                                data,
14308                            )
14309                            .map(LightClientV2Calls::blocksPerEpoch)
14310                    }
14311                    blocksPerEpoch
14312                },
14313                {
14314                    fn transferOwnership(
14315                        data: &[u8],
14316                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14317                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14318                                data,
14319                            )
14320                            .map(LightClientV2Calls::transferOwnership)
14321                    }
14322                    transferOwnership
14323                },
14324                {
14325                    fn getStateHistoryCount(
14326                        data: &[u8],
14327                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14328                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14329                                data,
14330                            )
14331                            .map(LightClientV2Calls::getStateHistoryCount)
14332                    }
14333                    getStateHistoryCount
14334                },
14335            ];
14336            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14337                return Err(
14338                    alloy_sol_types::Error::unknown_selector(
14339                        <Self as alloy_sol_types::SolInterface>::NAME,
14340                        selector,
14341                    ),
14342                );
14343            };
14344            DECODE_VALIDATE_SHIMS[idx](data)
14345        }
14346        #[inline]
14347        fn abi_encoded_size(&self) -> usize {
14348            match self {
14349                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14350                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14351                        inner,
14352                    )
14353                }
14354                Self::_getVk(inner) => {
14355                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14356                }
14357                Self::blocksPerEpoch(inner) => {
14358                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14359                        inner,
14360                    )
14361                }
14362                Self::currentBlockNumber(inner) => {
14363                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14364                        inner,
14365                    )
14366                }
14367                Self::currentEpoch(inner) => {
14368                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14369                        inner,
14370                    )
14371                }
14372                Self::disablePermissionedProverMode(inner) => {
14373                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14374                        inner,
14375                    )
14376                }
14377                Self::epochFromBlockNumber(inner) => {
14378                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14379                        inner,
14380                    )
14381                }
14382                Self::epochStartBlock(inner) => {
14383                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14384                        inner,
14385                    )
14386                }
14387                Self::finalizedState(inner) => {
14388                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14389                        inner,
14390                    )
14391                }
14392                Self::genesisStakeTableState(inner) => {
14393                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14394                        inner,
14395                    )
14396                }
14397                Self::genesisState(inner) => {
14398                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14399                        inner,
14400                    )
14401                }
14402                Self::getHotShotCommitment(inner) => {
14403                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14404                        inner,
14405                    )
14406                }
14407                Self::getStateHistoryCount(inner) => {
14408                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14409                        inner,
14410                    )
14411                }
14412                Self::getVersion(inner) => {
14413                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14414                }
14415                Self::initialize(inner) => {
14416                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14417                }
14418                Self::initializeV2(inner) => {
14419                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14420                        inner,
14421                    )
14422                }
14423                Self::isEpochRoot(inner) => {
14424                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14425                        inner,
14426                    )
14427                }
14428                Self::isGtEpochRoot(inner) => {
14429                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14430                        inner,
14431                    )
14432                }
14433                Self::isPermissionedProverEnabled(inner) => {
14434                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14435                        inner,
14436                    )
14437                }
14438                Self::lagOverEscapeHatchThreshold(inner) => {
14439                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14440                        inner,
14441                    )
14442                }
14443                Self::newFinalizedState_0(inner) => {
14444                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14445                        inner,
14446                    )
14447                }
14448                Self::newFinalizedState_1(inner) => {
14449                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14450                        inner,
14451                    )
14452                }
14453                Self::owner(inner) => {
14454                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14455                }
14456                Self::permissionedProver(inner) => {
14457                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14458                        inner,
14459                    )
14460                }
14461                Self::proxiableUUID(inner) => {
14462                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14463                        inner,
14464                    )
14465                }
14466                Self::renounceOwnership(inner) => {
14467                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14468                        inner,
14469                    )
14470                }
14471                Self::setPermissionedProver(inner) => {
14472                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14473                        inner,
14474                    )
14475                }
14476                Self::setStateHistoryRetentionPeriod(inner) => {
14477                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14478                        inner,
14479                    )
14480                }
14481                Self::setstateHistoryRetentionPeriod(inner) => {
14482                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14483                        inner,
14484                    )
14485                }
14486                Self::stateHistoryCommitments(inner) => {
14487                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14488                        inner,
14489                    )
14490                }
14491                Self::stateHistoryFirstIndex(inner) => {
14492                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14493                        inner,
14494                    )
14495                }
14496                Self::stateHistoryRetentionPeriod(inner) => {
14497                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14498                        inner,
14499                    )
14500                }
14501                Self::transferOwnership(inner) => {
14502                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14503                        inner,
14504                    )
14505                }
14506                Self::updateEpochStartBlock(inner) => {
14507                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14508                        inner,
14509                    )
14510                }
14511                Self::upgradeToAndCall(inner) => {
14512                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14513                        inner,
14514                    )
14515                }
14516                Self::votingStakeTableState(inner) => {
14517                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14518                        inner,
14519                    )
14520                }
14521            }
14522        }
14523        #[inline]
14524        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14525            match self {
14526                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14527                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14528                        inner,
14529                        out,
14530                    )
14531                }
14532                Self::_getVk(inner) => {
14533                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14534                }
14535                Self::blocksPerEpoch(inner) => {
14536                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14537                        inner,
14538                        out,
14539                    )
14540                }
14541                Self::currentBlockNumber(inner) => {
14542                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14543                        inner,
14544                        out,
14545                    )
14546                }
14547                Self::currentEpoch(inner) => {
14548                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14549                        inner,
14550                        out,
14551                    )
14552                }
14553                Self::disablePermissionedProverMode(inner) => {
14554                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14555                        inner,
14556                        out,
14557                    )
14558                }
14559                Self::epochFromBlockNumber(inner) => {
14560                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14561                        inner,
14562                        out,
14563                    )
14564                }
14565                Self::epochStartBlock(inner) => {
14566                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14567                        inner,
14568                        out,
14569                    )
14570                }
14571                Self::finalizedState(inner) => {
14572                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14573                        inner,
14574                        out,
14575                    )
14576                }
14577                Self::genesisStakeTableState(inner) => {
14578                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14579                        inner,
14580                        out,
14581                    )
14582                }
14583                Self::genesisState(inner) => {
14584                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14585                        inner,
14586                        out,
14587                    )
14588                }
14589                Self::getHotShotCommitment(inner) => {
14590                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14591                        inner,
14592                        out,
14593                    )
14594                }
14595                Self::getStateHistoryCount(inner) => {
14596                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14597                        inner,
14598                        out,
14599                    )
14600                }
14601                Self::getVersion(inner) => {
14602                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14603                        inner,
14604                        out,
14605                    )
14606                }
14607                Self::initialize(inner) => {
14608                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14609                        inner,
14610                        out,
14611                    )
14612                }
14613                Self::initializeV2(inner) => {
14614                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14615                        inner,
14616                        out,
14617                    )
14618                }
14619                Self::isEpochRoot(inner) => {
14620                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14621                        inner,
14622                        out,
14623                    )
14624                }
14625                Self::isGtEpochRoot(inner) => {
14626                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14627                        inner,
14628                        out,
14629                    )
14630                }
14631                Self::isPermissionedProverEnabled(inner) => {
14632                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14633                        inner,
14634                        out,
14635                    )
14636                }
14637                Self::lagOverEscapeHatchThreshold(inner) => {
14638                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14639                        inner,
14640                        out,
14641                    )
14642                }
14643                Self::newFinalizedState_0(inner) => {
14644                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14645                        inner,
14646                        out,
14647                    )
14648                }
14649                Self::newFinalizedState_1(inner) => {
14650                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14651                        inner,
14652                        out,
14653                    )
14654                }
14655                Self::owner(inner) => {
14656                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14657                }
14658                Self::permissionedProver(inner) => {
14659                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14660                        inner,
14661                        out,
14662                    )
14663                }
14664                Self::proxiableUUID(inner) => {
14665                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14666                        inner,
14667                        out,
14668                    )
14669                }
14670                Self::renounceOwnership(inner) => {
14671                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14672                        inner,
14673                        out,
14674                    )
14675                }
14676                Self::setPermissionedProver(inner) => {
14677                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14678                        inner,
14679                        out,
14680                    )
14681                }
14682                Self::setStateHistoryRetentionPeriod(inner) => {
14683                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14684                        inner,
14685                        out,
14686                    )
14687                }
14688                Self::setstateHistoryRetentionPeriod(inner) => {
14689                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14690                        inner,
14691                        out,
14692                    )
14693                }
14694                Self::stateHistoryCommitments(inner) => {
14695                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14696                        inner,
14697                        out,
14698                    )
14699                }
14700                Self::stateHistoryFirstIndex(inner) => {
14701                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14702                        inner,
14703                        out,
14704                    )
14705                }
14706                Self::stateHistoryRetentionPeriod(inner) => {
14707                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14708                        inner,
14709                        out,
14710                    )
14711                }
14712                Self::transferOwnership(inner) => {
14713                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14714                        inner,
14715                        out,
14716                    )
14717                }
14718                Self::updateEpochStartBlock(inner) => {
14719                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14720                        inner,
14721                        out,
14722                    )
14723                }
14724                Self::upgradeToAndCall(inner) => {
14725                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14726                        inner,
14727                        out,
14728                    )
14729                }
14730                Self::votingStakeTableState(inner) => {
14731                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14732                        inner,
14733                        out,
14734                    )
14735                }
14736            }
14737        }
14738    }
14739    ///Container for all the [`LightClientV2`](self) custom errors.
14740    #[derive(serde::Serialize, serde::Deserialize)]
14741    #[derive(Debug, PartialEq, Eq, Hash)]
14742    pub enum LightClientV2Errors {
14743        #[allow(missing_docs)]
14744        AddressEmptyCode(AddressEmptyCode),
14745        #[allow(missing_docs)]
14746        DeprecatedApi(DeprecatedApi),
14747        #[allow(missing_docs)]
14748        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14749        #[allow(missing_docs)]
14750        ERC1967NonPayable(ERC1967NonPayable),
14751        #[allow(missing_docs)]
14752        FailedInnerCall(FailedInnerCall),
14753        #[allow(missing_docs)]
14754        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14755        #[allow(missing_docs)]
14756        InvalidAddress(InvalidAddress),
14757        #[allow(missing_docs)]
14758        InvalidArgs(InvalidArgs),
14759        #[allow(missing_docs)]
14760        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14761        #[allow(missing_docs)]
14762        InvalidInitialization(InvalidInitialization),
14763        #[allow(missing_docs)]
14764        InvalidMaxStateHistory(InvalidMaxStateHistory),
14765        #[allow(missing_docs)]
14766        InvalidProof(InvalidProof),
14767        #[allow(missing_docs)]
14768        InvalidScalar(InvalidScalar),
14769        #[allow(missing_docs)]
14770        MissingEpochRootUpdate(MissingEpochRootUpdate),
14771        #[allow(missing_docs)]
14772        NoChangeRequired(NoChangeRequired),
14773        #[allow(missing_docs)]
14774        NotInitializing(NotInitializing),
14775        #[allow(missing_docs)]
14776        OutdatedState(OutdatedState),
14777        #[allow(missing_docs)]
14778        OwnableInvalidOwner(OwnableInvalidOwner),
14779        #[allow(missing_docs)]
14780        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14781        #[allow(missing_docs)]
14782        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
14783        #[allow(missing_docs)]
14784        ProverNotPermissioned(ProverNotPermissioned),
14785        #[allow(missing_docs)]
14786        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14787        #[allow(missing_docs)]
14788        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14789        #[allow(missing_docs)]
14790        WrongStakeTableUsed(WrongStakeTableUsed),
14791    }
14792    #[automatically_derived]
14793    impl LightClientV2Errors {
14794        /// All the selectors of this enum.
14795        ///
14796        /// Note that the selectors might not be in the same order as the variants.
14797        /// No guarantees are made about the order of the selectors.
14798        ///
14799        /// Prefer using `SolInterface` methods instead.
14800        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14801            [5u8, 28u8, 70u8, 239u8],
14802            [5u8, 176u8, 92u8, 204u8],
14803            [8u8, 10u8, 232u8, 217u8],
14804            [9u8, 189u8, 227u8, 57u8],
14805            [17u8, 140u8, 218u8, 167u8],
14806            [20u8, 37u8, 234u8, 66u8],
14807            [30u8, 79u8, 189u8, 247u8],
14808            [47u8, 171u8, 146u8, 202u8],
14809            [76u8, 156u8, 140u8, 227u8],
14810            [78u8, 64u8, 92u8, 141u8],
14811            [81u8, 97u8, 128u8, 137u8],
14812            [97u8, 90u8, 146u8, 100u8],
14813            [153u8, 150u8, 179u8, 21u8],
14814            [161u8, 186u8, 7u8, 238u8],
14815            [163u8, 166u8, 71u8, 128u8],
14816            [168u8, 99u8, 174u8, 201u8],
14817            [170u8, 29u8, 73u8, 164u8],
14818            [176u8, 180u8, 56u8, 119u8],
14819            [179u8, 152u8, 151u8, 159u8],
14820            [215u8, 230u8, 188u8, 248u8],
14821            [224u8, 124u8, 141u8, 186u8],
14822            [230u8, 196u8, 36u8, 123u8],
14823            [244u8, 160u8, 238u8, 224u8],
14824            [249u8, 46u8, 232u8, 169u8],
14825        ];
14826    }
14827    #[automatically_derived]
14828    impl alloy_sol_types::SolInterface for LightClientV2Errors {
14829        const NAME: &'static str = "LightClientV2Errors";
14830        const MIN_DATA_LENGTH: usize = 0usize;
14831        const COUNT: usize = 24usize;
14832        #[inline]
14833        fn selector(&self) -> [u8; 4] {
14834            match self {
14835                Self::AddressEmptyCode(_) => {
14836                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14837                }
14838                Self::DeprecatedApi(_) => {
14839                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
14840                }
14841                Self::ERC1967InvalidImplementation(_) => {
14842                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14843                }
14844                Self::ERC1967NonPayable(_) => {
14845                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14846                }
14847                Self::FailedInnerCall(_) => {
14848                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14849                }
14850                Self::InsufficientSnapshotHistory(_) => {
14851                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
14852                }
14853                Self::InvalidAddress(_) => {
14854                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
14855                }
14856                Self::InvalidArgs(_) => {
14857                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
14858                }
14859                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
14860                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
14861                }
14862                Self::InvalidInitialization(_) => {
14863                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14864                }
14865                Self::InvalidMaxStateHistory(_) => {
14866                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
14867                }
14868                Self::InvalidProof(_) => {
14869                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
14870                }
14871                Self::InvalidScalar(_) => {
14872                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
14873                }
14874                Self::MissingEpochRootUpdate(_) => {
14875                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
14876                }
14877                Self::NoChangeRequired(_) => {
14878                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
14879                }
14880                Self::NotInitializing(_) => {
14881                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14882                }
14883                Self::OutdatedState(_) => {
14884                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
14885                }
14886                Self::OwnableInvalidOwner(_) => {
14887                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14888                }
14889                Self::OwnableUnauthorizedAccount(_) => {
14890                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14891                }
14892                Self::OwnershipCannotBeRenounced(_) => {
14893                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
14894                }
14895                Self::ProverNotPermissioned(_) => {
14896                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
14897                }
14898                Self::UUPSUnauthorizedCallContext(_) => {
14899                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14900                }
14901                Self::UUPSUnsupportedProxiableUUID(_) => {
14902                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14903                }
14904                Self::WrongStakeTableUsed(_) => {
14905                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
14906                }
14907            }
14908        }
14909        #[inline]
14910        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14911            Self::SELECTORS.get(i).copied()
14912        }
14913        #[inline]
14914        fn valid_selector(selector: [u8; 4]) -> bool {
14915            Self::SELECTORS.binary_search(&selector).is_ok()
14916        }
14917        #[inline]
14918        #[allow(non_snake_case)]
14919        fn abi_decode_raw(
14920            selector: [u8; 4],
14921            data: &[u8],
14922        ) -> alloy_sol_types::Result<Self> {
14923            static DECODE_SHIMS: &[fn(
14924                &[u8],
14925            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
14926                {
14927                    fn OutdatedState(
14928                        data: &[u8],
14929                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14930                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
14931                                data,
14932                            )
14933                            .map(LightClientV2Errors::OutdatedState)
14934                    }
14935                    OutdatedState
14936                },
14937                {
14938                    fn InvalidScalar(
14939                        data: &[u8],
14940                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14941                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
14942                                data,
14943                            )
14944                            .map(LightClientV2Errors::InvalidScalar)
14945                    }
14946                    InvalidScalar
14947                },
14948                {
14949                    fn MissingEpochRootUpdate(
14950                        data: &[u8],
14951                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14952                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
14953                                data,
14954                            )
14955                            .map(LightClientV2Errors::MissingEpochRootUpdate)
14956                    }
14957                    MissingEpochRootUpdate
14958                },
14959                {
14960                    fn InvalidProof(
14961                        data: &[u8],
14962                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14963                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
14964                            .map(LightClientV2Errors::InvalidProof)
14965                    }
14966                    InvalidProof
14967                },
14968                {
14969                    fn OwnableUnauthorizedAccount(
14970                        data: &[u8],
14971                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14972                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14973                                data,
14974                            )
14975                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
14976                    }
14977                    OwnableUnauthorizedAccount
14978                },
14979                {
14980                    fn FailedInnerCall(
14981                        data: &[u8],
14982                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14983                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14984                                data,
14985                            )
14986                            .map(LightClientV2Errors::FailedInnerCall)
14987                    }
14988                    FailedInnerCall
14989                },
14990                {
14991                    fn OwnableInvalidOwner(
14992                        data: &[u8],
14993                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
14994                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
14995                                data,
14996                            )
14997                            .map(LightClientV2Errors::OwnableInvalidOwner)
14998                    }
14999                    OwnableInvalidOwner
15000                },
15001                {
15002                    fn OwnershipCannotBeRenounced(
15003                        data: &[u8],
15004                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15005                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
15006                                data,
15007                            )
15008                            .map(LightClientV2Errors::OwnershipCannotBeRenounced)
15009                    }
15010                    OwnershipCannotBeRenounced
15011                },
15012                {
15013                    fn ERC1967InvalidImplementation(
15014                        data: &[u8],
15015                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15016                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15017                                data,
15018                            )
15019                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15020                    }
15021                    ERC1967InvalidImplementation
15022                },
15023                {
15024                    fn DeprecatedApi(
15025                        data: &[u8],
15026                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15027                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15028                                data,
15029                            )
15030                            .map(LightClientV2Errors::DeprecatedApi)
15031                    }
15032                    DeprecatedApi
15033                },
15034                {
15035                    fn WrongStakeTableUsed(
15036                        data: &[u8],
15037                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15038                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15039                                data,
15040                            )
15041                            .map(LightClientV2Errors::WrongStakeTableUsed)
15042                    }
15043                    WrongStakeTableUsed
15044                },
15045                {
15046                    fn InvalidHotShotBlockForCommitmentCheck(
15047                        data: &[u8],
15048                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15049                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15050                                data,
15051                            )
15052                            .map(
15053                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15054                            )
15055                    }
15056                    InvalidHotShotBlockForCommitmentCheck
15057                },
15058                {
15059                    fn AddressEmptyCode(
15060                        data: &[u8],
15061                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15062                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15063                                data,
15064                            )
15065                            .map(LightClientV2Errors::AddressEmptyCode)
15066                    }
15067                    AddressEmptyCode
15068                },
15069                {
15070                    fn InvalidArgs(
15071                        data: &[u8],
15072                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15073                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
15074                            .map(LightClientV2Errors::InvalidArgs)
15075                    }
15076                    InvalidArgs
15077                },
15078                {
15079                    fn ProverNotPermissioned(
15080                        data: &[u8],
15081                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15082                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15083                                data,
15084                            )
15085                            .map(LightClientV2Errors::ProverNotPermissioned)
15086                    }
15087                    ProverNotPermissioned
15088                },
15089                {
15090                    fn NoChangeRequired(
15091                        data: &[u8],
15092                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15093                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15094                                data,
15095                            )
15096                            .map(LightClientV2Errors::NoChangeRequired)
15097                    }
15098                    NoChangeRequired
15099                },
15100                {
15101                    fn UUPSUnsupportedProxiableUUID(
15102                        data: &[u8],
15103                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15104                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15105                                data,
15106                            )
15107                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15108                    }
15109                    UUPSUnsupportedProxiableUUID
15110                },
15111                {
15112                    fn InsufficientSnapshotHistory(
15113                        data: &[u8],
15114                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15115                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15116                                data,
15117                            )
15118                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15119                    }
15120                    InsufficientSnapshotHistory
15121                },
15122                {
15123                    fn ERC1967NonPayable(
15124                        data: &[u8],
15125                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15126                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15127                                data,
15128                            )
15129                            .map(LightClientV2Errors::ERC1967NonPayable)
15130                    }
15131                    ERC1967NonPayable
15132                },
15133                {
15134                    fn NotInitializing(
15135                        data: &[u8],
15136                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15137                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15138                                data,
15139                            )
15140                            .map(LightClientV2Errors::NotInitializing)
15141                    }
15142                    NotInitializing
15143                },
15144                {
15145                    fn UUPSUnauthorizedCallContext(
15146                        data: &[u8],
15147                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15148                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15149                                data,
15150                            )
15151                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15152                    }
15153                    UUPSUnauthorizedCallContext
15154                },
15155                {
15156                    fn InvalidAddress(
15157                        data: &[u8],
15158                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15159                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15160                                data,
15161                            )
15162                            .map(LightClientV2Errors::InvalidAddress)
15163                    }
15164                    InvalidAddress
15165                },
15166                {
15167                    fn InvalidMaxStateHistory(
15168                        data: &[u8],
15169                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15170                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15171                                data,
15172                            )
15173                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15174                    }
15175                    InvalidMaxStateHistory
15176                },
15177                {
15178                    fn InvalidInitialization(
15179                        data: &[u8],
15180                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15181                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15182                                data,
15183                            )
15184                            .map(LightClientV2Errors::InvalidInitialization)
15185                    }
15186                    InvalidInitialization
15187                },
15188            ];
15189            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15190                return Err(
15191                    alloy_sol_types::Error::unknown_selector(
15192                        <Self as alloy_sol_types::SolInterface>::NAME,
15193                        selector,
15194                    ),
15195                );
15196            };
15197            DECODE_SHIMS[idx](data)
15198        }
15199        #[inline]
15200        #[allow(non_snake_case)]
15201        fn abi_decode_raw_validate(
15202            selector: [u8; 4],
15203            data: &[u8],
15204        ) -> alloy_sol_types::Result<Self> {
15205            static DECODE_VALIDATE_SHIMS: &[fn(
15206                &[u8],
15207            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
15208                {
15209                    fn OutdatedState(
15210                        data: &[u8],
15211                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15212                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
15213                                data,
15214                            )
15215                            .map(LightClientV2Errors::OutdatedState)
15216                    }
15217                    OutdatedState
15218                },
15219                {
15220                    fn InvalidScalar(
15221                        data: &[u8],
15222                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15223                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
15224                                data,
15225                            )
15226                            .map(LightClientV2Errors::InvalidScalar)
15227                    }
15228                    InvalidScalar
15229                },
15230                {
15231                    fn MissingEpochRootUpdate(
15232                        data: &[u8],
15233                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15234                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
15235                                data,
15236                            )
15237                            .map(LightClientV2Errors::MissingEpochRootUpdate)
15238                    }
15239                    MissingEpochRootUpdate
15240                },
15241                {
15242                    fn InvalidProof(
15243                        data: &[u8],
15244                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15245                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
15246                                data,
15247                            )
15248                            .map(LightClientV2Errors::InvalidProof)
15249                    }
15250                    InvalidProof
15251                },
15252                {
15253                    fn OwnableUnauthorizedAccount(
15254                        data: &[u8],
15255                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15256                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
15257                                data,
15258                            )
15259                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
15260                    }
15261                    OwnableUnauthorizedAccount
15262                },
15263                {
15264                    fn FailedInnerCall(
15265                        data: &[u8],
15266                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15267                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
15268                                data,
15269                            )
15270                            .map(LightClientV2Errors::FailedInnerCall)
15271                    }
15272                    FailedInnerCall
15273                },
15274                {
15275                    fn OwnableInvalidOwner(
15276                        data: &[u8],
15277                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15278                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
15279                                data,
15280                            )
15281                            .map(LightClientV2Errors::OwnableInvalidOwner)
15282                    }
15283                    OwnableInvalidOwner
15284                },
15285                {
15286                    fn OwnershipCannotBeRenounced(
15287                        data: &[u8],
15288                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15289                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
15290                                data,
15291                            )
15292                            .map(LightClientV2Errors::OwnershipCannotBeRenounced)
15293                    }
15294                    OwnershipCannotBeRenounced
15295                },
15296                {
15297                    fn ERC1967InvalidImplementation(
15298                        data: &[u8],
15299                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15300                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
15301                                data,
15302                            )
15303                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15304                    }
15305                    ERC1967InvalidImplementation
15306                },
15307                {
15308                    fn DeprecatedApi(
15309                        data: &[u8],
15310                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15311                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
15312                                data,
15313                            )
15314                            .map(LightClientV2Errors::DeprecatedApi)
15315                    }
15316                    DeprecatedApi
15317                },
15318                {
15319                    fn WrongStakeTableUsed(
15320                        data: &[u8],
15321                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15322                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
15323                                data,
15324                            )
15325                            .map(LightClientV2Errors::WrongStakeTableUsed)
15326                    }
15327                    WrongStakeTableUsed
15328                },
15329                {
15330                    fn InvalidHotShotBlockForCommitmentCheck(
15331                        data: &[u8],
15332                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15333                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
15334                                data,
15335                            )
15336                            .map(
15337                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15338                            )
15339                    }
15340                    InvalidHotShotBlockForCommitmentCheck
15341                },
15342                {
15343                    fn AddressEmptyCode(
15344                        data: &[u8],
15345                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15346                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
15347                                data,
15348                            )
15349                            .map(LightClientV2Errors::AddressEmptyCode)
15350                    }
15351                    AddressEmptyCode
15352                },
15353                {
15354                    fn InvalidArgs(
15355                        data: &[u8],
15356                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15357                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
15358                                data,
15359                            )
15360                            .map(LightClientV2Errors::InvalidArgs)
15361                    }
15362                    InvalidArgs
15363                },
15364                {
15365                    fn ProverNotPermissioned(
15366                        data: &[u8],
15367                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15368                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
15369                                data,
15370                            )
15371                            .map(LightClientV2Errors::ProverNotPermissioned)
15372                    }
15373                    ProverNotPermissioned
15374                },
15375                {
15376                    fn NoChangeRequired(
15377                        data: &[u8],
15378                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15379                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
15380                                data,
15381                            )
15382                            .map(LightClientV2Errors::NoChangeRequired)
15383                    }
15384                    NoChangeRequired
15385                },
15386                {
15387                    fn UUPSUnsupportedProxiableUUID(
15388                        data: &[u8],
15389                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15390                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
15391                                data,
15392                            )
15393                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15394                    }
15395                    UUPSUnsupportedProxiableUUID
15396                },
15397                {
15398                    fn InsufficientSnapshotHistory(
15399                        data: &[u8],
15400                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15401                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15402                                data,
15403                            )
15404                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15405                    }
15406                    InsufficientSnapshotHistory
15407                },
15408                {
15409                    fn ERC1967NonPayable(
15410                        data: &[u8],
15411                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15412                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
15413                                data,
15414                            )
15415                            .map(LightClientV2Errors::ERC1967NonPayable)
15416                    }
15417                    ERC1967NonPayable
15418                },
15419                {
15420                    fn NotInitializing(
15421                        data: &[u8],
15422                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15423                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
15424                                data,
15425                            )
15426                            .map(LightClientV2Errors::NotInitializing)
15427                    }
15428                    NotInitializing
15429                },
15430                {
15431                    fn UUPSUnauthorizedCallContext(
15432                        data: &[u8],
15433                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15434                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
15435                                data,
15436                            )
15437                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15438                    }
15439                    UUPSUnauthorizedCallContext
15440                },
15441                {
15442                    fn InvalidAddress(
15443                        data: &[u8],
15444                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15445                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
15446                                data,
15447                            )
15448                            .map(LightClientV2Errors::InvalidAddress)
15449                    }
15450                    InvalidAddress
15451                },
15452                {
15453                    fn InvalidMaxStateHistory(
15454                        data: &[u8],
15455                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15456                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15457                                data,
15458                            )
15459                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15460                    }
15461                    InvalidMaxStateHistory
15462                },
15463                {
15464                    fn InvalidInitialization(
15465                        data: &[u8],
15466                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15467                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
15468                                data,
15469                            )
15470                            .map(LightClientV2Errors::InvalidInitialization)
15471                    }
15472                    InvalidInitialization
15473                },
15474            ];
15475            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15476                return Err(
15477                    alloy_sol_types::Error::unknown_selector(
15478                        <Self as alloy_sol_types::SolInterface>::NAME,
15479                        selector,
15480                    ),
15481                );
15482            };
15483            DECODE_VALIDATE_SHIMS[idx](data)
15484        }
15485        #[inline]
15486        fn abi_encoded_size(&self) -> usize {
15487            match self {
15488                Self::AddressEmptyCode(inner) => {
15489                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15490                        inner,
15491                    )
15492                }
15493                Self::DeprecatedApi(inner) => {
15494                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15495                }
15496                Self::ERC1967InvalidImplementation(inner) => {
15497                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15498                        inner,
15499                    )
15500                }
15501                Self::ERC1967NonPayable(inner) => {
15502                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15503                        inner,
15504                    )
15505                }
15506                Self::FailedInnerCall(inner) => {
15507                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15508                        inner,
15509                    )
15510                }
15511                Self::InsufficientSnapshotHistory(inner) => {
15512                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15513                        inner,
15514                    )
15515                }
15516                Self::InvalidAddress(inner) => {
15517                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15518                        inner,
15519                    )
15520                }
15521                Self::InvalidArgs(inner) => {
15522                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15523                }
15524                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15525                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15526                        inner,
15527                    )
15528                }
15529                Self::InvalidInitialization(inner) => {
15530                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15531                        inner,
15532                    )
15533                }
15534                Self::InvalidMaxStateHistory(inner) => {
15535                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15536                        inner,
15537                    )
15538                }
15539                Self::InvalidProof(inner) => {
15540                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15541                }
15542                Self::InvalidScalar(inner) => {
15543                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15544                }
15545                Self::MissingEpochRootUpdate(inner) => {
15546                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15547                        inner,
15548                    )
15549                }
15550                Self::NoChangeRequired(inner) => {
15551                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15552                        inner,
15553                    )
15554                }
15555                Self::NotInitializing(inner) => {
15556                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15557                        inner,
15558                    )
15559                }
15560                Self::OutdatedState(inner) => {
15561                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15562                }
15563                Self::OwnableInvalidOwner(inner) => {
15564                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15565                        inner,
15566                    )
15567                }
15568                Self::OwnableUnauthorizedAccount(inner) => {
15569                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15570                        inner,
15571                    )
15572                }
15573                Self::OwnershipCannotBeRenounced(inner) => {
15574                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
15575                        inner,
15576                    )
15577                }
15578                Self::ProverNotPermissioned(inner) => {
15579                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15580                        inner,
15581                    )
15582                }
15583                Self::UUPSUnauthorizedCallContext(inner) => {
15584                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15585                        inner,
15586                    )
15587                }
15588                Self::UUPSUnsupportedProxiableUUID(inner) => {
15589                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15590                        inner,
15591                    )
15592                }
15593                Self::WrongStakeTableUsed(inner) => {
15594                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15595                        inner,
15596                    )
15597                }
15598            }
15599        }
15600        #[inline]
15601        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15602            match self {
15603                Self::AddressEmptyCode(inner) => {
15604                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15605                        inner,
15606                        out,
15607                    )
15608                }
15609                Self::DeprecatedApi(inner) => {
15610                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15611                        inner,
15612                        out,
15613                    )
15614                }
15615                Self::ERC1967InvalidImplementation(inner) => {
15616                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15617                        inner,
15618                        out,
15619                    )
15620                }
15621                Self::ERC1967NonPayable(inner) => {
15622                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15623                        inner,
15624                        out,
15625                    )
15626                }
15627                Self::FailedInnerCall(inner) => {
15628                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15629                        inner,
15630                        out,
15631                    )
15632                }
15633                Self::InsufficientSnapshotHistory(inner) => {
15634                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15635                        inner,
15636                        out,
15637                    )
15638                }
15639                Self::InvalidAddress(inner) => {
15640                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15641                        inner,
15642                        out,
15643                    )
15644                }
15645                Self::InvalidArgs(inner) => {
15646                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15647                        inner,
15648                        out,
15649                    )
15650                }
15651                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15652                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15653                        inner,
15654                        out,
15655                    )
15656                }
15657                Self::InvalidInitialization(inner) => {
15658                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15659                        inner,
15660                        out,
15661                    )
15662                }
15663                Self::InvalidMaxStateHistory(inner) => {
15664                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15665                        inner,
15666                        out,
15667                    )
15668                }
15669                Self::InvalidProof(inner) => {
15670                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15671                        inner,
15672                        out,
15673                    )
15674                }
15675                Self::InvalidScalar(inner) => {
15676                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15677                        inner,
15678                        out,
15679                    )
15680                }
15681                Self::MissingEpochRootUpdate(inner) => {
15682                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15683                        inner,
15684                        out,
15685                    )
15686                }
15687                Self::NoChangeRequired(inner) => {
15688                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15689                        inner,
15690                        out,
15691                    )
15692                }
15693                Self::NotInitializing(inner) => {
15694                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15695                        inner,
15696                        out,
15697                    )
15698                }
15699                Self::OutdatedState(inner) => {
15700                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15701                        inner,
15702                        out,
15703                    )
15704                }
15705                Self::OwnableInvalidOwner(inner) => {
15706                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15707                        inner,
15708                        out,
15709                    )
15710                }
15711                Self::OwnableUnauthorizedAccount(inner) => {
15712                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15713                        inner,
15714                        out,
15715                    )
15716                }
15717                Self::OwnershipCannotBeRenounced(inner) => {
15718                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
15719                        inner,
15720                        out,
15721                    )
15722                }
15723                Self::ProverNotPermissioned(inner) => {
15724                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15725                        inner,
15726                        out,
15727                    )
15728                }
15729                Self::UUPSUnauthorizedCallContext(inner) => {
15730                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15731                        inner,
15732                        out,
15733                    )
15734                }
15735                Self::UUPSUnsupportedProxiableUUID(inner) => {
15736                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15737                        inner,
15738                        out,
15739                    )
15740                }
15741                Self::WrongStakeTableUsed(inner) => {
15742                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
15743                        inner,
15744                        out,
15745                    )
15746                }
15747            }
15748        }
15749    }
15750    ///Container for all the [`LightClientV2`](self) events.
15751    #[derive(serde::Serialize, serde::Deserialize)]
15752    #[derive(Debug, PartialEq, Eq, Hash)]
15753    pub enum LightClientV2Events {
15754        #[allow(missing_docs)]
15755        Initialized(Initialized),
15756        #[allow(missing_docs)]
15757        NewEpoch(NewEpoch),
15758        #[allow(missing_docs)]
15759        NewState(NewState),
15760        #[allow(missing_docs)]
15761        OwnershipTransferred(OwnershipTransferred),
15762        #[allow(missing_docs)]
15763        PermissionedProverNotRequired(PermissionedProverNotRequired),
15764        #[allow(missing_docs)]
15765        PermissionedProverRequired(PermissionedProverRequired),
15766        #[allow(missing_docs)]
15767        Upgrade(Upgrade),
15768        #[allow(missing_docs)]
15769        Upgraded(Upgraded),
15770    }
15771    #[automatically_derived]
15772    impl LightClientV2Events {
15773        /// All the selectors of this enum.
15774        ///
15775        /// Note that the selectors might not be in the same order as the variants.
15776        /// No guarantees are made about the order of the selectors.
15777        ///
15778        /// Prefer using `SolInterface` methods instead.
15779        pub const SELECTORS: &'static [[u8; 32usize]] = &[
15780            [
15781                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
15782                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
15783                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
15784            ],
15785            [
15786                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
15787                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
15788                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
15789            ],
15790            [
15791                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
15792                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
15793                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
15794            ],
15795            [
15796                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
15797                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
15798                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
15799            ],
15800            [
15801                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
15802                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
15803                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
15804            ],
15805            [
15806                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
15807                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
15808                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
15809            ],
15810            [
15811                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
15812                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
15813                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
15814            ],
15815            [
15816                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
15817                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
15818                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
15819            ],
15820        ];
15821    }
15822    #[automatically_derived]
15823    impl alloy_sol_types::SolEventInterface for LightClientV2Events {
15824        const NAME: &'static str = "LightClientV2Events";
15825        const COUNT: usize = 8usize;
15826        fn decode_raw_log(
15827            topics: &[alloy_sol_types::Word],
15828            data: &[u8],
15829        ) -> alloy_sol_types::Result<Self> {
15830            match topics.first().copied() {
15831                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15832                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
15833                            topics,
15834                            data,
15835                        )
15836                        .map(Self::Initialized)
15837                }
15838                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15839                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15840                        .map(Self::NewEpoch)
15841                }
15842                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15843                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15844                        .map(Self::NewState)
15845                }
15846                Some(
15847                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15848                ) => {
15849                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15850                            topics,
15851                            data,
15852                        )
15853                        .map(Self::OwnershipTransferred)
15854                }
15855                Some(
15856                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15857                ) => {
15858                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15859                            topics,
15860                            data,
15861                        )
15862                        .map(Self::PermissionedProverNotRequired)
15863                }
15864                Some(
15865                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15866                ) => {
15867                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15868                            topics,
15869                            data,
15870                        )
15871                        .map(Self::PermissionedProverRequired)
15872                }
15873                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15874                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15875                        .map(Self::Upgrade)
15876                }
15877                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15878                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15879                        .map(Self::Upgraded)
15880                }
15881                _ => {
15882                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15883                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15884                        log: alloy_sol_types::private::Box::new(
15885                            alloy_sol_types::private::LogData::new_unchecked(
15886                                topics.to_vec(),
15887                                data.to_vec().into(),
15888                            ),
15889                        ),
15890                    })
15891                }
15892            }
15893        }
15894    }
15895    #[automatically_derived]
15896    impl alloy_sol_types::private::IntoLogData for LightClientV2Events {
15897        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15898            match self {
15899                Self::Initialized(inner) => {
15900                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15901                }
15902                Self::NewEpoch(inner) => {
15903                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15904                }
15905                Self::NewState(inner) => {
15906                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15907                }
15908                Self::OwnershipTransferred(inner) => {
15909                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15910                }
15911                Self::PermissionedProverNotRequired(inner) => {
15912                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15913                }
15914                Self::PermissionedProverRequired(inner) => {
15915                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15916                }
15917                Self::Upgrade(inner) => {
15918                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15919                }
15920                Self::Upgraded(inner) => {
15921                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15922                }
15923            }
15924        }
15925        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15926            match self {
15927                Self::Initialized(inner) => {
15928                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15929                }
15930                Self::NewEpoch(inner) => {
15931                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15932                }
15933                Self::NewState(inner) => {
15934                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15935                }
15936                Self::OwnershipTransferred(inner) => {
15937                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15938                }
15939                Self::PermissionedProverNotRequired(inner) => {
15940                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15941                }
15942                Self::PermissionedProverRequired(inner) => {
15943                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15944                }
15945                Self::Upgrade(inner) => {
15946                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15947                }
15948                Self::Upgraded(inner) => {
15949                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15950                }
15951            }
15952        }
15953    }
15954    use alloy::contract as alloy_contract;
15955    /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
15956
15957See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
15958    #[inline]
15959    pub const fn new<
15960        P: alloy_contract::private::Provider<N>,
15961        N: alloy_contract::private::Network,
15962    >(
15963        address: alloy_sol_types::private::Address,
15964        provider: P,
15965    ) -> LightClientV2Instance<P, N> {
15966        LightClientV2Instance::<P, N>::new(address, provider)
15967    }
15968    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15969
15970Returns a new instance of the contract, if the deployment was successful.
15971
15972For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
15973    #[inline]
15974    pub fn deploy<
15975        P: alloy_contract::private::Provider<N>,
15976        N: alloy_contract::private::Network,
15977    >(
15978        provider: P,
15979    ) -> impl ::core::future::Future<
15980        Output = alloy_contract::Result<LightClientV2Instance<P, N>>,
15981    > {
15982        LightClientV2Instance::<P, N>::deploy(provider)
15983    }
15984    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
15985and constructor arguments, if any.
15986
15987This is a simple wrapper around creating a `RawCallBuilder` with the data set to
15988the bytecode concatenated with the constructor's ABI-encoded arguments.*/
15989    #[inline]
15990    pub fn deploy_builder<
15991        P: alloy_contract::private::Provider<N>,
15992        N: alloy_contract::private::Network,
15993    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
15994        LightClientV2Instance::<P, N>::deploy_builder(provider)
15995    }
15996    /**A [`LightClientV2`](self) instance.
15997
15998Contains type-safe methods for interacting with an on-chain instance of the
15999[`LightClientV2`](self) contract located at a given `address`, using a given
16000provider `P`.
16001
16002If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16003documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16004be used to deploy a new instance of the contract.
16005
16006See the [module-level documentation](self) for all the available methods.*/
16007    #[derive(Clone)]
16008    pub struct LightClientV2Instance<P, N = alloy_contract::private::Ethereum> {
16009        address: alloy_sol_types::private::Address,
16010        provider: P,
16011        _network: ::core::marker::PhantomData<N>,
16012    }
16013    #[automatically_derived]
16014    impl<P, N> ::core::fmt::Debug for LightClientV2Instance<P, N> {
16015        #[inline]
16016        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16017            f.debug_tuple("LightClientV2Instance").field(&self.address).finish()
16018        }
16019    }
16020    /// Instantiation and getters/setters.
16021    #[automatically_derived]
16022    impl<
16023        P: alloy_contract::private::Provider<N>,
16024        N: alloy_contract::private::Network,
16025    > LightClientV2Instance<P, N> {
16026        /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16027
16028See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16029        #[inline]
16030        pub const fn new(
16031            address: alloy_sol_types::private::Address,
16032            provider: P,
16033        ) -> Self {
16034            Self {
16035                address,
16036                provider,
16037                _network: ::core::marker::PhantomData,
16038            }
16039        }
16040        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16041
16042Returns a new instance of the contract, if the deployment was successful.
16043
16044For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16045        #[inline]
16046        pub async fn deploy(
16047            provider: P,
16048        ) -> alloy_contract::Result<LightClientV2Instance<P, N>> {
16049            let call_builder = Self::deploy_builder(provider);
16050            let contract_address = call_builder.deploy().await?;
16051            Ok(Self::new(contract_address, call_builder.provider))
16052        }
16053        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16054and constructor arguments, if any.
16055
16056This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16057the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16058        #[inline]
16059        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16060            alloy_contract::RawCallBuilder::new_raw_deploy(
16061                provider,
16062                ::core::clone::Clone::clone(&BYTECODE),
16063            )
16064        }
16065        /// Returns a reference to the address.
16066        #[inline]
16067        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16068            &self.address
16069        }
16070        /// Sets the address.
16071        #[inline]
16072        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16073            self.address = address;
16074        }
16075        /// Sets the address and returns `self`.
16076        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16077            self.set_address(address);
16078            self
16079        }
16080        /// Returns a reference to the provider.
16081        #[inline]
16082        pub const fn provider(&self) -> &P {
16083            &self.provider
16084        }
16085    }
16086    impl<P: ::core::clone::Clone, N> LightClientV2Instance<&P, N> {
16087        /// Clones the provider and returns a new instance with the cloned provider.
16088        #[inline]
16089        pub fn with_cloned_provider(self) -> LightClientV2Instance<P, N> {
16090            LightClientV2Instance {
16091                address: self.address,
16092                provider: ::core::clone::Clone::clone(&self.provider),
16093                _network: ::core::marker::PhantomData,
16094            }
16095        }
16096    }
16097    /// Function calls.
16098    #[automatically_derived]
16099    impl<
16100        P: alloy_contract::private::Provider<N>,
16101        N: alloy_contract::private::Network,
16102    > LightClientV2Instance<P, N> {
16103        /// Creates a new call builder using this contract instance's provider and address.
16104        ///
16105        /// Note that the call can be any function call, not just those defined in this
16106        /// contract. Prefer using the other methods for building type-safe contract calls.
16107        pub fn call_builder<C: alloy_sol_types::SolCall>(
16108            &self,
16109            call: &C,
16110        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16111            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16112        }
16113        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16114        pub fn UPGRADE_INTERFACE_VERSION(
16115            &self,
16116        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16117            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16118        }
16119        ///Creates a new call builder for the [`_getVk`] function.
16120        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16121            self.call_builder(&_getVkCall)
16122        }
16123        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16124        pub fn blocksPerEpoch(
16125            &self,
16126        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16127            self.call_builder(&blocksPerEpochCall)
16128        }
16129        ///Creates a new call builder for the [`currentBlockNumber`] function.
16130        pub fn currentBlockNumber(
16131            &self,
16132        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16133            self.call_builder(&currentBlockNumberCall)
16134        }
16135        ///Creates a new call builder for the [`currentEpoch`] function.
16136        pub fn currentEpoch(
16137            &self,
16138        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16139            self.call_builder(&currentEpochCall)
16140        }
16141        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16142        pub fn disablePermissionedProverMode(
16143            &self,
16144        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16145            self.call_builder(&disablePermissionedProverModeCall)
16146        }
16147        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16148        pub fn epochFromBlockNumber(
16149            &self,
16150            _blockNum: u64,
16151            _blocksPerEpoch: u64,
16152        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16153            self.call_builder(
16154                &epochFromBlockNumberCall {
16155                    _blockNum,
16156                    _blocksPerEpoch,
16157                },
16158            )
16159        }
16160        ///Creates a new call builder for the [`epochStartBlock`] function.
16161        pub fn epochStartBlock(
16162            &self,
16163        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16164            self.call_builder(&epochStartBlockCall)
16165        }
16166        ///Creates a new call builder for the [`finalizedState`] function.
16167        pub fn finalizedState(
16168            &self,
16169        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16170            self.call_builder(&finalizedStateCall)
16171        }
16172        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16173        pub fn genesisStakeTableState(
16174            &self,
16175        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16176            self.call_builder(&genesisStakeTableStateCall)
16177        }
16178        ///Creates a new call builder for the [`genesisState`] function.
16179        pub fn genesisState(
16180            &self,
16181        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16182            self.call_builder(&genesisStateCall)
16183        }
16184        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16185        pub fn getHotShotCommitment(
16186            &self,
16187            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16188        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16189            self.call_builder(
16190                &getHotShotCommitmentCall {
16191                    hotShotBlockHeight,
16192                },
16193            )
16194        }
16195        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16196        pub fn getStateHistoryCount(
16197            &self,
16198        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16199            self.call_builder(&getStateHistoryCountCall)
16200        }
16201        ///Creates a new call builder for the [`getVersion`] function.
16202        pub fn getVersion(
16203            &self,
16204        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16205            self.call_builder(&getVersionCall)
16206        }
16207        ///Creates a new call builder for the [`initialize`] function.
16208        pub fn initialize(
16209            &self,
16210            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16211            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16212            _stateHistoryRetentionPeriod: u32,
16213            owner: alloy::sol_types::private::Address,
16214        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16215            self.call_builder(
16216                &initializeCall {
16217                    _genesis,
16218                    _genesisStakeTableState,
16219                    _stateHistoryRetentionPeriod,
16220                    owner,
16221                },
16222            )
16223        }
16224        ///Creates a new call builder for the [`initializeV2`] function.
16225        pub fn initializeV2(
16226            &self,
16227            _blocksPerEpoch: u64,
16228            _epochStartBlock: u64,
16229        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16230            self.call_builder(
16231                &initializeV2Call {
16232                    _blocksPerEpoch,
16233                    _epochStartBlock,
16234                },
16235            )
16236        }
16237        ///Creates a new call builder for the [`isEpochRoot`] function.
16238        pub fn isEpochRoot(
16239            &self,
16240            blockHeight: u64,
16241        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16242            self.call_builder(&isEpochRootCall { blockHeight })
16243        }
16244        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16245        pub fn isGtEpochRoot(
16246            &self,
16247            blockHeight: u64,
16248        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16249            self.call_builder(&isGtEpochRootCall { blockHeight })
16250        }
16251        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16252        pub fn isPermissionedProverEnabled(
16253            &self,
16254        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16255            self.call_builder(&isPermissionedProverEnabledCall)
16256        }
16257        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16258        pub fn lagOverEscapeHatchThreshold(
16259            &self,
16260            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16261            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16262        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16263            self.call_builder(
16264                &lagOverEscapeHatchThresholdCall {
16265                    blockNumber,
16266                    blockThreshold,
16267                },
16268            )
16269        }
16270        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16271        pub fn newFinalizedState_0(
16272            &self,
16273            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16274            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16275        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16276            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16277        }
16278        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16279        pub fn newFinalizedState_1(
16280            &self,
16281            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16282            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16283            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16284        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16285            self.call_builder(
16286                &newFinalizedState_1Call {
16287                    newState,
16288                    nextStakeTable,
16289                    proof,
16290                },
16291            )
16292        }
16293        ///Creates a new call builder for the [`owner`] function.
16294        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16295            self.call_builder(&ownerCall)
16296        }
16297        ///Creates a new call builder for the [`permissionedProver`] function.
16298        pub fn permissionedProver(
16299            &self,
16300        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16301            self.call_builder(&permissionedProverCall)
16302        }
16303        ///Creates a new call builder for the [`proxiableUUID`] function.
16304        pub fn proxiableUUID(
16305            &self,
16306        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16307            self.call_builder(&proxiableUUIDCall)
16308        }
16309        ///Creates a new call builder for the [`renounceOwnership`] function.
16310        pub fn renounceOwnership(
16311            &self,
16312        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16313            self.call_builder(&renounceOwnershipCall)
16314        }
16315        ///Creates a new call builder for the [`setPermissionedProver`] function.
16316        pub fn setPermissionedProver(
16317            &self,
16318            prover: alloy::sol_types::private::Address,
16319        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16320            self.call_builder(
16321                &setPermissionedProverCall {
16322                    prover,
16323                },
16324            )
16325        }
16326        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16327        pub fn setStateHistoryRetentionPeriod(
16328            &self,
16329            historySeconds: u32,
16330        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16331            self.call_builder(
16332                &setStateHistoryRetentionPeriodCall {
16333                    historySeconds,
16334                },
16335            )
16336        }
16337        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16338        pub fn setstateHistoryRetentionPeriod(
16339            &self,
16340            historySeconds: u32,
16341        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16342            self.call_builder(
16343                &setstateHistoryRetentionPeriodCall {
16344                    historySeconds,
16345                },
16346            )
16347        }
16348        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16349        pub fn stateHistoryCommitments(
16350            &self,
16351            _0: alloy::sol_types::private::primitives::aliases::U256,
16352        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16353            self.call_builder(&stateHistoryCommitmentsCall(_0))
16354        }
16355        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16356        pub fn stateHistoryFirstIndex(
16357            &self,
16358        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16359            self.call_builder(&stateHistoryFirstIndexCall)
16360        }
16361        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16362        pub fn stateHistoryRetentionPeriod(
16363            &self,
16364        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16365            self.call_builder(&stateHistoryRetentionPeriodCall)
16366        }
16367        ///Creates a new call builder for the [`transferOwnership`] function.
16368        pub fn transferOwnership(
16369            &self,
16370            newOwner: alloy::sol_types::private::Address,
16371        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16372            self.call_builder(&transferOwnershipCall { newOwner })
16373        }
16374        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16375        pub fn updateEpochStartBlock(
16376            &self,
16377            newEpochStartBlock: u64,
16378        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
16379            self.call_builder(
16380                &updateEpochStartBlockCall {
16381                    newEpochStartBlock,
16382                },
16383            )
16384        }
16385        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16386        pub fn upgradeToAndCall(
16387            &self,
16388            newImplementation: alloy::sol_types::private::Address,
16389            data: alloy::sol_types::private::Bytes,
16390        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
16391            self.call_builder(
16392                &upgradeToAndCallCall {
16393                    newImplementation,
16394                    data,
16395                },
16396            )
16397        }
16398        ///Creates a new call builder for the [`votingStakeTableState`] function.
16399        pub fn votingStakeTableState(
16400            &self,
16401        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
16402            self.call_builder(&votingStakeTableStateCall)
16403        }
16404    }
16405    /// Event filters.
16406    #[automatically_derived]
16407    impl<
16408        P: alloy_contract::private::Provider<N>,
16409        N: alloy_contract::private::Network,
16410    > LightClientV2Instance<P, N> {
16411        /// Creates a new event filter using this contract instance's provider and address.
16412        ///
16413        /// Note that the type can be any event, not just those defined in this contract.
16414        /// Prefer using the other methods for building type-safe event filters.
16415        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16416            &self,
16417        ) -> alloy_contract::Event<&P, E, N> {
16418            alloy_contract::Event::new_sol(&self.provider, &self.address)
16419        }
16420        ///Creates a new event filter for the [`Initialized`] event.
16421        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
16422            self.event_filter::<Initialized>()
16423        }
16424        ///Creates a new event filter for the [`NewEpoch`] event.
16425        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
16426            self.event_filter::<NewEpoch>()
16427        }
16428        ///Creates a new event filter for the [`NewState`] event.
16429        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
16430            self.event_filter::<NewState>()
16431        }
16432        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16433        pub fn OwnershipTransferred_filter(
16434            &self,
16435        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
16436            self.event_filter::<OwnershipTransferred>()
16437        }
16438        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16439        pub fn PermissionedProverNotRequired_filter(
16440            &self,
16441        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
16442            self.event_filter::<PermissionedProverNotRequired>()
16443        }
16444        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16445        pub fn PermissionedProverRequired_filter(
16446            &self,
16447        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
16448            self.event_filter::<PermissionedProverRequired>()
16449        }
16450        ///Creates a new event filter for the [`Upgrade`] event.
16451        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
16452            self.event_filter::<Upgrade>()
16453        }
16454        ///Creates a new event filter for the [`Upgraded`] event.
16455        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
16456            self.event_filter::<Upgraded>()
16457        }
16458    }
16459}