hotshot_contract_adapter/bindings/
light_client_arbitrum_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 LightClientArbitrumV2 {
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 LightClientArbitrumV2 {
4918    use super::*;
4919    use alloy::sol_types as alloy_sol_types;
4920    /// The creation / init bytecode of the contract.
4921    ///
4922    /// ```text
4923    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134ce6100f95f395f8181611bb501528181611bde0152611d5b01526134ce5ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127ab565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127c4565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127db565b348015610322575f5ffd5b5061022a6103313660046129f2565b6108b0565b348015610341575f5ffd5b5061022a610350366004612cb4565b610927565b348015610360575f5ffd5b5061037461036f3660046129f2565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129f2565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cfb565b610a99565b61022a6104ae366004612d14565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e17565b610b76565b348015610519575f5ffd5b506103aa610eb0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127c4565b610ed5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e5b565b611000565b3480156105e3575f5ffd5b5061022a6105f2366004612cfb565b61106f565b348015610602575f5ffd5b5061022a610611366004612e83565b6110f8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ed8565b3480156106b3575f5ffd5b5061022a6106c2366004612e5b565b61121a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f0d565b611386565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127ab565b6114e5565b348015610796575f5ffd5b5060095461042c565b6107a7611524565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612511565b6108ab61157f565b905090565b6108b8611524565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617611000565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f41565b61098d9190612f74565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f74565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fa1565b600a546001600160401b0391821691610a26911684612f74565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fc0565b610aa1611524565b610aaa8161106f565b50565b610ab5611baa565b610abe82611c4e565b610ac88282611c8f565b5050565b5f610ad5611d50565b505f5160206134a25f395f51905f5290565b610aef611524565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d611524565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b9b57506008546001600160a01b03163314155b15610bb9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bf2575060065460208401516001600160401b03600160401b9092048216911611155b15610c105760405163051c46ef60e01b815260040160405180910390fd5b610c1d8360400151611d99565b610c2a8260200151611d99565b610c378260400151611d99565b610c448260600151611d99565b5f610c4d610eb0565b6020850151600a549192505f91610c6d91906001600160401b0316611000565b600a549091506001600160401b03600160801b909104811690821610610cb857610c9a85602001516109a2565b15610cb85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d6b576002610ce28383612fa1565b6001600160401b031610610d095760405163080ae8d960e01b815260040160405180910390fd5b610d14826001612f41565b6001600160401b0316816001600160401b0316148015610d4d5750600654610d4b90600160401b90046001600160401b0316610940565b155b15610d6b5760405163080ae8d960e01b815260040160405180910390fd5b610d76858585611dda565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dd55750610dd58560200151610940565b15610e3f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e23826001612f41565b6040516001600160401b03909116815260200160405180910390a15b610e51610e4a610a37565b4287611f51565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610ea191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116611000565b600980545f91829190610ee9600183612fd7565b81548110610ef957610ef9612fea565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610ff9578460098281548110610f6857610f68612fea565b5f918252602090912060029091020154600160801b90046001600160401b03161115610ff15760098181548110610fa157610fa1612fea565b905f5260205f2090600202016001015460098281548110610fc457610fc4612fea565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f4c565b5050915091565b5f816001600160401b03165f0361101857505f610a31565b826001600160401b03165f0361103057506001610a31565b61103a8284612f74565b6001600160401b03165f0361105a576110538284612ffe565b9050610a31565b6110648284612ffe565b611053906001612f41565b611077611524565b610e108163ffffffff16108061109657506301e133808163ffffffff16115b806110b4575060085463ffffffff600160a01b909104811690821611155b156110d2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561113c5750825b90505f826001600160401b031660011480156111575750303b155b905081158015611165575080155b156111835760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ad57845460ff60401b1916600160401b1785555b6111b68661213a565b6111be61214b565b6111c9898989612153565b831561120f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611222611524565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061126b575080546001600160401b03808416911610155b156112895760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112d1576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b03199092169087161717905561131a8385611000565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f90611393610a37565b84118061139e575080155b806113e85750600854600980549091600160c01b90046001600160401b03169081106113cc576113cc612fea565b5f9182526020909120600290910201546001600160401b031684105b156114065760405163b0b4387760e01b815260040160405180910390fd5b5f8080611414600185612fd7565b90505b816114b057600854600160c01b90046001600160401b031681106114b057866009828154811061144957611449612fea565b5f9182526020909120600290910201546001600160401b03161161149e57600191506009818154811061147e5761147e612fea565b5f9182526020909120600290910201546001600160401b031692506114b0565b806114a88161302b565b915050611417565b816114ce5760405163b0b4387760e01b815260040160405180910390fd5b856114d98489612fd7565b11979650505050505050565b6114ed611524565b6001600160a01b03811661151b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa8161227f565b336115567f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b8152336004820152602401611512565b611587612511565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c3057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c245f5160206134a25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c56611524565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ce9575060408051601f3d908101601f19168201909252611ce691810190612fc0565b60015b611d1157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611512565b5f5160206134a25f395f51905f528114611d4157604051632a87526960e21b815260048101829052602401611512565b611d4b83836122ef565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405163016c173360e21b815260040160405180910390fd5b5f611de361089b565b9050611ded612776565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e5d5750611e5d8560200151610940565b15611e8f57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611eb3565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eee90859085908890600401613222565b602060405180830381865af4158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613442565b611f4a576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fc6575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f9157611f91612fea565b5f918252602090912060029091020154611fbb90600160401b90046001600160401b031684612fa1565b6001600160401b0316115b1561205957600854600980549091600160c01b90046001600160401b0316908110611ff357611ff3612fea565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861203383613461565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612142612344565b610aaa8161238d565b610b53612344565b82516001600160401b0316151580612177575060208301516001600160401b031615155b8061218457506020820151155b8061219157506040820151155b8061219e57506060820151155b806121a857508151155b806121ba5750610e108163ffffffff16105b806121ce57506301e133808163ffffffff16115b156121ec576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122f882612395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233c57611d4b82826123f8565b610ac861246a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114ed612344565b806001600160a01b03163b5f036123ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611512565b5f5160206134a25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612414919061348b565b5f60405180830381855af49150503d805f811461244c576040519150601f19603f3d011682016040523d82523d5f602084013e612451565b606091505b5091509150612461858383612489565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b60608261249e57612499826124e8565b6124e1565b81511580156124b557506001600160a01b0384163b155b156124de57604051639996b31560e01b81526001600160a01b0385166004820152602401611512565b50805b9392505050565b8051156124f85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161254460405180604001604052805f81526020015f81525090565b815260200161256460405180604001604052805f81526020015f81525090565b815260200161258460405180604001604052805f81526020015f81525090565b81526020016125a460405180604001604052805f81526020015f81525090565b81526020016125c460405180604001604052805f81526020015f81525090565b81526020016125e460405180604001604052805f81526020015f81525090565b815260200161260460405180604001604052805f81526020015f81525090565b815260200161262460405180604001604052805f81526020015f81525090565b815260200161264460405180604001604052805f81526020015f81525090565b815260200161266460405180604001604052805f81526020015f81525090565b815260200161268460405180604001604052805f81526020015f81525090565b81526020016126a460405180604001604052805f81526020015f81525090565b81526020016126c460405180604001604052805f81526020015f81525090565b81526020016126e460405180604001604052805f81526020015f81525090565b815260200161270460405180604001604052805f81526020015f81525090565b815260200161272460405180604001604052805f81526020015f81525090565b815260200161274460405180604001604052805f81526020015f81525090565b815260200161276460405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127bb575f5ffd5b6124e182612795565b5f602082840312156127d4575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161280d604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a02575f5ffd5b6124e1826129dc565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a4257612a42612a0b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a7057612a70612a0b565b604052919050565b5f60608284031215612a88575f5ffd5b604051606081016001600160401b0381118282101715612aaa57612aaa612a0b565b604052905080612ab9836129dc565b8152612ac7602084016129dc565b6020820152604092830135920191909152919050565b5f60408284031215612aed575f5ffd5b604080519081016001600160401b0381118282101715612b0f57612b0f612a0b565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b3a575f5ffd5b612b42612a1f565b9050612b4e8383612add565b8152612b5d8360408401612add565b6020820152612b6f8360808401612add565b6040820152612b818360c08401612add565b6060820152612b94836101008401612add565b6080820152612ba7836101408401612add565b60a0820152612bba836101808401612add565b60c0820152612bcd836101c08401612add565b60e0820152612be0836102008401612add565b610100820152612bf4836102408401612add565b610120820152612c08836102808401612add565b610140820152612c1c836102c08401612add565b610160820152612c30836103008401612add565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cc6575f5ffd5b612cd08484612a78565b9150612cdf8460608501612b29565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d0b575f5ffd5b6124e182612ce8565b5f5f60408385031215612d25575f5ffd5b612d2e83612795565b915060208301356001600160401b03811115612d48575f5ffd5b8301601f81018513612d58575f5ffd5b80356001600160401b03811115612d7157612d71612a0b565b612d84601f8201601f1916602001612a48565b818152866020838501011115612d98575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dc7575f5ffd5b604051608081016001600160401b0381118282101715612de957612de9612a0b565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e2a575f5ffd5b612e348585612a78565b9250612e438560608601612db7565b9150612e528560e08601612b29565b90509250925092565b5f5f60408385031215612e6c575f5ffd5b612e75836129dc565b9150612cdf602084016129dc565b5f5f5f5f6101208587031215612e97575f5ffd5b612ea18686612a78565b9350612eb08660608701612db7565b9250612ebe60e08601612ce8565b9150612ecd6101008601612795565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f1e575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f2d565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8c57612f8c612f60565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f2d565b5f60208284031215612fd0575f5ffd5b5051919050565b81810381811115610a3157610a31612f2d565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061301657613016612f60565b806001600160401b0384160491505092915050565b5f8161303957613039612f2d565b505f190190565b805f5b600b811015613062578151845260209384019390910190600101613043565b50505050565b61307d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae08201905084518252602085015160208301526040850151613254604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261342c610500830185613040565b61343a610660830184613068565b949350505050565b5f60208284031215613452575f5ffd5b815180151581146124e1575f5ffd5b5f6001600160401b0382166001600160401b03810361348257613482612f2d565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
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[`\x80Qa4\xCEa\0\xF9_9_\x81\x81a\x1B\xB5\x01R\x81\x81a\x1B\xDE\x01Ra\x1D[\x01Ra4\xCE_\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\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\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'\xABV[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xC4V[a\x08RV[`@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\x9BV[`@Qa\x02\x80\x91\x90a'\xDBV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xF2V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xB4V[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xF2V[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)\xF2V[a\t\xA2V[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[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xFBV[a\n\x99V[a\x02*a\x04\xAE6`\x04a-\x14V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\x17V[a\x0BvV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xB0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xC4V[a\x0E\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\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\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.[V[a\x10\0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xFBV[a\x10oV[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x83V[a\x10\xF8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\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\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xD8V[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.[V[a\x12\x1AV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\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\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\rV[a\x13\x86V[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xABV[a\x14\xE5V[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@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\xFDW`@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\x08aW_\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\xA3a%\x11V[a\x08\xABa\x15\x7FV[\x90P\x90V[a\x08\xB8a\x15$V[`\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\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x10\0V[`\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\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/AV[a\t\x8D\x91\x90a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xA1V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/tV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xC0V[a\n\xA1a\x15$V[a\n\xAA\x81a\x10oV[PV[a\n\xB5a\x1B\xAAV[a\n\xBE\x82a\x1CNV[a\n\xC8\x82\x82a\x1C\x8FV[PPV[_a\n\xD5a\x1DPV[P_Q` a4\xA2_9_Q\x90_R\x90V[a\n\xEFa\x15$V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\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\x0B]a\x15$V[`@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\x0B\x9BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xB9W`@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\xF2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\x10W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x1D\x83`@\x01Qa\x1D\x99V[a\x0C*\x82` \x01Qa\x1D\x99V[a\x0C7\x82`@\x01Qa\x1D\x99V[a\x0CD\x82``\x01Qa\x1D\x99V[_a\x0CMa\x0E\xB0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0Cm\x91\x90`\x01`\x01`@\x1B\x03\x16a\x10\0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xB8Wa\x0C\x9A\x85` \x01Qa\t\xA2V[\x15a\x0C\xB8W`@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\rkW`\x02a\x0C\xE2\x83\x83a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x10a\r\tW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x14\x82`\x01a/AV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\rMWP`\x06Ta\rK\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\rkW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rv\x85\x85\x85a\x1D\xDAV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xD5WPa\r\xD5\x85` \x01Qa\t@V[\x15a\x0E?W\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\x0E#\x82`\x01a/AV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EQa\x0EJa\n7V[B\x87a\x1FQV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\xA1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x10\0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xE9`\x01\x83a/\xD7V[\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F8W`@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\xF9W\x84`\t\x82\x81T\x81\x10a\x0FhWa\x0Fha/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xF1W`\t\x81\x81T\x81\x10a\x0F\xA1Wa\x0F\xA1a/\xEAV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xC4Wa\x0F\xC4a/\xEAV[\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\x0FLV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x18WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x100WP`\x01a\n1V[a\x10:\x82\x84a/tV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10ZWa\x10S\x82\x84a/\xFEV[\x90Pa\n1V[a\x10d\x82\x84a/\xFEV[a\x10S\x90`\x01a/AV[a\x10wa\x15$V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x96WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xB4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xD2W`@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\x11<WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11WWP0;\x15[\x90P\x81\x15\x80\x15a\x11eWP\x80\x15[\x15a\x11\x83W`@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\xADW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xB6\x86a!:V[a\x11\xBEa!KV[a\x11\xC9\x89\x89\x89a!SV[\x83\x15a\x12\x0FW\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\x12\"a\x15$V[\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\x12kWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x89W`@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\x12\xD1W`@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\x13\x1A\x83\x85a\x10\0V[`\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_\x90a\x13\x93a\n7V[\x84\x11\x80a\x13\x9EWP\x80\x15[\x80a\x13\xE8WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xCCWa\x13\xCCa/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x06W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\x14`\x01\x85a/\xD7V[\x90P[\x81a\x14\xB0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\xB0W\x86`\t\x82\x81T\x81\x10a\x14IWa\x14Ia/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x9EW`\x01\x91P`\t\x81\x81T\x81\x10a\x14~Wa\x14~a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\xB0V[\x80a\x14\xA8\x81a0+V[\x91PPa\x14\x17V[\x81a\x14\xCEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xD9\x84\x89a/\xD7V[\x11\x97\x96PPPPPPPV[a\x14\xEDa\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x1BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\"\x7FV[3a\x15V\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\x12V[a\x15\x87a%\x11V[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\x1C0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C$_Q` a4\xA2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CVa\x15$V[`@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\x08GV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C\xE9WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xE6\x91\x81\x01\x90a/\xC0V[`\x01[a\x1D\x11W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_9_Q\x90_R\x81\x14a\x1DAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\x12V[a\x1DK\x83\x83a\"\xEFV[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\x0BSW`@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\xC8W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xE3a\x08\x9BV[\x90Pa\x1D\xEDa'vV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E]WPa\x1E]\x85` \x01Qa\t@V[\x15a\x1E\x8FW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xB3V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1E\xEE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\"V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90a4BV[a\x1FJW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xC6WP`\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\x91Wa\x1F\x91a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xBB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a YW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF3Wa\x1F\xF3a/\xEAV[_\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 3\x83a4aV[\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!Ba#DV[a\n\xAA\x81a#\x8DV[a\x0BSa#DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!wWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x84WP` \x82\x01Q\x15[\x80a!\x91WP`@\x82\x01Q\x15[\x80a!\x9EWP``\x82\x01Q\x15[\x80a!\xA8WP\x81Q\x15[\x80a!\xBAWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xCEWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xECW`@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\"\xF8\x82a#\x95V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#<Wa\x1DK\x82\x82a#\xF8V[a\n\xC8a$jV[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEDa#DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_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$\x14\x91\x90a4\x8BV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$LW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$QV[``\x91P[P\x91P\x91Pa$a\x85\x83\x83a$\x89V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x9EWa$\x99\x82a$\xE8V[a$\xE1V[\x81Q\x15\x80\x15a$\xB5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xDEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\x12V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xF8W\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%D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'd`@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\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xBBW__\xFD[a$\xE1\x82a'\x95V[_` \x82\x84\x03\x12\x15a'\xD4W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\r`@\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\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x02W__\xFD[a$\xE1\x82a)\xDCV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*BWa*Ba*\x0BV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*pWa*pa*\x0BV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x88W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xAAWa*\xAAa*\x0BV[`@R\x90P\x80a*\xB9\x83a)\xDCV[\x81Ra*\xC7` \x84\x01a)\xDCV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xEDW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x0FWa+\x0Fa*\x0BV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+:W__\xFD[a+Ba*\x1FV[\x90Pa+N\x83\x83a*\xDDV[\x81Ra+]\x83`@\x84\x01a*\xDDV[` \x82\x01Ra+o\x83`\x80\x84\x01a*\xDDV[`@\x82\x01Ra+\x81\x83`\xC0\x84\x01a*\xDDV[``\x82\x01Ra+\x94\x83a\x01\0\x84\x01a*\xDDV[`\x80\x82\x01Ra+\xA7\x83a\x01@\x84\x01a*\xDDV[`\xA0\x82\x01Ra+\xBA\x83a\x01\x80\x84\x01a*\xDDV[`\xC0\x82\x01Ra+\xCD\x83a\x01\xC0\x84\x01a*\xDDV[`\xE0\x82\x01Ra+\xE0\x83a\x02\0\x84\x01a*\xDDV[a\x01\0\x82\x01Ra+\xF4\x83a\x02@\x84\x01a*\xDDV[a\x01 \x82\x01Ra,\x08\x83a\x02\x80\x84\x01a*\xDDV[a\x01@\x82\x01Ra,\x1C\x83a\x02\xC0\x84\x01a*\xDDV[a\x01`\x82\x01Ra,0\x83a\x03\0\x84\x01a*\xDDV[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,\xC6W__\xFD[a,\xD0\x84\x84a*xV[\x91Pa,\xDF\x84``\x85\x01a+)V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x0BW__\xFD[a$\xE1\x82a,\xE8V[__`@\x83\x85\x03\x12\x15a-%W__\xFD[a-.\x83a'\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-HW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-XW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-qWa-qa*\x0BV[a-\x84`\x1F\x82\x01`\x1F\x19\x16` \x01a*HV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x98W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xC7W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xE9Wa-\xE9a*\x0BV[`@\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.*W__\xFD[a.4\x85\x85a*xV[\x92Pa.C\x85``\x86\x01a-\xB7V[\x91Pa.R\x85`\xE0\x86\x01a+)V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.lW__\xFD[a.u\x83a)\xDCV[\x91Pa,\xDF` \x84\x01a)\xDCV[____a\x01 \x85\x87\x03\x12\x15a.\x97W__\xFD[a.\xA1\x86\x86a*xV[\x93Pa.\xB0\x86``\x87\x01a-\xB7V[\x92Pa.\xBE`\xE0\x86\x01a,\xE8V[\x91Pa.\xCDa\x01\0\x86\x01a'\x95V[\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/\x1EW__\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\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x8CWa/\x8Ca/`V[\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\n1Wa\n1a/-V[_` \x82\x84\x03\x12\x15a/\xD0W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x16Wa0\x16a/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a09Wa09a/-V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0bW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0CV[PPPPV[a0}\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\x01Qa2T`@\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\x01Ra4,a\x05\0\x83\x01\x85a0@V[a4:a\x06`\x83\x01\x84a0hV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4RW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xE1W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x82Wa4\x82a/-V[`\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    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106ff578063e03033011461072e578063f06820541461074d578063f2fde38b1461076c578063f9e50d191461078b575f5ffd5b80639fdb54a714610616578063ad3cb1cc1461066b578063b33bc491146106a8578063c23b9e9e146106c7575f5ffd5b80638584d23f116100e35780638584d23f146105415780638da5cb5b1461057d57806390c14390146105b957806396c1ca61146105d85780639baa3cc9146105f7575f5ffd5b8063715018a6146104db578063757c37ad146104ef578063766718081461050e578063826e41fc14610522575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d319414610460578063433dba9f146104815780634f1ef286146104a057806352d1902d146104b357806369cc6a04146104c7575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b1461043a575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a6102253660046127ab565b61079f565b005b348015610237575f5ffd5b5061024b6102463660046127c4565b610852565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a61089b565b60405161028091906127db565b348015610322575f5ffd5b5061022a6103313660046129f2565b6108b0565b348015610341575f5ffd5b5061022a610350366004612cb4565b610927565b348015610360575f5ffd5b5061037461036f3660046129f2565b610940565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc3660046129f2565b6109a2565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b5061042c610a37565b604051908152602001610280565b348015610445575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b34801561046b575f5ffd5b505f546001546002546003546102ab9392919084565b34801561048c575f5ffd5b5061022a61049b366004612cfb565b610a99565b61022a6104ae366004612d14565b610aad565b3480156104be575f5ffd5b5061042c610acc565b3480156104d2575f5ffd5b5061022a610ae7565b3480156104e6575f5ffd5b5061022a610b55565b3480156104fa575f5ffd5b5061022a610509366004612e17565b610b76565b348015610519575f5ffd5b506103aa610eb0565b34801561052d575f5ffd5b506008546001600160a01b03161515610374565b34801561054c575f5ffd5b5061056061055b3660046127c4565b610ed5565b604080519283526001600160401b03909116602083015201610280565b348015610588575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105c4575f5ffd5b506103aa6105d3366004612e5b565b611000565b3480156105e3575f5ffd5b5061022a6105f2366004612cfb565b61106f565b348015610602575f5ffd5b5061022a610611366004612e83565b6110f8565b348015610621575f5ffd5b50600654600754610645916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610676575f5ffd5b5061069b604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612ed8565b3480156106b3575f5ffd5b5061022a6106c2366004612e5b565b61121a565b3480156106d2575f5ffd5b506008546106ea90600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b34801561070a575f5ffd5b50600454600554610645916001600160401b0380821692600160401b909204169083565b348015610739575f5ffd5b50610374610748366004612f0d565b611386565b348015610758575f5ffd5b50600a546103aa906001600160401b031681565b348015610777575f5ffd5b5061022a6107863660046127ab565b6114e5565b348015610796575f5ffd5b5060095461042c565b6107a7611524565b6001600160a01b0381166107ce5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107fd5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610861575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6108a3612511565b6108ab61157f565b905090565b6108b8611524565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108fe94919091048116928116911617611000565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b03821615806109605750600a546001600160401b0316155b1561096c57505f919050565b600a546001600160401b0316610983836005612f41565b61098d9190612f74565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109c25750600a546001600160401b0316155b156109ce57505f919050565b600a546109e4906001600160401b031683612f74565b6001600160401b03161580610a315750600a54610a0c906005906001600160401b0316612fa1565b600a546001600160401b0391821691610a26911684612f74565b6001600160401b0316115b92915050565b5f60646001600160a01b031663a3b1b31d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a75573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108ab9190612fc0565b610aa1611524565b610aaa8161106f565b50565b610ab5611baa565b610abe82611c4e565b610ac88282611c8f565b5050565b5f610ad5611d50565b505f5160206134a25f395f51905f5290565b610aef611524565b6008546001600160a01b031615610b3a57600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610b5d611524565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b9b57506008546001600160a01b03163314155b15610bb9576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610bf2575060065460208401516001600160401b03600160401b9092048216911611155b15610c105760405163051c46ef60e01b815260040160405180910390fd5b610c1d8360400151611d99565b610c2a8260200151611d99565b610c378260400151611d99565b610c448260600151611d99565b5f610c4d610eb0565b6020850151600a549192505f91610c6d91906001600160401b0316611000565b600a549091506001600160401b03600160801b909104811690821610610cb857610c9a85602001516109a2565b15610cb85760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d6b576002610ce28383612fa1565b6001600160401b031610610d095760405163080ae8d960e01b815260040160405180910390fd5b610d14826001612f41565b6001600160401b0316816001600160401b0316148015610d4d5750600654610d4b90600160401b90046001600160401b0316610940565b155b15610d6b5760405163080ae8d960e01b815260040160405180910390fd5b610d76858585611dda565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610dd55750610dd58560200151610940565b15610e3f578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610e23826001612f41565b6040516001600160401b03909116815260200160405180910390a15b610e51610e4a610a37565b4287611f51565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610ea191815260200190565b60405180910390a35050505050565b600654600a545f916108ab916001600160401b03600160401b90920482169116611000565b600980545f91829190610ee9600183612fd7565b81548110610ef957610ef9612fea565b5f918252602090912060029091020154600160801b90046001600160401b03168410610f3857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610ff9578460098281548110610f6857610f68612fea565b5f918252602090912060029091020154600160801b90046001600160401b03161115610ff15760098181548110610fa157610fa1612fea565b905f5260205f2090600202016001015460098281548110610fc457610fc4612fea565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610f4c565b5050915091565b5f816001600160401b03165f0361101857505f610a31565b826001600160401b03165f0361103057506001610a31565b61103a8284612f74565b6001600160401b03165f0361105a576110538284612ffe565b9050610a31565b6110648284612ffe565b611053906001612f41565b611077611524565b610e108163ffffffff16108061109657506301e133808163ffffffff16115b806110b4575060085463ffffffff600160a01b909104811690821611155b156110d2576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f8115801561113c5750825b90505f826001600160401b031660011480156111575750303b155b905081158015611165575080155b156111835760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff1916600117855583156111ad57845460ff60401b1916600160401b1785555b6111b68661213a565b6111be61214b565b6111c9898989612153565b831561120f57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b611222611524565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff168061126b575080546001600160401b03808416911610155b156112895760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b1782556005908516116112d1576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b03199092169087161717905561131a8385611000565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f90611393610a37565b84118061139e575080155b806113e85750600854600980549091600160c01b90046001600160401b03169081106113cc576113cc612fea565b5f9182526020909120600290910201546001600160401b031684105b156114065760405163b0b4387760e01b815260040160405180910390fd5b5f8080611414600185612fd7565b90505b816114b057600854600160c01b90046001600160401b031681106114b057866009828154811061144957611449612fea565b5f9182526020909120600290910201546001600160401b03161161149e57600191506009818154811061147e5761147e612fea565b5f9182526020909120600290910201546001600160401b031692506114b0565b806114a88161302b565b915050611417565b816114ce5760405163b0b4387760e01b815260040160405180910390fd5b856114d98489612fd7565b11979650505050505050565b6114ed611524565b6001600160a01b03811661151b57604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610aaa8161227f565b336115567f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610b535760405163118cdaa760e01b8152336004820152602401611512565b611587612511565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611c3057507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611c245f5160206134a25f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610b535760405163703e46dd60e11b815260040160405180910390fd5b611c56611524565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610847565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611ce9575060408051601f3d908101601f19168201909252611ce691810190612fc0565b60015b611d1157604051634c9c8ce360e01b81526001600160a01b0383166004820152602401611512565b5f5160206134a25f395f51905f528114611d4157604051632a87526960e21b815260048101829052602401611512565b611d4b83836122ef565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610b535760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610ac85760405163016c173360e21b815260040160405180910390fd5b5f611de361089b565b9050611ded612776565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611e5d5750611e5d8560200151610940565b15611e8f57602084015160e0820152604084015161010082015260608401516101208201528351610140820152611eb3565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611eee90859085908890600401613222565b602060405180830381865af4158015611f09573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f2d9190613442565b611f4a576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611fc6575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f9157611f91612fea565b5f918252602090912060029091020154611fbb90600160401b90046001600160401b031684612fa1565b6001600160401b0316115b1561205957600854600980549091600160c01b90046001600160401b0316908110611ff357611ff3612fea565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861203383613461565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b612142612344565b610aaa8161238d565b610b53612344565b82516001600160401b0316151580612177575060208301516001600160401b031615155b8061218457506020820151155b8061219157506040820151155b8061219e57506060820151155b806121a857508151155b806121ba5750610e108163ffffffff16105b806121ce57506301e133808163ffffffff16115b156121ec576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122f882612395565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a280511561233c57611d4b82826123f8565b610ac861246a565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610b5357604051631afcd79f60e31b815260040160405180910390fd5b6114ed612344565b806001600160a01b03163b5f036123ca57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401611512565b5f5160206134a25f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051612414919061348b565b5f60405180830381855af49150503d805f811461244c576040519150601f19603f3d011682016040523d82523d5f602084013e612451565b606091505b5091509150612461858383612489565b95945050505050565b3415610b535760405163b398979f60e01b815260040160405180910390fd5b60608261249e57612499826124e8565b6124e1565b81511580156124b557506001600160a01b0384163b155b156124de57604051639996b31560e01b81526001600160a01b0385166004820152602401611512565b50805b9392505050565b8051156124f85780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f815260200161254460405180604001604052805f81526020015f81525090565b815260200161256460405180604001604052805f81526020015f81525090565b815260200161258460405180604001604052805f81526020015f81525090565b81526020016125a460405180604001604052805f81526020015f81525090565b81526020016125c460405180604001604052805f81526020015f81525090565b81526020016125e460405180604001604052805f81526020015f81525090565b815260200161260460405180604001604052805f81526020015f81525090565b815260200161262460405180604001604052805f81526020015f81525090565b815260200161264460405180604001604052805f81526020015f81525090565b815260200161266460405180604001604052805f81526020015f81525090565b815260200161268460405180604001604052805f81526020015f81525090565b81526020016126a460405180604001604052805f81526020015f81525090565b81526020016126c460405180604001604052805f81526020015f81525090565b81526020016126e460405180604001604052805f81526020015f81525090565b815260200161270460405180604001604052805f81526020015f81525090565b815260200161272460405180604001604052805f81526020015f81525090565b815260200161274460405180604001604052805f81526020015f81525090565b815260200161276460405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b038116811461099d575f5ffd5b5f602082840312156127bb575f5ffd5b6124e182612795565b5f602082840312156127d4575f5ffd5b5035919050565b5f610500820190508251825260208301516020830152604083015161280d604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b038116811461099d575f5ffd5b5f60208284031215612a02575f5ffd5b6124e1826129dc565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b0381118282101715612a4257612a42612a0b565b60405290565b604051601f8201601f191681016001600160401b0381118282101715612a7057612a70612a0b565b604052919050565b5f60608284031215612a88575f5ffd5b604051606081016001600160401b0381118282101715612aaa57612aaa612a0b565b604052905080612ab9836129dc565b8152612ac7602084016129dc565b6020820152604092830135920191909152919050565b5f60408284031215612aed575f5ffd5b604080519081016001600160401b0381118282101715612b0f57612b0f612a0b565b604052823581526020928301359281019290925250919050565b5f6104808284031215612b3a575f5ffd5b612b42612a1f565b9050612b4e8383612add565b8152612b5d8360408401612add565b6020820152612b6f8360808401612add565b6040820152612b818360c08401612add565b6060820152612b94836101008401612add565b6080820152612ba7836101408401612add565b60a0820152612bba836101808401612add565b60c0820152612bcd836101c08401612add565b60e0820152612be0836102008401612add565b610100820152612bf4836102408401612add565b610120820152612c08836102808401612add565b610140820152612c1c836102c08401612add565b610160820152612c30836103008401612add565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612cc6575f5ffd5b612cd08484612a78565b9150612cdf8460608501612b29565b90509250929050565b803563ffffffff8116811461099d575f5ffd5b5f60208284031215612d0b575f5ffd5b6124e182612ce8565b5f5f60408385031215612d25575f5ffd5b612d2e83612795565b915060208301356001600160401b03811115612d48575f5ffd5b8301601f81018513612d58575f5ffd5b80356001600160401b03811115612d7157612d71612a0b565b612d84601f8201601f1916602001612a48565b818152866020838501011115612d98575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612dc7575f5ffd5b604051608081016001600160401b0381118282101715612de957612de9612a0b565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612e2a575f5ffd5b612e348585612a78565b9250612e438560608601612db7565b9150612e528560e08601612b29565b90509250925092565b5f5f60408385031215612e6c575f5ffd5b612e75836129dc565b9150612cdf602084016129dc565b5f5f5f5f6101208587031215612e97575f5ffd5b612ea18686612a78565b9350612eb08660608701612db7565b9250612ebe60e08601612ce8565b9150612ecd6101008601612795565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612f1e575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a3157610a31612f2d565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f8c57612f8c612f60565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a3157610a31612f2d565b5f60208284031215612fd0575f5ffd5b5051919050565b81810381811115610a3157610a31612f2d565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b0383168061301657613016612f60565b806001600160401b0384160491505092915050565b5f8161303957613039612f2d565b505f190190565b805f5b600b811015613062578151845260209384019390910190600101613043565b50505050565b61307d82825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae08201905084518252602085015160208301526040850151613254604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e083015261342c610500830185613040565b61343a610660830184613068565b949350505050565b5f60208284031215613452575f5ffd5b815180151581146124e1575f5ffd5b5f6001600160401b0382166001600160401b03810361348257613482612f2d565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
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\xFFW\x80c\xE003\x01\x14a\x07.W\x80c\xF0h T\x14a\x07MW\x80c\xF2\xFD\xE3\x8B\x14a\x07lW\x80c\xF9\xE5\r\x19\x14a\x07\x8BW__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x16W\x80c\xAD<\xB1\xCC\x14a\x06kW\x80c\xB3;\xC4\x91\x14a\x06\xA8W\x80c\xC2;\x9E\x9E\x14a\x06\xC7W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05AW\x80c\x8D\xA5\xCB[\x14a\x05}W\x80c\x90\xC1C\x90\x14a\x05\xB9W\x80c\x96\xC1\xCAa\x14a\x05\xD8W\x80c\x9B\xAA<\xC9\x14a\x05\xF7W__\xFD[\x80cqP\x18\xA6\x14a\x04\xDBW\x80cu|7\xAD\x14a\x04\xEFW\x80cvg\x18\x08\x14a\x05\x0EW\x80c\x82nA\xFC\x14a\x05\"W__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04`W\x80cC=\xBA\x9F\x14a\x04\x81W\x80cO\x1E\xF2\x86\x14a\x04\xA0W\x80cR\xD1\x90-\x14a\x04\xB3W\x80ci\xCCj\x04\x14a\x04\xC7W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x04:W__\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'\xABV[a\x07\x9FV[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'\xC4V[a\x08RV[`@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\x9BV[`@Qa\x02\x80\x91\x90a'\xDBV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)\xF2V[a\x08\xB0V[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,\xB4V[a\t'V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)\xF2V[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)\xF2V[a\t\xA2V[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[Pa\x04,a\n7V[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04EW__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04kW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x8CW__\xFD[Pa\x02*a\x04\x9B6`\x04a,\xFBV[a\n\x99V[a\x02*a\x04\xAE6`\x04a-\x14V[a\n\xADV[4\x80\x15a\x04\xBEW__\xFD[Pa\x04,a\n\xCCV[4\x80\x15a\x04\xD2W__\xFD[Pa\x02*a\n\xE7V[4\x80\x15a\x04\xE6W__\xFD[Pa\x02*a\x0BUV[4\x80\x15a\x04\xFAW__\xFD[Pa\x02*a\x05\t6`\x04a.\x17V[a\x0BvV[4\x80\x15a\x05\x19W__\xFD[Pa\x03\xAAa\x0E\xB0V[4\x80\x15a\x05-W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05LW__\xFD[Pa\x05`a\x05[6`\x04a'\xC4V[a\x0E\xD5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x88W__\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\xC4W__\xFD[Pa\x03\xAAa\x05\xD36`\x04a.[V[a\x10\0V[4\x80\x15a\x05\xE3W__\xFD[Pa\x02*a\x05\xF26`\x04a,\xFBV[a\x10oV[4\x80\x15a\x06\x02W__\xFD[Pa\x02*a\x06\x116`\x04a.\x83V[a\x10\xF8V[4\x80\x15a\x06!W__\xFD[P`\x06T`\x07Ta\x06E\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\x06vW__\xFD[Pa\x06\x9B`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.\xD8V[4\x80\x15a\x06\xB3W__\xFD[Pa\x02*a\x06\xC26`\x04a.[V[a\x12\x1AV[4\x80\x15a\x06\xD2W__\xFD[P`\x08Ta\x06\xEA\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\nW__\xFD[P`\x04T`\x05Ta\x06E\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x079W__\xFD[Pa\x03ta\x07H6`\x04a/\rV[a\x13\x86V[4\x80\x15a\x07XW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07wW__\xFD[Pa\x02*a\x07\x866`\x04a'\xABV[a\x14\xE5V[4\x80\x15a\x07\x96W__\xFD[P`\tTa\x04,V[a\x07\xA7a\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xCEW`@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\xFDW`@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\x08aW_\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\xA3a%\x11V[a\x08\xABa\x15\x7FV[\x90P\x90V[a\x08\xB8a\x15$V[`\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\xFE\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x10\0V[`\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\t`WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tlWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t\x83\x83`\x05a/AV[a\t\x8D\x91\x90a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xC2WP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xCEWP_\x91\x90PV[`\nTa\t\xE4\x90`\x01`\x01`@\x1B\x03\x16\x83a/tV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n1WP`\nTa\n\x0C\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/\xA1V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n&\x91\x16\x84a/tV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[_`d`\x01`\x01`\xA0\x1B\x03\x16c\xA3\xB1\xB3\x1D`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x15\x80\x15a\nuW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x08\xAB\x91\x90a/\xC0V[a\n\xA1a\x15$V[a\n\xAA\x81a\x10oV[PV[a\n\xB5a\x1B\xAAV[a\n\xBE\x82a\x1CNV[a\n\xC8\x82\x82a\x1C\x8FV[PPV[_a\n\xD5a\x1DPV[P_Q` a4\xA2_9_Q\x90_R\x90V[a\n\xEFa\x15$V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x0B:W`\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\x0B]a\x15$V[`@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\x0B\x9BWP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0B\xB9W`@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\xF2WP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0C\x10W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\x1D\x83`@\x01Qa\x1D\x99V[a\x0C*\x82` \x01Qa\x1D\x99V[a\x0C7\x82`@\x01Qa\x1D\x99V[a\x0CD\x82``\x01Qa\x1D\x99V[_a\x0CMa\x0E\xB0V[` \x85\x01Q`\nT\x91\x92P_\x91a\x0Cm\x91\x90`\x01`\x01`@\x1B\x03\x16a\x10\0V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0C\xB8Wa\x0C\x9A\x85` \x01Qa\t\xA2V[\x15a\x0C\xB8W`@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\rkW`\x02a\x0C\xE2\x83\x83a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x10a\r\tW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x14\x82`\x01a/AV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\rMWP`\x06Ta\rK\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t@V[\x15[\x15a\rkW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\rv\x85\x85\x85a\x1D\xDAV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\r\xD5WPa\r\xD5\x85` \x01Qa\t@V[\x15a\x0E?W\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\x0E#\x82`\x01a/AV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\x0EQa\x0EJa\n7V[B\x87a\x1FQV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E\xA1\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xAB\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x10\0V[`\t\x80T_\x91\x82\x91\x90a\x0E\xE9`\x01\x83a/\xD7V[\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0F8W`@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\xF9W\x84`\t\x82\x81T\x81\x10a\x0FhWa\x0Fha/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\xF1W`\t\x81\x81T\x81\x10a\x0F\xA1Wa\x0F\xA1a/\xEAV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0F\xC4Wa\x0F\xC4a/\xEAV[\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\x0FLV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x10\x18WP_a\n1V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x100WP`\x01a\n1V[a\x10:\x82\x84a/tV[`\x01`\x01`@\x1B\x03\x16_\x03a\x10ZWa\x10S\x82\x84a/\xFEV[\x90Pa\n1V[a\x10d\x82\x84a/\xFEV[a\x10S\x90`\x01a/AV[a\x10wa\x15$V[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10\x96WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10\xB4WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10\xD2W`@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\x11<WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x11WWP0;\x15[\x90P\x81\x15\x80\x15a\x11eWP\x80\x15[\x15a\x11\x83W`@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\xADW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11\xB6\x86a!:V[a\x11\xBEa!KV[a\x11\xC9\x89\x89\x89a!SV[\x83\x15a\x12\x0FW\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\x12\"a\x15$V[\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\x12kWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x89W`@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\x12\xD1W`@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\x13\x1A\x83\x85a\x10\0V[`\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_\x90a\x13\x93a\n7V[\x84\x11\x80a\x13\x9EWP\x80\x15[\x80a\x13\xE8WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13\xCCWa\x13\xCCa/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x14\x06W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x14\x14`\x01\x85a/\xD7V[\x90P[\x81a\x14\xB0W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14\xB0W\x86`\t\x82\x81T\x81\x10a\x14IWa\x14Ia/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14\x9EW`\x01\x91P`\t\x81\x81T\x81\x10a\x14~Wa\x14~a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14\xB0V[\x80a\x14\xA8\x81a0+V[\x91PPa\x14\x17V[\x81a\x14\xCEW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14\xD9\x84\x89a/\xD7V[\x11\x97\x96PPPPPPPV[a\x14\xEDa\x15$V[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x15\x1BW`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\n\xAA\x81a\"\x7FV[3a\x15V\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\x0BSW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x15\x12V[a\x15\x87a%\x11V[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\x1C0WP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1C$_Q` a4\xA2_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x0BSW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1CVa\x15$V[`@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\x08GV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1C\xE9WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1C\xE6\x91\x81\x01\x90a/\xC0V[`\x01[a\x1D\x11W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_9_Q\x90_R\x81\x14a\x1DAW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x15\x12V[a\x1DK\x83\x83a\"\xEFV[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\x0BSW`@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\xC8W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1D\xE3a\x08\x9BV[\x90Pa\x1D\xEDa'vV[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1E]WPa\x1E]\x85` \x01Qa\t@V[\x15a\x1E\x8FW` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E\xB3V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1E\xEE\x90\x85\x90\x85\x90\x88\x90`\x04\x01a2\"V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1F\tW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1F-\x91\x90a4BV[a\x1FJW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1F\xC6WP`\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\x91Wa\x1F\x91a/\xEAV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1F\xBB\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/\xA1V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a YW`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\xF3Wa\x1F\xF3a/\xEAV[_\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 3\x83a4aV[\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!Ba#DV[a\n\xAA\x81a#\x8DV[a\x0BSa#DV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!wWP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x84WP` \x82\x01Q\x15[\x80a!\x91WP`@\x82\x01Q\x15[\x80a!\x9EWP``\x82\x01Q\x15[\x80a!\xA8WP\x81Q\x15[\x80a!\xBAWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!\xCEWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!\xECW`@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\"\xF8\x82a#\x95V[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a#<Wa\x1DK\x82\x82a#\xF8V[a\n\xC8a$jV[\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\x0BSW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14\xEDa#DV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#\xCAW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x15\x12V[_Q` a4\xA2_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$\x14\x91\x90a4\x8BV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a$LW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a$QV[``\x91P[P\x91P\x91Pa$a\x85\x83\x83a$\x89V[\x95\x94PPPPPV[4\x15a\x0BSW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$\x9EWa$\x99\x82a$\xE8V[a$\xE1V[\x81Q\x15\x80\x15a$\xB5WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$\xDEW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x15\x12V[P\x80[\x93\x92PPPV[\x80Q\x15a$\xF8W\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%D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&d`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x84`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xA4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xC4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xE4`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'\x04`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'$`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'D`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a'd`@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\x9DW__\xFD[_` \x82\x84\x03\x12\x15a'\xBBW__\xFD[a$\xE1\x82a'\x95V[_` \x82\x84\x03\x12\x15a'\xD4W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa(\r`@\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\x9DW__\xFD[_` \x82\x84\x03\x12\x15a*\x02W__\xFD[a$\xE1\x82a)\xDCV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*BWa*Ba*\x0BV[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*pWa*pa*\x0BV[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x88W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\xAAWa*\xAAa*\x0BV[`@R\x90P\x80a*\xB9\x83a)\xDCV[\x81Ra*\xC7` \x84\x01a)\xDCV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*\xEDW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a+\x0FWa+\x0Fa*\x0BV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a+:W__\xFD[a+Ba*\x1FV[\x90Pa+N\x83\x83a*\xDDV[\x81Ra+]\x83`@\x84\x01a*\xDDV[` \x82\x01Ra+o\x83`\x80\x84\x01a*\xDDV[`@\x82\x01Ra+\x81\x83`\xC0\x84\x01a*\xDDV[``\x82\x01Ra+\x94\x83a\x01\0\x84\x01a*\xDDV[`\x80\x82\x01Ra+\xA7\x83a\x01@\x84\x01a*\xDDV[`\xA0\x82\x01Ra+\xBA\x83a\x01\x80\x84\x01a*\xDDV[`\xC0\x82\x01Ra+\xCD\x83a\x01\xC0\x84\x01a*\xDDV[`\xE0\x82\x01Ra+\xE0\x83a\x02\0\x84\x01a*\xDDV[a\x01\0\x82\x01Ra+\xF4\x83a\x02@\x84\x01a*\xDDV[a\x01 \x82\x01Ra,\x08\x83a\x02\x80\x84\x01a*\xDDV[a\x01@\x82\x01Ra,\x1C\x83a\x02\xC0\x84\x01a*\xDDV[a\x01`\x82\x01Ra,0\x83a\x03\0\x84\x01a*\xDDV[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,\xC6W__\xFD[a,\xD0\x84\x84a*xV[\x91Pa,\xDF\x84``\x85\x01a+)V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x9DW__\xFD[_` \x82\x84\x03\x12\x15a-\x0BW__\xFD[a$\xE1\x82a,\xE8V[__`@\x83\x85\x03\x12\x15a-%W__\xFD[a-.\x83a'\x95V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a-HW__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a-XW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a-qWa-qa*\x0BV[a-\x84`\x1F\x82\x01`\x1F\x19\x16` \x01a*HV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\x98W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-\xC7W__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-\xE9Wa-\xE9a*\x0BV[`@\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.*W__\xFD[a.4\x85\x85a*xV[\x92Pa.C\x85``\x86\x01a-\xB7V[\x91Pa.R\x85`\xE0\x86\x01a+)V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a.lW__\xFD[a.u\x83a)\xDCV[\x91Pa,\xDF` \x84\x01a)\xDCV[____a\x01 \x85\x87\x03\x12\x15a.\x97W__\xFD[a.\xA1\x86\x86a*xV[\x93Pa.\xB0\x86``\x87\x01a-\xB7V[\x92Pa.\xBE`\xE0\x86\x01a,\xE8V[\x91Pa.\xCDa\x01\0\x86\x01a'\x95V[\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/\x1EW__\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\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x8CWa/\x8Ca/`V[\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\n1Wa\n1a/-V[_` \x82\x84\x03\x12\x15a/\xD0W__\xFD[PQ\x91\x90PV[\x81\x81\x03\x81\x81\x11\x15a\n1Wa\n1a/-V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a0\x16Wa0\x16a/`V[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a09Wa09a/-V[P_\x19\x01\x90V[\x80_[`\x0B\x81\x10\x15a0bW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a0CV[PPPPV[a0}\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\x01Qa2T`@\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\x01Ra4,a\x05\0\x83\x01\x85a0@V[a4:a\x06`\x83\x01\x84a0hV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a4RW__\xFD[\x81Q\x80\x15\x15\x81\x14a$\xE1W__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x82Wa4\x82a/-V[`\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 [`LightClientArbitrumV2`](self) function calls.
13273    #[derive(serde::Serialize, serde::Deserialize)]
13274    #[derive()]
13275    pub enum LightClientArbitrumV2Calls {
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 LightClientArbitrumV2Calls {
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 LightClientArbitrumV2Calls {
13398        const NAME: &'static str = "LightClientArbitrumV2Calls";
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<LightClientArbitrumV2Calls>] = &[
13527                {
13528                    fn setPermissionedProver(
13529                        data: &[u8],
13530                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13531                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13532                                data,
13533                            )
13534                            .map(LightClientArbitrumV2Calls::setPermissionedProver)
13535                    }
13536                    setPermissionedProver
13537                },
13538                {
13539                    fn stateHistoryCommitments(
13540                        data: &[u8],
13541                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13542                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13543                                data,
13544                            )
13545                            .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
13546                    }
13547                    stateHistoryCommitments
13548                },
13549                {
13550                    fn votingStakeTableState(
13551                        data: &[u8],
13552                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13553                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13554                                data,
13555                            )
13556                            .map(LightClientArbitrumV2Calls::votingStakeTableState)
13557                    }
13558                    votingStakeTableState
13559                },
13560                {
13561                    fn getVersion(
13562                        data: &[u8],
13563                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13564                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13565                                data,
13566                            )
13567                            .map(LightClientArbitrumV2Calls::getVersion)
13568                    }
13569                    getVersion
13570                },
13571                {
13572                    fn _getVk(
13573                        data: &[u8],
13574                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13575                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13576                            .map(LightClientArbitrumV2Calls::_getVk)
13577                    }
13578                    _getVk
13579                },
13580                {
13581                    fn updateEpochStartBlock(
13582                        data: &[u8],
13583                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13584                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13585                                data,
13586                            )
13587                            .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
13588                    }
13589                    updateEpochStartBlock
13590                },
13591                {
13592                    fn newFinalizedState_0(
13593                        data: &[u8],
13594                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13595                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13596                                data,
13597                            )
13598                            .map(LightClientArbitrumV2Calls::newFinalizedState_0)
13599                    }
13600                    newFinalizedState_0
13601                },
13602                {
13603                    fn isEpochRoot(
13604                        data: &[u8],
13605                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13606                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13607                                data,
13608                            )
13609                            .map(LightClientArbitrumV2Calls::isEpochRoot)
13610                    }
13611                    isEpochRoot
13612                },
13613                {
13614                    fn stateHistoryFirstIndex(
13615                        data: &[u8],
13616                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13617                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13618                                data,
13619                            )
13620                            .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
13621                    }
13622                    stateHistoryFirstIndex
13623                },
13624                {
13625                    fn isGtEpochRoot(
13626                        data: &[u8],
13627                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13628                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13629                                data,
13630                            )
13631                            .map(LightClientArbitrumV2Calls::isGtEpochRoot)
13632                    }
13633                    isGtEpochRoot
13634                },
13635                {
13636                    fn permissionedProver(
13637                        data: &[u8],
13638                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13639                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13640                                data,
13641                            )
13642                            .map(LightClientArbitrumV2Calls::permissionedProver)
13643                    }
13644                    permissionedProver
13645                },
13646                {
13647                    fn currentBlockNumber(
13648                        data: &[u8],
13649                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13650                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13651                                data,
13652                            )
13653                            .map(LightClientArbitrumV2Calls::currentBlockNumber)
13654                    }
13655                    currentBlockNumber
13656                },
13657                {
13658                    fn epochStartBlock(
13659                        data: &[u8],
13660                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13661                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13662                                data,
13663                            )
13664                            .map(LightClientArbitrumV2Calls::epochStartBlock)
13665                    }
13666                    epochStartBlock
13667                },
13668                {
13669                    fn genesisStakeTableState(
13670                        data: &[u8],
13671                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13672                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13673                                data,
13674                            )
13675                            .map(LightClientArbitrumV2Calls::genesisStakeTableState)
13676                    }
13677                    genesisStakeTableState
13678                },
13679                {
13680                    fn setStateHistoryRetentionPeriod(
13681                        data: &[u8],
13682                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13683                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13684                                data,
13685                            )
13686                            .map(
13687                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
13688                            )
13689                    }
13690                    setStateHistoryRetentionPeriod
13691                },
13692                {
13693                    fn upgradeToAndCall(
13694                        data: &[u8],
13695                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13696                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13697                                data,
13698                            )
13699                            .map(LightClientArbitrumV2Calls::upgradeToAndCall)
13700                    }
13701                    upgradeToAndCall
13702                },
13703                {
13704                    fn proxiableUUID(
13705                        data: &[u8],
13706                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13707                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13708                                data,
13709                            )
13710                            .map(LightClientArbitrumV2Calls::proxiableUUID)
13711                    }
13712                    proxiableUUID
13713                },
13714                {
13715                    fn disablePermissionedProverMode(
13716                        data: &[u8],
13717                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13718                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13719                                data,
13720                            )
13721                            .map(
13722                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
13723                            )
13724                    }
13725                    disablePermissionedProverMode
13726                },
13727                {
13728                    fn renounceOwnership(
13729                        data: &[u8],
13730                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13731                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13732                                data,
13733                            )
13734                            .map(LightClientArbitrumV2Calls::renounceOwnership)
13735                    }
13736                    renounceOwnership
13737                },
13738                {
13739                    fn newFinalizedState_1(
13740                        data: &[u8],
13741                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13742                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13743                                data,
13744                            )
13745                            .map(LightClientArbitrumV2Calls::newFinalizedState_1)
13746                    }
13747                    newFinalizedState_1
13748                },
13749                {
13750                    fn currentEpoch(
13751                        data: &[u8],
13752                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13753                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13754                                data,
13755                            )
13756                            .map(LightClientArbitrumV2Calls::currentEpoch)
13757                    }
13758                    currentEpoch
13759                },
13760                {
13761                    fn isPermissionedProverEnabled(
13762                        data: &[u8],
13763                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13764                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13765                                data,
13766                            )
13767                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
13768                    }
13769                    isPermissionedProverEnabled
13770                },
13771                {
13772                    fn getHotShotCommitment(
13773                        data: &[u8],
13774                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13775                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13776                                data,
13777                            )
13778                            .map(LightClientArbitrumV2Calls::getHotShotCommitment)
13779                    }
13780                    getHotShotCommitment
13781                },
13782                {
13783                    fn owner(
13784                        data: &[u8],
13785                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13786                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13787                            .map(LightClientArbitrumV2Calls::owner)
13788                    }
13789                    owner
13790                },
13791                {
13792                    fn epochFromBlockNumber(
13793                        data: &[u8],
13794                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13795                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13796                                data,
13797                            )
13798                            .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
13799                    }
13800                    epochFromBlockNumber
13801                },
13802                {
13803                    fn setstateHistoryRetentionPeriod(
13804                        data: &[u8],
13805                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13806                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13807                                data,
13808                            )
13809                            .map(
13810                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
13811                            )
13812                    }
13813                    setstateHistoryRetentionPeriod
13814                },
13815                {
13816                    fn initialize(
13817                        data: &[u8],
13818                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13819                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13820                                data,
13821                            )
13822                            .map(LightClientArbitrumV2Calls::initialize)
13823                    }
13824                    initialize
13825                },
13826                {
13827                    fn finalizedState(
13828                        data: &[u8],
13829                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13830                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13831                                data,
13832                            )
13833                            .map(LightClientArbitrumV2Calls::finalizedState)
13834                    }
13835                    finalizedState
13836                },
13837                {
13838                    fn UPGRADE_INTERFACE_VERSION(
13839                        data: &[u8],
13840                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13841                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
13842                                data,
13843                            )
13844                            .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
13845                    }
13846                    UPGRADE_INTERFACE_VERSION
13847                },
13848                {
13849                    fn initializeV2(
13850                        data: &[u8],
13851                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13852                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
13853                                data,
13854                            )
13855                            .map(LightClientArbitrumV2Calls::initializeV2)
13856                    }
13857                    initializeV2
13858                },
13859                {
13860                    fn stateHistoryRetentionPeriod(
13861                        data: &[u8],
13862                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13863                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13864                                data,
13865                            )
13866                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
13867                    }
13868                    stateHistoryRetentionPeriod
13869                },
13870                {
13871                    fn genesisState(
13872                        data: &[u8],
13873                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13874                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13875                                data,
13876                            )
13877                            .map(LightClientArbitrumV2Calls::genesisState)
13878                    }
13879                    genesisState
13880                },
13881                {
13882                    fn lagOverEscapeHatchThreshold(
13883                        data: &[u8],
13884                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13885                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
13886                                data,
13887                            )
13888                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
13889                    }
13890                    lagOverEscapeHatchThreshold
13891                },
13892                {
13893                    fn blocksPerEpoch(
13894                        data: &[u8],
13895                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13896                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13897                                data,
13898                            )
13899                            .map(LightClientArbitrumV2Calls::blocksPerEpoch)
13900                    }
13901                    blocksPerEpoch
13902                },
13903                {
13904                    fn transferOwnership(
13905                        data: &[u8],
13906                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13907                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13908                                data,
13909                            )
13910                            .map(LightClientArbitrumV2Calls::transferOwnership)
13911                    }
13912                    transferOwnership
13913                },
13914                {
13915                    fn getStateHistoryCount(
13916                        data: &[u8],
13917                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13918                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
13919                                data,
13920                            )
13921                            .map(LightClientArbitrumV2Calls::getStateHistoryCount)
13922                    }
13923                    getStateHistoryCount
13924                },
13925            ];
13926            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13927                return Err(
13928                    alloy_sol_types::Error::unknown_selector(
13929                        <Self as alloy_sol_types::SolInterface>::NAME,
13930                        selector,
13931                    ),
13932                );
13933            };
13934            DECODE_SHIMS[idx](data)
13935        }
13936        #[inline]
13937        #[allow(non_snake_case)]
13938        fn abi_decode_raw_validate(
13939            selector: [u8; 4],
13940            data: &[u8],
13941        ) -> alloy_sol_types::Result<Self> {
13942            static DECODE_VALIDATE_SHIMS: &[fn(
13943                &[u8],
13944            ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls>] = &[
13945                {
13946                    fn setPermissionedProver(
13947                        data: &[u8],
13948                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13949                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13950                                data,
13951                            )
13952                            .map(LightClientArbitrumV2Calls::setPermissionedProver)
13953                    }
13954                    setPermissionedProver
13955                },
13956                {
13957                    fn stateHistoryCommitments(
13958                        data: &[u8],
13959                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13960                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13961                                data,
13962                            )
13963                            .map(LightClientArbitrumV2Calls::stateHistoryCommitments)
13964                    }
13965                    stateHistoryCommitments
13966                },
13967                {
13968                    fn votingStakeTableState(
13969                        data: &[u8],
13970                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13971                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13972                                data,
13973                            )
13974                            .map(LightClientArbitrumV2Calls::votingStakeTableState)
13975                    }
13976                    votingStakeTableState
13977                },
13978                {
13979                    fn getVersion(
13980                        data: &[u8],
13981                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13982                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13983                                data,
13984                            )
13985                            .map(LightClientArbitrumV2Calls::getVersion)
13986                    }
13987                    getVersion
13988                },
13989                {
13990                    fn _getVk(
13991                        data: &[u8],
13992                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
13993                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
13994                                data,
13995                            )
13996                            .map(LightClientArbitrumV2Calls::_getVk)
13997                    }
13998                    _getVk
13999                },
14000                {
14001                    fn updateEpochStartBlock(
14002                        data: &[u8],
14003                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14004                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14005                                data,
14006                            )
14007                            .map(LightClientArbitrumV2Calls::updateEpochStartBlock)
14008                    }
14009                    updateEpochStartBlock
14010                },
14011                {
14012                    fn newFinalizedState_0(
14013                        data: &[u8],
14014                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14015                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14016                                data,
14017                            )
14018                            .map(LightClientArbitrumV2Calls::newFinalizedState_0)
14019                    }
14020                    newFinalizedState_0
14021                },
14022                {
14023                    fn isEpochRoot(
14024                        data: &[u8],
14025                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14026                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14027                                data,
14028                            )
14029                            .map(LightClientArbitrumV2Calls::isEpochRoot)
14030                    }
14031                    isEpochRoot
14032                },
14033                {
14034                    fn stateHistoryFirstIndex(
14035                        data: &[u8],
14036                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14037                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14038                                data,
14039                            )
14040                            .map(LightClientArbitrumV2Calls::stateHistoryFirstIndex)
14041                    }
14042                    stateHistoryFirstIndex
14043                },
14044                {
14045                    fn isGtEpochRoot(
14046                        data: &[u8],
14047                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14048                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14049                                data,
14050                            )
14051                            .map(LightClientArbitrumV2Calls::isGtEpochRoot)
14052                    }
14053                    isGtEpochRoot
14054                },
14055                {
14056                    fn permissionedProver(
14057                        data: &[u8],
14058                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14059                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14060                                data,
14061                            )
14062                            .map(LightClientArbitrumV2Calls::permissionedProver)
14063                    }
14064                    permissionedProver
14065                },
14066                {
14067                    fn currentBlockNumber(
14068                        data: &[u8],
14069                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14070                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14071                                data,
14072                            )
14073                            .map(LightClientArbitrumV2Calls::currentBlockNumber)
14074                    }
14075                    currentBlockNumber
14076                },
14077                {
14078                    fn epochStartBlock(
14079                        data: &[u8],
14080                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14081                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14082                                data,
14083                            )
14084                            .map(LightClientArbitrumV2Calls::epochStartBlock)
14085                    }
14086                    epochStartBlock
14087                },
14088                {
14089                    fn genesisStakeTableState(
14090                        data: &[u8],
14091                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14092                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14093                                data,
14094                            )
14095                            .map(LightClientArbitrumV2Calls::genesisStakeTableState)
14096                    }
14097                    genesisStakeTableState
14098                },
14099                {
14100                    fn setStateHistoryRetentionPeriod(
14101                        data: &[u8],
14102                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14103                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14104                                data,
14105                            )
14106                            .map(
14107                                LightClientArbitrumV2Calls::setStateHistoryRetentionPeriod,
14108                            )
14109                    }
14110                    setStateHistoryRetentionPeriod
14111                },
14112                {
14113                    fn upgradeToAndCall(
14114                        data: &[u8],
14115                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14116                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14117                                data,
14118                            )
14119                            .map(LightClientArbitrumV2Calls::upgradeToAndCall)
14120                    }
14121                    upgradeToAndCall
14122                },
14123                {
14124                    fn proxiableUUID(
14125                        data: &[u8],
14126                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14127                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14128                                data,
14129                            )
14130                            .map(LightClientArbitrumV2Calls::proxiableUUID)
14131                    }
14132                    proxiableUUID
14133                },
14134                {
14135                    fn disablePermissionedProverMode(
14136                        data: &[u8],
14137                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14138                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14139                                data,
14140                            )
14141                            .map(
14142                                LightClientArbitrumV2Calls::disablePermissionedProverMode,
14143                            )
14144                    }
14145                    disablePermissionedProverMode
14146                },
14147                {
14148                    fn renounceOwnership(
14149                        data: &[u8],
14150                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14151                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14152                                data,
14153                            )
14154                            .map(LightClientArbitrumV2Calls::renounceOwnership)
14155                    }
14156                    renounceOwnership
14157                },
14158                {
14159                    fn newFinalizedState_1(
14160                        data: &[u8],
14161                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14162                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14163                                data,
14164                            )
14165                            .map(LightClientArbitrumV2Calls::newFinalizedState_1)
14166                    }
14167                    newFinalizedState_1
14168                },
14169                {
14170                    fn currentEpoch(
14171                        data: &[u8],
14172                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14173                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14174                                data,
14175                            )
14176                            .map(LightClientArbitrumV2Calls::currentEpoch)
14177                    }
14178                    currentEpoch
14179                },
14180                {
14181                    fn isPermissionedProverEnabled(
14182                        data: &[u8],
14183                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14184                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14185                                data,
14186                            )
14187                            .map(LightClientArbitrumV2Calls::isPermissionedProverEnabled)
14188                    }
14189                    isPermissionedProverEnabled
14190                },
14191                {
14192                    fn getHotShotCommitment(
14193                        data: &[u8],
14194                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14195                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14196                                data,
14197                            )
14198                            .map(LightClientArbitrumV2Calls::getHotShotCommitment)
14199                    }
14200                    getHotShotCommitment
14201                },
14202                {
14203                    fn owner(
14204                        data: &[u8],
14205                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14206                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14207                                data,
14208                            )
14209                            .map(LightClientArbitrumV2Calls::owner)
14210                    }
14211                    owner
14212                },
14213                {
14214                    fn epochFromBlockNumber(
14215                        data: &[u8],
14216                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14217                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14218                                data,
14219                            )
14220                            .map(LightClientArbitrumV2Calls::epochFromBlockNumber)
14221                    }
14222                    epochFromBlockNumber
14223                },
14224                {
14225                    fn setstateHistoryRetentionPeriod(
14226                        data: &[u8],
14227                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14228                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14229                                data,
14230                            )
14231                            .map(
14232                                LightClientArbitrumV2Calls::setstateHistoryRetentionPeriod,
14233                            )
14234                    }
14235                    setstateHistoryRetentionPeriod
14236                },
14237                {
14238                    fn initialize(
14239                        data: &[u8],
14240                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14241                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14242                                data,
14243                            )
14244                            .map(LightClientArbitrumV2Calls::initialize)
14245                    }
14246                    initialize
14247                },
14248                {
14249                    fn finalizedState(
14250                        data: &[u8],
14251                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14252                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14253                                data,
14254                            )
14255                            .map(LightClientArbitrumV2Calls::finalizedState)
14256                    }
14257                    finalizedState
14258                },
14259                {
14260                    fn UPGRADE_INTERFACE_VERSION(
14261                        data: &[u8],
14262                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14263                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14264                                data,
14265                            )
14266                            .map(LightClientArbitrumV2Calls::UPGRADE_INTERFACE_VERSION)
14267                    }
14268                    UPGRADE_INTERFACE_VERSION
14269                },
14270                {
14271                    fn initializeV2(
14272                        data: &[u8],
14273                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14274                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14275                                data,
14276                            )
14277                            .map(LightClientArbitrumV2Calls::initializeV2)
14278                    }
14279                    initializeV2
14280                },
14281                {
14282                    fn stateHistoryRetentionPeriod(
14283                        data: &[u8],
14284                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14285                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14286                                data,
14287                            )
14288                            .map(LightClientArbitrumV2Calls::stateHistoryRetentionPeriod)
14289                    }
14290                    stateHistoryRetentionPeriod
14291                },
14292                {
14293                    fn genesisState(
14294                        data: &[u8],
14295                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14296                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14297                                data,
14298                            )
14299                            .map(LightClientArbitrumV2Calls::genesisState)
14300                    }
14301                    genesisState
14302                },
14303                {
14304                    fn lagOverEscapeHatchThreshold(
14305                        data: &[u8],
14306                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14307                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14308                                data,
14309                            )
14310                            .map(LightClientArbitrumV2Calls::lagOverEscapeHatchThreshold)
14311                    }
14312                    lagOverEscapeHatchThreshold
14313                },
14314                {
14315                    fn blocksPerEpoch(
14316                        data: &[u8],
14317                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14318                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14319                                data,
14320                            )
14321                            .map(LightClientArbitrumV2Calls::blocksPerEpoch)
14322                    }
14323                    blocksPerEpoch
14324                },
14325                {
14326                    fn transferOwnership(
14327                        data: &[u8],
14328                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14329                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14330                                data,
14331                            )
14332                            .map(LightClientArbitrumV2Calls::transferOwnership)
14333                    }
14334                    transferOwnership
14335                },
14336                {
14337                    fn getStateHistoryCount(
14338                        data: &[u8],
14339                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Calls> {
14340                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14341                                data,
14342                            )
14343                            .map(LightClientArbitrumV2Calls::getStateHistoryCount)
14344                    }
14345                    getStateHistoryCount
14346                },
14347            ];
14348            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14349                return Err(
14350                    alloy_sol_types::Error::unknown_selector(
14351                        <Self as alloy_sol_types::SolInterface>::NAME,
14352                        selector,
14353                    ),
14354                );
14355            };
14356            DECODE_VALIDATE_SHIMS[idx](data)
14357        }
14358        #[inline]
14359        fn abi_encoded_size(&self) -> usize {
14360            match self {
14361                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14362                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14363                        inner,
14364                    )
14365                }
14366                Self::_getVk(inner) => {
14367                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14368                }
14369                Self::blocksPerEpoch(inner) => {
14370                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14371                        inner,
14372                    )
14373                }
14374                Self::currentBlockNumber(inner) => {
14375                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14376                        inner,
14377                    )
14378                }
14379                Self::currentEpoch(inner) => {
14380                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14381                        inner,
14382                    )
14383                }
14384                Self::disablePermissionedProverMode(inner) => {
14385                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14386                        inner,
14387                    )
14388                }
14389                Self::epochFromBlockNumber(inner) => {
14390                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14391                        inner,
14392                    )
14393                }
14394                Self::epochStartBlock(inner) => {
14395                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14396                        inner,
14397                    )
14398                }
14399                Self::finalizedState(inner) => {
14400                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14401                        inner,
14402                    )
14403                }
14404                Self::genesisStakeTableState(inner) => {
14405                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14406                        inner,
14407                    )
14408                }
14409                Self::genesisState(inner) => {
14410                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14411                        inner,
14412                    )
14413                }
14414                Self::getHotShotCommitment(inner) => {
14415                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14416                        inner,
14417                    )
14418                }
14419                Self::getStateHistoryCount(inner) => {
14420                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14421                        inner,
14422                    )
14423                }
14424                Self::getVersion(inner) => {
14425                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14426                }
14427                Self::initialize(inner) => {
14428                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14429                }
14430                Self::initializeV2(inner) => {
14431                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14432                        inner,
14433                    )
14434                }
14435                Self::isEpochRoot(inner) => {
14436                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14437                        inner,
14438                    )
14439                }
14440                Self::isGtEpochRoot(inner) => {
14441                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14442                        inner,
14443                    )
14444                }
14445                Self::isPermissionedProverEnabled(inner) => {
14446                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14447                        inner,
14448                    )
14449                }
14450                Self::lagOverEscapeHatchThreshold(inner) => {
14451                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14452                        inner,
14453                    )
14454                }
14455                Self::newFinalizedState_0(inner) => {
14456                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14457                        inner,
14458                    )
14459                }
14460                Self::newFinalizedState_1(inner) => {
14461                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14462                        inner,
14463                    )
14464                }
14465                Self::owner(inner) => {
14466                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14467                }
14468                Self::permissionedProver(inner) => {
14469                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14470                        inner,
14471                    )
14472                }
14473                Self::proxiableUUID(inner) => {
14474                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14475                        inner,
14476                    )
14477                }
14478                Self::renounceOwnership(inner) => {
14479                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14480                        inner,
14481                    )
14482                }
14483                Self::setPermissionedProver(inner) => {
14484                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14485                        inner,
14486                    )
14487                }
14488                Self::setStateHistoryRetentionPeriod(inner) => {
14489                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14490                        inner,
14491                    )
14492                }
14493                Self::setstateHistoryRetentionPeriod(inner) => {
14494                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14495                        inner,
14496                    )
14497                }
14498                Self::stateHistoryCommitments(inner) => {
14499                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14500                        inner,
14501                    )
14502                }
14503                Self::stateHistoryFirstIndex(inner) => {
14504                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14505                        inner,
14506                    )
14507                }
14508                Self::stateHistoryRetentionPeriod(inner) => {
14509                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14510                        inner,
14511                    )
14512                }
14513                Self::transferOwnership(inner) => {
14514                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14515                        inner,
14516                    )
14517                }
14518                Self::updateEpochStartBlock(inner) => {
14519                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14520                        inner,
14521                    )
14522                }
14523                Self::upgradeToAndCall(inner) => {
14524                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14525                        inner,
14526                    )
14527                }
14528                Self::votingStakeTableState(inner) => {
14529                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14530                        inner,
14531                    )
14532                }
14533            }
14534        }
14535        #[inline]
14536        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14537            match self {
14538                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14539                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14540                        inner,
14541                        out,
14542                    )
14543                }
14544                Self::_getVk(inner) => {
14545                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14546                }
14547                Self::blocksPerEpoch(inner) => {
14548                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14549                        inner,
14550                        out,
14551                    )
14552                }
14553                Self::currentBlockNumber(inner) => {
14554                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14555                        inner,
14556                        out,
14557                    )
14558                }
14559                Self::currentEpoch(inner) => {
14560                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14561                        inner,
14562                        out,
14563                    )
14564                }
14565                Self::disablePermissionedProverMode(inner) => {
14566                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14567                        inner,
14568                        out,
14569                    )
14570                }
14571                Self::epochFromBlockNumber(inner) => {
14572                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14573                        inner,
14574                        out,
14575                    )
14576                }
14577                Self::epochStartBlock(inner) => {
14578                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14579                        inner,
14580                        out,
14581                    )
14582                }
14583                Self::finalizedState(inner) => {
14584                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14585                        inner,
14586                        out,
14587                    )
14588                }
14589                Self::genesisStakeTableState(inner) => {
14590                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14591                        inner,
14592                        out,
14593                    )
14594                }
14595                Self::genesisState(inner) => {
14596                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14597                        inner,
14598                        out,
14599                    )
14600                }
14601                Self::getHotShotCommitment(inner) => {
14602                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14603                        inner,
14604                        out,
14605                    )
14606                }
14607                Self::getStateHistoryCount(inner) => {
14608                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14609                        inner,
14610                        out,
14611                    )
14612                }
14613                Self::getVersion(inner) => {
14614                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14615                        inner,
14616                        out,
14617                    )
14618                }
14619                Self::initialize(inner) => {
14620                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14621                        inner,
14622                        out,
14623                    )
14624                }
14625                Self::initializeV2(inner) => {
14626                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14627                        inner,
14628                        out,
14629                    )
14630                }
14631                Self::isEpochRoot(inner) => {
14632                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14633                        inner,
14634                        out,
14635                    )
14636                }
14637                Self::isGtEpochRoot(inner) => {
14638                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14639                        inner,
14640                        out,
14641                    )
14642                }
14643                Self::isPermissionedProverEnabled(inner) => {
14644                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14645                        inner,
14646                        out,
14647                    )
14648                }
14649                Self::lagOverEscapeHatchThreshold(inner) => {
14650                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14651                        inner,
14652                        out,
14653                    )
14654                }
14655                Self::newFinalizedState_0(inner) => {
14656                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14657                        inner,
14658                        out,
14659                    )
14660                }
14661                Self::newFinalizedState_1(inner) => {
14662                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14663                        inner,
14664                        out,
14665                    )
14666                }
14667                Self::owner(inner) => {
14668                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14669                }
14670                Self::permissionedProver(inner) => {
14671                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14672                        inner,
14673                        out,
14674                    )
14675                }
14676                Self::proxiableUUID(inner) => {
14677                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14678                        inner,
14679                        out,
14680                    )
14681                }
14682                Self::renounceOwnership(inner) => {
14683                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14684                        inner,
14685                        out,
14686                    )
14687                }
14688                Self::setPermissionedProver(inner) => {
14689                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14690                        inner,
14691                        out,
14692                    )
14693                }
14694                Self::setStateHistoryRetentionPeriod(inner) => {
14695                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14696                        inner,
14697                        out,
14698                    )
14699                }
14700                Self::setstateHistoryRetentionPeriod(inner) => {
14701                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14702                        inner,
14703                        out,
14704                    )
14705                }
14706                Self::stateHistoryCommitments(inner) => {
14707                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14708                        inner,
14709                        out,
14710                    )
14711                }
14712                Self::stateHistoryFirstIndex(inner) => {
14713                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14714                        inner,
14715                        out,
14716                    )
14717                }
14718                Self::stateHistoryRetentionPeriod(inner) => {
14719                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14720                        inner,
14721                        out,
14722                    )
14723                }
14724                Self::transferOwnership(inner) => {
14725                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14726                        inner,
14727                        out,
14728                    )
14729                }
14730                Self::updateEpochStartBlock(inner) => {
14731                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14732                        inner,
14733                        out,
14734                    )
14735                }
14736                Self::upgradeToAndCall(inner) => {
14737                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14738                        inner,
14739                        out,
14740                    )
14741                }
14742                Self::votingStakeTableState(inner) => {
14743                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14744                        inner,
14745                        out,
14746                    )
14747                }
14748            }
14749        }
14750    }
14751    ///Container for all the [`LightClientArbitrumV2`](self) custom errors.
14752    #[derive(serde::Serialize, serde::Deserialize)]
14753    #[derive(Debug, PartialEq, Eq, Hash)]
14754    pub enum LightClientArbitrumV2Errors {
14755        #[allow(missing_docs)]
14756        AddressEmptyCode(AddressEmptyCode),
14757        #[allow(missing_docs)]
14758        DeprecatedApi(DeprecatedApi),
14759        #[allow(missing_docs)]
14760        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14761        #[allow(missing_docs)]
14762        ERC1967NonPayable(ERC1967NonPayable),
14763        #[allow(missing_docs)]
14764        FailedInnerCall(FailedInnerCall),
14765        #[allow(missing_docs)]
14766        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14767        #[allow(missing_docs)]
14768        InvalidAddress(InvalidAddress),
14769        #[allow(missing_docs)]
14770        InvalidArgs(InvalidArgs),
14771        #[allow(missing_docs)]
14772        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14773        #[allow(missing_docs)]
14774        InvalidInitialization(InvalidInitialization),
14775        #[allow(missing_docs)]
14776        InvalidMaxStateHistory(InvalidMaxStateHistory),
14777        #[allow(missing_docs)]
14778        InvalidProof(InvalidProof),
14779        #[allow(missing_docs)]
14780        InvalidScalar(InvalidScalar),
14781        #[allow(missing_docs)]
14782        MissingEpochRootUpdate(MissingEpochRootUpdate),
14783        #[allow(missing_docs)]
14784        NoChangeRequired(NoChangeRequired),
14785        #[allow(missing_docs)]
14786        NotInitializing(NotInitializing),
14787        #[allow(missing_docs)]
14788        OutdatedState(OutdatedState),
14789        #[allow(missing_docs)]
14790        OwnableInvalidOwner(OwnableInvalidOwner),
14791        #[allow(missing_docs)]
14792        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14793        #[allow(missing_docs)]
14794        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
14795        #[allow(missing_docs)]
14796        ProverNotPermissioned(ProverNotPermissioned),
14797        #[allow(missing_docs)]
14798        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14799        #[allow(missing_docs)]
14800        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14801        #[allow(missing_docs)]
14802        WrongStakeTableUsed(WrongStakeTableUsed),
14803    }
14804    #[automatically_derived]
14805    impl LightClientArbitrumV2Errors {
14806        /// All the selectors of this enum.
14807        ///
14808        /// Note that the selectors might not be in the same order as the variants.
14809        /// No guarantees are made about the order of the selectors.
14810        ///
14811        /// Prefer using `SolInterface` methods instead.
14812        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14813            [5u8, 28u8, 70u8, 239u8],
14814            [5u8, 176u8, 92u8, 204u8],
14815            [8u8, 10u8, 232u8, 217u8],
14816            [9u8, 189u8, 227u8, 57u8],
14817            [17u8, 140u8, 218u8, 167u8],
14818            [20u8, 37u8, 234u8, 66u8],
14819            [30u8, 79u8, 189u8, 247u8],
14820            [47u8, 171u8, 146u8, 202u8],
14821            [76u8, 156u8, 140u8, 227u8],
14822            [78u8, 64u8, 92u8, 141u8],
14823            [81u8, 97u8, 128u8, 137u8],
14824            [97u8, 90u8, 146u8, 100u8],
14825            [153u8, 150u8, 179u8, 21u8],
14826            [161u8, 186u8, 7u8, 238u8],
14827            [163u8, 166u8, 71u8, 128u8],
14828            [168u8, 99u8, 174u8, 201u8],
14829            [170u8, 29u8, 73u8, 164u8],
14830            [176u8, 180u8, 56u8, 119u8],
14831            [179u8, 152u8, 151u8, 159u8],
14832            [215u8, 230u8, 188u8, 248u8],
14833            [224u8, 124u8, 141u8, 186u8],
14834            [230u8, 196u8, 36u8, 123u8],
14835            [244u8, 160u8, 238u8, 224u8],
14836            [249u8, 46u8, 232u8, 169u8],
14837        ];
14838    }
14839    #[automatically_derived]
14840    impl alloy_sol_types::SolInterface for LightClientArbitrumV2Errors {
14841        const NAME: &'static str = "LightClientArbitrumV2Errors";
14842        const MIN_DATA_LENGTH: usize = 0usize;
14843        const COUNT: usize = 24usize;
14844        #[inline]
14845        fn selector(&self) -> [u8; 4] {
14846            match self {
14847                Self::AddressEmptyCode(_) => {
14848                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
14849                }
14850                Self::DeprecatedApi(_) => {
14851                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
14852                }
14853                Self::ERC1967InvalidImplementation(_) => {
14854                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
14855                }
14856                Self::ERC1967NonPayable(_) => {
14857                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
14858                }
14859                Self::FailedInnerCall(_) => {
14860                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
14861                }
14862                Self::InsufficientSnapshotHistory(_) => {
14863                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
14864                }
14865                Self::InvalidAddress(_) => {
14866                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
14867                }
14868                Self::InvalidArgs(_) => {
14869                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
14870                }
14871                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
14872                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
14873                }
14874                Self::InvalidInitialization(_) => {
14875                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
14876                }
14877                Self::InvalidMaxStateHistory(_) => {
14878                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
14879                }
14880                Self::InvalidProof(_) => {
14881                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
14882                }
14883                Self::InvalidScalar(_) => {
14884                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
14885                }
14886                Self::MissingEpochRootUpdate(_) => {
14887                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
14888                }
14889                Self::NoChangeRequired(_) => {
14890                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
14891                }
14892                Self::NotInitializing(_) => {
14893                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
14894                }
14895                Self::OutdatedState(_) => {
14896                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
14897                }
14898                Self::OwnableInvalidOwner(_) => {
14899                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
14900                }
14901                Self::OwnableUnauthorizedAccount(_) => {
14902                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
14903                }
14904                Self::OwnershipCannotBeRenounced(_) => {
14905                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
14906                }
14907                Self::ProverNotPermissioned(_) => {
14908                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
14909                }
14910                Self::UUPSUnauthorizedCallContext(_) => {
14911                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
14912                }
14913                Self::UUPSUnsupportedProxiableUUID(_) => {
14914                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
14915                }
14916                Self::WrongStakeTableUsed(_) => {
14917                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
14918                }
14919            }
14920        }
14921        #[inline]
14922        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
14923            Self::SELECTORS.get(i).copied()
14924        }
14925        #[inline]
14926        fn valid_selector(selector: [u8; 4]) -> bool {
14927            Self::SELECTORS.binary_search(&selector).is_ok()
14928        }
14929        #[inline]
14930        #[allow(non_snake_case)]
14931        fn abi_decode_raw(
14932            selector: [u8; 4],
14933            data: &[u8],
14934        ) -> alloy_sol_types::Result<Self> {
14935            static DECODE_SHIMS: &[fn(
14936                &[u8],
14937            ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
14938                {
14939                    fn OutdatedState(
14940                        data: &[u8],
14941                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14942                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
14943                                data,
14944                            )
14945                            .map(LightClientArbitrumV2Errors::OutdatedState)
14946                    }
14947                    OutdatedState
14948                },
14949                {
14950                    fn InvalidScalar(
14951                        data: &[u8],
14952                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14953                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
14954                                data,
14955                            )
14956                            .map(LightClientArbitrumV2Errors::InvalidScalar)
14957                    }
14958                    InvalidScalar
14959                },
14960                {
14961                    fn MissingEpochRootUpdate(
14962                        data: &[u8],
14963                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14964                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
14965                                data,
14966                            )
14967                            .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
14968                    }
14969                    MissingEpochRootUpdate
14970                },
14971                {
14972                    fn InvalidProof(
14973                        data: &[u8],
14974                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14975                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
14976                            .map(LightClientArbitrumV2Errors::InvalidProof)
14977                    }
14978                    InvalidProof
14979                },
14980                {
14981                    fn OwnableUnauthorizedAccount(
14982                        data: &[u8],
14983                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14984                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
14985                                data,
14986                            )
14987                            .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
14988                    }
14989                    OwnableUnauthorizedAccount
14990                },
14991                {
14992                    fn FailedInnerCall(
14993                        data: &[u8],
14994                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
14995                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
14996                                data,
14997                            )
14998                            .map(LightClientArbitrumV2Errors::FailedInnerCall)
14999                    }
15000                    FailedInnerCall
15001                },
15002                {
15003                    fn OwnableInvalidOwner(
15004                        data: &[u8],
15005                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15006                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15007                                data,
15008                            )
15009                            .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
15010                    }
15011                    OwnableInvalidOwner
15012                },
15013                {
15014                    fn OwnershipCannotBeRenounced(
15015                        data: &[u8],
15016                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15017                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
15018                                data,
15019                            )
15020                            .map(LightClientArbitrumV2Errors::OwnershipCannotBeRenounced)
15021                    }
15022                    OwnershipCannotBeRenounced
15023                },
15024                {
15025                    fn ERC1967InvalidImplementation(
15026                        data: &[u8],
15027                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15028                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15029                                data,
15030                            )
15031                            .map(
15032                                LightClientArbitrumV2Errors::ERC1967InvalidImplementation,
15033                            )
15034                    }
15035                    ERC1967InvalidImplementation
15036                },
15037                {
15038                    fn DeprecatedApi(
15039                        data: &[u8],
15040                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15041                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15042                                data,
15043                            )
15044                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
15045                    }
15046                    DeprecatedApi
15047                },
15048                {
15049                    fn WrongStakeTableUsed(
15050                        data: &[u8],
15051                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15052                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15053                                data,
15054                            )
15055                            .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
15056                    }
15057                    WrongStakeTableUsed
15058                },
15059                {
15060                    fn InvalidHotShotBlockForCommitmentCheck(
15061                        data: &[u8],
15062                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15063                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15064                                data,
15065                            )
15066                            .map(
15067                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
15068                            )
15069                    }
15070                    InvalidHotShotBlockForCommitmentCheck
15071                },
15072                {
15073                    fn AddressEmptyCode(
15074                        data: &[u8],
15075                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15076                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15077                                data,
15078                            )
15079                            .map(LightClientArbitrumV2Errors::AddressEmptyCode)
15080                    }
15081                    AddressEmptyCode
15082                },
15083                {
15084                    fn InvalidArgs(
15085                        data: &[u8],
15086                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15087                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
15088                            .map(LightClientArbitrumV2Errors::InvalidArgs)
15089                    }
15090                    InvalidArgs
15091                },
15092                {
15093                    fn ProverNotPermissioned(
15094                        data: &[u8],
15095                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15096                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15097                                data,
15098                            )
15099                            .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
15100                    }
15101                    ProverNotPermissioned
15102                },
15103                {
15104                    fn NoChangeRequired(
15105                        data: &[u8],
15106                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15107                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15108                                data,
15109                            )
15110                            .map(LightClientArbitrumV2Errors::NoChangeRequired)
15111                    }
15112                    NoChangeRequired
15113                },
15114                {
15115                    fn UUPSUnsupportedProxiableUUID(
15116                        data: &[u8],
15117                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15118                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15119                                data,
15120                            )
15121                            .map(
15122                                LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID,
15123                            )
15124                    }
15125                    UUPSUnsupportedProxiableUUID
15126                },
15127                {
15128                    fn InsufficientSnapshotHistory(
15129                        data: &[u8],
15130                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15131                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15132                                data,
15133                            )
15134                            .map(
15135                                LightClientArbitrumV2Errors::InsufficientSnapshotHistory,
15136                            )
15137                    }
15138                    InsufficientSnapshotHistory
15139                },
15140                {
15141                    fn ERC1967NonPayable(
15142                        data: &[u8],
15143                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15144                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15145                                data,
15146                            )
15147                            .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
15148                    }
15149                    ERC1967NonPayable
15150                },
15151                {
15152                    fn NotInitializing(
15153                        data: &[u8],
15154                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15155                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15156                                data,
15157                            )
15158                            .map(LightClientArbitrumV2Errors::NotInitializing)
15159                    }
15160                    NotInitializing
15161                },
15162                {
15163                    fn UUPSUnauthorizedCallContext(
15164                        data: &[u8],
15165                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15166                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15167                                data,
15168                            )
15169                            .map(
15170                                LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext,
15171                            )
15172                    }
15173                    UUPSUnauthorizedCallContext
15174                },
15175                {
15176                    fn InvalidAddress(
15177                        data: &[u8],
15178                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15179                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15180                                data,
15181                            )
15182                            .map(LightClientArbitrumV2Errors::InvalidAddress)
15183                    }
15184                    InvalidAddress
15185                },
15186                {
15187                    fn InvalidMaxStateHistory(
15188                        data: &[u8],
15189                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15190                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15191                                data,
15192                            )
15193                            .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
15194                    }
15195                    InvalidMaxStateHistory
15196                },
15197                {
15198                    fn InvalidInitialization(
15199                        data: &[u8],
15200                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15201                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15202                                data,
15203                            )
15204                            .map(LightClientArbitrumV2Errors::InvalidInitialization)
15205                    }
15206                    InvalidInitialization
15207                },
15208            ];
15209            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15210                return Err(
15211                    alloy_sol_types::Error::unknown_selector(
15212                        <Self as alloy_sol_types::SolInterface>::NAME,
15213                        selector,
15214                    ),
15215                );
15216            };
15217            DECODE_SHIMS[idx](data)
15218        }
15219        #[inline]
15220        #[allow(non_snake_case)]
15221        fn abi_decode_raw_validate(
15222            selector: [u8; 4],
15223            data: &[u8],
15224        ) -> alloy_sol_types::Result<Self> {
15225            static DECODE_VALIDATE_SHIMS: &[fn(
15226                &[u8],
15227            ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors>] = &[
15228                {
15229                    fn OutdatedState(
15230                        data: &[u8],
15231                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15232                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
15233                                data,
15234                            )
15235                            .map(LightClientArbitrumV2Errors::OutdatedState)
15236                    }
15237                    OutdatedState
15238                },
15239                {
15240                    fn InvalidScalar(
15241                        data: &[u8],
15242                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15243                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
15244                                data,
15245                            )
15246                            .map(LightClientArbitrumV2Errors::InvalidScalar)
15247                    }
15248                    InvalidScalar
15249                },
15250                {
15251                    fn MissingEpochRootUpdate(
15252                        data: &[u8],
15253                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15254                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
15255                                data,
15256                            )
15257                            .map(LightClientArbitrumV2Errors::MissingEpochRootUpdate)
15258                    }
15259                    MissingEpochRootUpdate
15260                },
15261                {
15262                    fn InvalidProof(
15263                        data: &[u8],
15264                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15265                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
15266                                data,
15267                            )
15268                            .map(LightClientArbitrumV2Errors::InvalidProof)
15269                    }
15270                    InvalidProof
15271                },
15272                {
15273                    fn OwnableUnauthorizedAccount(
15274                        data: &[u8],
15275                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15276                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
15277                                data,
15278                            )
15279                            .map(LightClientArbitrumV2Errors::OwnableUnauthorizedAccount)
15280                    }
15281                    OwnableUnauthorizedAccount
15282                },
15283                {
15284                    fn FailedInnerCall(
15285                        data: &[u8],
15286                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15287                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
15288                                data,
15289                            )
15290                            .map(LightClientArbitrumV2Errors::FailedInnerCall)
15291                    }
15292                    FailedInnerCall
15293                },
15294                {
15295                    fn OwnableInvalidOwner(
15296                        data: &[u8],
15297                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15298                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
15299                                data,
15300                            )
15301                            .map(LightClientArbitrumV2Errors::OwnableInvalidOwner)
15302                    }
15303                    OwnableInvalidOwner
15304                },
15305                {
15306                    fn OwnershipCannotBeRenounced(
15307                        data: &[u8],
15308                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15309                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
15310                                data,
15311                            )
15312                            .map(LightClientArbitrumV2Errors::OwnershipCannotBeRenounced)
15313                    }
15314                    OwnershipCannotBeRenounced
15315                },
15316                {
15317                    fn ERC1967InvalidImplementation(
15318                        data: &[u8],
15319                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15320                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
15321                                data,
15322                            )
15323                            .map(
15324                                LightClientArbitrumV2Errors::ERC1967InvalidImplementation,
15325                            )
15326                    }
15327                    ERC1967InvalidImplementation
15328                },
15329                {
15330                    fn DeprecatedApi(
15331                        data: &[u8],
15332                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15333                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
15334                                data,
15335                            )
15336                            .map(LightClientArbitrumV2Errors::DeprecatedApi)
15337                    }
15338                    DeprecatedApi
15339                },
15340                {
15341                    fn WrongStakeTableUsed(
15342                        data: &[u8],
15343                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15344                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
15345                                data,
15346                            )
15347                            .map(LightClientArbitrumV2Errors::WrongStakeTableUsed)
15348                    }
15349                    WrongStakeTableUsed
15350                },
15351                {
15352                    fn InvalidHotShotBlockForCommitmentCheck(
15353                        data: &[u8],
15354                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15355                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
15356                                data,
15357                            )
15358                            .map(
15359                                LightClientArbitrumV2Errors::InvalidHotShotBlockForCommitmentCheck,
15360                            )
15361                    }
15362                    InvalidHotShotBlockForCommitmentCheck
15363                },
15364                {
15365                    fn AddressEmptyCode(
15366                        data: &[u8],
15367                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15368                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
15369                                data,
15370                            )
15371                            .map(LightClientArbitrumV2Errors::AddressEmptyCode)
15372                    }
15373                    AddressEmptyCode
15374                },
15375                {
15376                    fn InvalidArgs(
15377                        data: &[u8],
15378                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15379                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
15380                                data,
15381                            )
15382                            .map(LightClientArbitrumV2Errors::InvalidArgs)
15383                    }
15384                    InvalidArgs
15385                },
15386                {
15387                    fn ProverNotPermissioned(
15388                        data: &[u8],
15389                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15390                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
15391                                data,
15392                            )
15393                            .map(LightClientArbitrumV2Errors::ProverNotPermissioned)
15394                    }
15395                    ProverNotPermissioned
15396                },
15397                {
15398                    fn NoChangeRequired(
15399                        data: &[u8],
15400                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15401                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
15402                                data,
15403                            )
15404                            .map(LightClientArbitrumV2Errors::NoChangeRequired)
15405                    }
15406                    NoChangeRequired
15407                },
15408                {
15409                    fn UUPSUnsupportedProxiableUUID(
15410                        data: &[u8],
15411                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15412                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
15413                                data,
15414                            )
15415                            .map(
15416                                LightClientArbitrumV2Errors::UUPSUnsupportedProxiableUUID,
15417                            )
15418                    }
15419                    UUPSUnsupportedProxiableUUID
15420                },
15421                {
15422                    fn InsufficientSnapshotHistory(
15423                        data: &[u8],
15424                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15425                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15426                                data,
15427                            )
15428                            .map(
15429                                LightClientArbitrumV2Errors::InsufficientSnapshotHistory,
15430                            )
15431                    }
15432                    InsufficientSnapshotHistory
15433                },
15434                {
15435                    fn ERC1967NonPayable(
15436                        data: &[u8],
15437                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15438                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
15439                                data,
15440                            )
15441                            .map(LightClientArbitrumV2Errors::ERC1967NonPayable)
15442                    }
15443                    ERC1967NonPayable
15444                },
15445                {
15446                    fn NotInitializing(
15447                        data: &[u8],
15448                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15449                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
15450                                data,
15451                            )
15452                            .map(LightClientArbitrumV2Errors::NotInitializing)
15453                    }
15454                    NotInitializing
15455                },
15456                {
15457                    fn UUPSUnauthorizedCallContext(
15458                        data: &[u8],
15459                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15460                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
15461                                data,
15462                            )
15463                            .map(
15464                                LightClientArbitrumV2Errors::UUPSUnauthorizedCallContext,
15465                            )
15466                    }
15467                    UUPSUnauthorizedCallContext
15468                },
15469                {
15470                    fn InvalidAddress(
15471                        data: &[u8],
15472                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15473                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
15474                                data,
15475                            )
15476                            .map(LightClientArbitrumV2Errors::InvalidAddress)
15477                    }
15478                    InvalidAddress
15479                },
15480                {
15481                    fn InvalidMaxStateHistory(
15482                        data: &[u8],
15483                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15484                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15485                                data,
15486                            )
15487                            .map(LightClientArbitrumV2Errors::InvalidMaxStateHistory)
15488                    }
15489                    InvalidMaxStateHistory
15490                },
15491                {
15492                    fn InvalidInitialization(
15493                        data: &[u8],
15494                    ) -> alloy_sol_types::Result<LightClientArbitrumV2Errors> {
15495                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
15496                                data,
15497                            )
15498                            .map(LightClientArbitrumV2Errors::InvalidInitialization)
15499                    }
15500                    InvalidInitialization
15501                },
15502            ];
15503            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15504                return Err(
15505                    alloy_sol_types::Error::unknown_selector(
15506                        <Self as alloy_sol_types::SolInterface>::NAME,
15507                        selector,
15508                    ),
15509                );
15510            };
15511            DECODE_VALIDATE_SHIMS[idx](data)
15512        }
15513        #[inline]
15514        fn abi_encoded_size(&self) -> usize {
15515            match self {
15516                Self::AddressEmptyCode(inner) => {
15517                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15518                        inner,
15519                    )
15520                }
15521                Self::DeprecatedApi(inner) => {
15522                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15523                }
15524                Self::ERC1967InvalidImplementation(inner) => {
15525                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15526                        inner,
15527                    )
15528                }
15529                Self::ERC1967NonPayable(inner) => {
15530                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15531                        inner,
15532                    )
15533                }
15534                Self::FailedInnerCall(inner) => {
15535                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15536                        inner,
15537                    )
15538                }
15539                Self::InsufficientSnapshotHistory(inner) => {
15540                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15541                        inner,
15542                    )
15543                }
15544                Self::InvalidAddress(inner) => {
15545                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15546                        inner,
15547                    )
15548                }
15549                Self::InvalidArgs(inner) => {
15550                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15551                }
15552                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15553                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15554                        inner,
15555                    )
15556                }
15557                Self::InvalidInitialization(inner) => {
15558                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15559                        inner,
15560                    )
15561                }
15562                Self::InvalidMaxStateHistory(inner) => {
15563                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15564                        inner,
15565                    )
15566                }
15567                Self::InvalidProof(inner) => {
15568                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15569                }
15570                Self::InvalidScalar(inner) => {
15571                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15572                }
15573                Self::MissingEpochRootUpdate(inner) => {
15574                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15575                        inner,
15576                    )
15577                }
15578                Self::NoChangeRequired(inner) => {
15579                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15580                        inner,
15581                    )
15582                }
15583                Self::NotInitializing(inner) => {
15584                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15585                        inner,
15586                    )
15587                }
15588                Self::OutdatedState(inner) => {
15589                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15590                }
15591                Self::OwnableInvalidOwner(inner) => {
15592                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15593                        inner,
15594                    )
15595                }
15596                Self::OwnableUnauthorizedAccount(inner) => {
15597                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15598                        inner,
15599                    )
15600                }
15601                Self::OwnershipCannotBeRenounced(inner) => {
15602                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
15603                        inner,
15604                    )
15605                }
15606                Self::ProverNotPermissioned(inner) => {
15607                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15608                        inner,
15609                    )
15610                }
15611                Self::UUPSUnauthorizedCallContext(inner) => {
15612                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15613                        inner,
15614                    )
15615                }
15616                Self::UUPSUnsupportedProxiableUUID(inner) => {
15617                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15618                        inner,
15619                    )
15620                }
15621                Self::WrongStakeTableUsed(inner) => {
15622                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15623                        inner,
15624                    )
15625                }
15626            }
15627        }
15628        #[inline]
15629        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15630            match self {
15631                Self::AddressEmptyCode(inner) => {
15632                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15633                        inner,
15634                        out,
15635                    )
15636                }
15637                Self::DeprecatedApi(inner) => {
15638                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15639                        inner,
15640                        out,
15641                    )
15642                }
15643                Self::ERC1967InvalidImplementation(inner) => {
15644                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15645                        inner,
15646                        out,
15647                    )
15648                }
15649                Self::ERC1967NonPayable(inner) => {
15650                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15651                        inner,
15652                        out,
15653                    )
15654                }
15655                Self::FailedInnerCall(inner) => {
15656                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15657                        inner,
15658                        out,
15659                    )
15660                }
15661                Self::InsufficientSnapshotHistory(inner) => {
15662                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15663                        inner,
15664                        out,
15665                    )
15666                }
15667                Self::InvalidAddress(inner) => {
15668                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15669                        inner,
15670                        out,
15671                    )
15672                }
15673                Self::InvalidArgs(inner) => {
15674                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15675                        inner,
15676                        out,
15677                    )
15678                }
15679                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15680                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15681                        inner,
15682                        out,
15683                    )
15684                }
15685                Self::InvalidInitialization(inner) => {
15686                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15687                        inner,
15688                        out,
15689                    )
15690                }
15691                Self::InvalidMaxStateHistory(inner) => {
15692                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15693                        inner,
15694                        out,
15695                    )
15696                }
15697                Self::InvalidProof(inner) => {
15698                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15699                        inner,
15700                        out,
15701                    )
15702                }
15703                Self::InvalidScalar(inner) => {
15704                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15705                        inner,
15706                        out,
15707                    )
15708                }
15709                Self::MissingEpochRootUpdate(inner) => {
15710                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15711                        inner,
15712                        out,
15713                    )
15714                }
15715                Self::NoChangeRequired(inner) => {
15716                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15717                        inner,
15718                        out,
15719                    )
15720                }
15721                Self::NotInitializing(inner) => {
15722                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15723                        inner,
15724                        out,
15725                    )
15726                }
15727                Self::OutdatedState(inner) => {
15728                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15729                        inner,
15730                        out,
15731                    )
15732                }
15733                Self::OwnableInvalidOwner(inner) => {
15734                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15735                        inner,
15736                        out,
15737                    )
15738                }
15739                Self::OwnableUnauthorizedAccount(inner) => {
15740                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15741                        inner,
15742                        out,
15743                    )
15744                }
15745                Self::OwnershipCannotBeRenounced(inner) => {
15746                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
15747                        inner,
15748                        out,
15749                    )
15750                }
15751                Self::ProverNotPermissioned(inner) => {
15752                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15753                        inner,
15754                        out,
15755                    )
15756                }
15757                Self::UUPSUnauthorizedCallContext(inner) => {
15758                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15759                        inner,
15760                        out,
15761                    )
15762                }
15763                Self::UUPSUnsupportedProxiableUUID(inner) => {
15764                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15765                        inner,
15766                        out,
15767                    )
15768                }
15769                Self::WrongStakeTableUsed(inner) => {
15770                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
15771                        inner,
15772                        out,
15773                    )
15774                }
15775            }
15776        }
15777    }
15778    ///Container for all the [`LightClientArbitrumV2`](self) events.
15779    #[derive(serde::Serialize, serde::Deserialize)]
15780    #[derive(Debug, PartialEq, Eq, Hash)]
15781    pub enum LightClientArbitrumV2Events {
15782        #[allow(missing_docs)]
15783        Initialized(Initialized),
15784        #[allow(missing_docs)]
15785        NewEpoch(NewEpoch),
15786        #[allow(missing_docs)]
15787        NewState(NewState),
15788        #[allow(missing_docs)]
15789        OwnershipTransferred(OwnershipTransferred),
15790        #[allow(missing_docs)]
15791        PermissionedProverNotRequired(PermissionedProverNotRequired),
15792        #[allow(missing_docs)]
15793        PermissionedProverRequired(PermissionedProverRequired),
15794        #[allow(missing_docs)]
15795        Upgrade(Upgrade),
15796        #[allow(missing_docs)]
15797        Upgraded(Upgraded),
15798    }
15799    #[automatically_derived]
15800    impl LightClientArbitrumV2Events {
15801        /// All the selectors of this enum.
15802        ///
15803        /// Note that the selectors might not be in the same order as the variants.
15804        /// No guarantees are made about the order of the selectors.
15805        ///
15806        /// Prefer using `SolInterface` methods instead.
15807        pub const SELECTORS: &'static [[u8; 32usize]] = &[
15808            [
15809                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
15810                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
15811                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
15812            ],
15813            [
15814                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
15815                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
15816                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
15817            ],
15818            [
15819                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
15820                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
15821                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
15822            ],
15823            [
15824                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
15825                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
15826                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
15827            ],
15828            [
15829                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
15830                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
15831                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
15832            ],
15833            [
15834                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
15835                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
15836                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
15837            ],
15838            [
15839                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
15840                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
15841                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
15842            ],
15843            [
15844                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
15845                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
15846                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
15847            ],
15848        ];
15849    }
15850    #[automatically_derived]
15851    impl alloy_sol_types::SolEventInterface for LightClientArbitrumV2Events {
15852        const NAME: &'static str = "LightClientArbitrumV2Events";
15853        const COUNT: usize = 8usize;
15854        fn decode_raw_log(
15855            topics: &[alloy_sol_types::Word],
15856            data: &[u8],
15857        ) -> alloy_sol_types::Result<Self> {
15858            match topics.first().copied() {
15859                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15860                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
15861                            topics,
15862                            data,
15863                        )
15864                        .map(Self::Initialized)
15865                }
15866                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15867                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15868                        .map(Self::NewEpoch)
15869                }
15870                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15871                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15872                        .map(Self::NewState)
15873                }
15874                Some(
15875                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15876                ) => {
15877                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
15878                            topics,
15879                            data,
15880                        )
15881                        .map(Self::OwnershipTransferred)
15882                }
15883                Some(
15884                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15885                ) => {
15886                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15887                            topics,
15888                            data,
15889                        )
15890                        .map(Self::PermissionedProverNotRequired)
15891                }
15892                Some(
15893                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
15894                ) => {
15895                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
15896                            topics,
15897                            data,
15898                        )
15899                        .map(Self::PermissionedProverRequired)
15900                }
15901                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15902                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15903                        .map(Self::Upgrade)
15904                }
15905                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
15906                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
15907                        .map(Self::Upgraded)
15908                }
15909                _ => {
15910                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
15911                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
15912                        log: alloy_sol_types::private::Box::new(
15913                            alloy_sol_types::private::LogData::new_unchecked(
15914                                topics.to_vec(),
15915                                data.to_vec().into(),
15916                            ),
15917                        ),
15918                    })
15919                }
15920            }
15921        }
15922    }
15923    #[automatically_derived]
15924    impl alloy_sol_types::private::IntoLogData for LightClientArbitrumV2Events {
15925        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
15926            match self {
15927                Self::Initialized(inner) => {
15928                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15929                }
15930                Self::NewEpoch(inner) => {
15931                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15932                }
15933                Self::NewState(inner) => {
15934                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15935                }
15936                Self::OwnershipTransferred(inner) => {
15937                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15938                }
15939                Self::PermissionedProverNotRequired(inner) => {
15940                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15941                }
15942                Self::PermissionedProverRequired(inner) => {
15943                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15944                }
15945                Self::Upgrade(inner) => {
15946                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15947                }
15948                Self::Upgraded(inner) => {
15949                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
15950                }
15951            }
15952        }
15953        fn into_log_data(self) -> alloy_sol_types::private::LogData {
15954            match self {
15955                Self::Initialized(inner) => {
15956                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15957                }
15958                Self::NewEpoch(inner) => {
15959                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15960                }
15961                Self::NewState(inner) => {
15962                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15963                }
15964                Self::OwnershipTransferred(inner) => {
15965                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15966                }
15967                Self::PermissionedProverNotRequired(inner) => {
15968                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15969                }
15970                Self::PermissionedProverRequired(inner) => {
15971                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15972                }
15973                Self::Upgrade(inner) => {
15974                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15975                }
15976                Self::Upgraded(inner) => {
15977                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
15978                }
15979            }
15980        }
15981    }
15982    use alloy::contract as alloy_contract;
15983    /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
15984
15985See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
15986    #[inline]
15987    pub const fn new<
15988        P: alloy_contract::private::Provider<N>,
15989        N: alloy_contract::private::Network,
15990    >(
15991        address: alloy_sol_types::private::Address,
15992        provider: P,
15993    ) -> LightClientArbitrumV2Instance<P, N> {
15994        LightClientArbitrumV2Instance::<P, N>::new(address, provider)
15995    }
15996    /**Deploys this contract using the given `provider` and constructor arguments, if any.
15997
15998Returns a new instance of the contract, if the deployment was successful.
15999
16000For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16001    #[inline]
16002    pub fn deploy<
16003        P: alloy_contract::private::Provider<N>,
16004        N: alloy_contract::private::Network,
16005    >(
16006        provider: P,
16007    ) -> impl ::core::future::Future<
16008        Output = alloy_contract::Result<LightClientArbitrumV2Instance<P, N>>,
16009    > {
16010        LightClientArbitrumV2Instance::<P, N>::deploy(provider)
16011    }
16012    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16013and constructor arguments, if any.
16014
16015This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16016the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16017    #[inline]
16018    pub fn deploy_builder<
16019        P: alloy_contract::private::Provider<N>,
16020        N: alloy_contract::private::Network,
16021    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16022        LightClientArbitrumV2Instance::<P, N>::deploy_builder(provider)
16023    }
16024    /**A [`LightClientArbitrumV2`](self) instance.
16025
16026Contains type-safe methods for interacting with an on-chain instance of the
16027[`LightClientArbitrumV2`](self) contract located at a given `address`, using a given
16028provider `P`.
16029
16030If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16031documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16032be used to deploy a new instance of the contract.
16033
16034See the [module-level documentation](self) for all the available methods.*/
16035    #[derive(Clone)]
16036    pub struct LightClientArbitrumV2Instance<P, N = alloy_contract::private::Ethereum> {
16037        address: alloy_sol_types::private::Address,
16038        provider: P,
16039        _network: ::core::marker::PhantomData<N>,
16040    }
16041    #[automatically_derived]
16042    impl<P, N> ::core::fmt::Debug for LightClientArbitrumV2Instance<P, N> {
16043        #[inline]
16044        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16045            f.debug_tuple("LightClientArbitrumV2Instance").field(&self.address).finish()
16046        }
16047    }
16048    /// Instantiation and getters/setters.
16049    #[automatically_derived]
16050    impl<
16051        P: alloy_contract::private::Provider<N>,
16052        N: alloy_contract::private::Network,
16053    > LightClientArbitrumV2Instance<P, N> {
16054        /**Creates a new wrapper around an on-chain [`LightClientArbitrumV2`](self) contract instance.
16055
16056See the [wrapper's documentation](`LightClientArbitrumV2Instance`) for more details.*/
16057        #[inline]
16058        pub const fn new(
16059            address: alloy_sol_types::private::Address,
16060            provider: P,
16061        ) -> Self {
16062            Self {
16063                address,
16064                provider,
16065                _network: ::core::marker::PhantomData,
16066            }
16067        }
16068        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16069
16070Returns a new instance of the contract, if the deployment was successful.
16071
16072For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16073        #[inline]
16074        pub async fn deploy(
16075            provider: P,
16076        ) -> alloy_contract::Result<LightClientArbitrumV2Instance<P, N>> {
16077            let call_builder = Self::deploy_builder(provider);
16078            let contract_address = call_builder.deploy().await?;
16079            Ok(Self::new(contract_address, call_builder.provider))
16080        }
16081        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16082and constructor arguments, if any.
16083
16084This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16085the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16086        #[inline]
16087        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16088            alloy_contract::RawCallBuilder::new_raw_deploy(
16089                provider,
16090                ::core::clone::Clone::clone(&BYTECODE),
16091            )
16092        }
16093        /// Returns a reference to the address.
16094        #[inline]
16095        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16096            &self.address
16097        }
16098        /// Sets the address.
16099        #[inline]
16100        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16101            self.address = address;
16102        }
16103        /// Sets the address and returns `self`.
16104        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16105            self.set_address(address);
16106            self
16107        }
16108        /// Returns a reference to the provider.
16109        #[inline]
16110        pub const fn provider(&self) -> &P {
16111            &self.provider
16112        }
16113    }
16114    impl<P: ::core::clone::Clone, N> LightClientArbitrumV2Instance<&P, N> {
16115        /// Clones the provider and returns a new instance with the cloned provider.
16116        #[inline]
16117        pub fn with_cloned_provider(self) -> LightClientArbitrumV2Instance<P, N> {
16118            LightClientArbitrumV2Instance {
16119                address: self.address,
16120                provider: ::core::clone::Clone::clone(&self.provider),
16121                _network: ::core::marker::PhantomData,
16122            }
16123        }
16124    }
16125    /// Function calls.
16126    #[automatically_derived]
16127    impl<
16128        P: alloy_contract::private::Provider<N>,
16129        N: alloy_contract::private::Network,
16130    > LightClientArbitrumV2Instance<P, N> {
16131        /// Creates a new call builder using this contract instance's provider and address.
16132        ///
16133        /// Note that the call can be any function call, not just those defined in this
16134        /// contract. Prefer using the other methods for building type-safe contract calls.
16135        pub fn call_builder<C: alloy_sol_types::SolCall>(
16136            &self,
16137            call: &C,
16138        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16139            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16140        }
16141        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16142        pub fn UPGRADE_INTERFACE_VERSION(
16143            &self,
16144        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16145            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16146        }
16147        ///Creates a new call builder for the [`_getVk`] function.
16148        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16149            self.call_builder(&_getVkCall)
16150        }
16151        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16152        pub fn blocksPerEpoch(
16153            &self,
16154        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16155            self.call_builder(&blocksPerEpochCall)
16156        }
16157        ///Creates a new call builder for the [`currentBlockNumber`] function.
16158        pub fn currentBlockNumber(
16159            &self,
16160        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16161            self.call_builder(&currentBlockNumberCall)
16162        }
16163        ///Creates a new call builder for the [`currentEpoch`] function.
16164        pub fn currentEpoch(
16165            &self,
16166        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16167            self.call_builder(&currentEpochCall)
16168        }
16169        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16170        pub fn disablePermissionedProverMode(
16171            &self,
16172        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16173            self.call_builder(&disablePermissionedProverModeCall)
16174        }
16175        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16176        pub fn epochFromBlockNumber(
16177            &self,
16178            _blockNum: u64,
16179            _blocksPerEpoch: u64,
16180        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16181            self.call_builder(
16182                &epochFromBlockNumberCall {
16183                    _blockNum,
16184                    _blocksPerEpoch,
16185                },
16186            )
16187        }
16188        ///Creates a new call builder for the [`epochStartBlock`] function.
16189        pub fn epochStartBlock(
16190            &self,
16191        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16192            self.call_builder(&epochStartBlockCall)
16193        }
16194        ///Creates a new call builder for the [`finalizedState`] function.
16195        pub fn finalizedState(
16196            &self,
16197        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16198            self.call_builder(&finalizedStateCall)
16199        }
16200        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16201        pub fn genesisStakeTableState(
16202            &self,
16203        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16204            self.call_builder(&genesisStakeTableStateCall)
16205        }
16206        ///Creates a new call builder for the [`genesisState`] function.
16207        pub fn genesisState(
16208            &self,
16209        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16210            self.call_builder(&genesisStateCall)
16211        }
16212        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16213        pub fn getHotShotCommitment(
16214            &self,
16215            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16216        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16217            self.call_builder(
16218                &getHotShotCommitmentCall {
16219                    hotShotBlockHeight,
16220                },
16221            )
16222        }
16223        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16224        pub fn getStateHistoryCount(
16225            &self,
16226        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16227            self.call_builder(&getStateHistoryCountCall)
16228        }
16229        ///Creates a new call builder for the [`getVersion`] function.
16230        pub fn getVersion(
16231            &self,
16232        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16233            self.call_builder(&getVersionCall)
16234        }
16235        ///Creates a new call builder for the [`initialize`] function.
16236        pub fn initialize(
16237            &self,
16238            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16239            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16240            _stateHistoryRetentionPeriod: u32,
16241            owner: alloy::sol_types::private::Address,
16242        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16243            self.call_builder(
16244                &initializeCall {
16245                    _genesis,
16246                    _genesisStakeTableState,
16247                    _stateHistoryRetentionPeriod,
16248                    owner,
16249                },
16250            )
16251        }
16252        ///Creates a new call builder for the [`initializeV2`] function.
16253        pub fn initializeV2(
16254            &self,
16255            _blocksPerEpoch: u64,
16256            _epochStartBlock: u64,
16257        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16258            self.call_builder(
16259                &initializeV2Call {
16260                    _blocksPerEpoch,
16261                    _epochStartBlock,
16262                },
16263            )
16264        }
16265        ///Creates a new call builder for the [`isEpochRoot`] function.
16266        pub fn isEpochRoot(
16267            &self,
16268            blockHeight: u64,
16269        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16270            self.call_builder(&isEpochRootCall { blockHeight })
16271        }
16272        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16273        pub fn isGtEpochRoot(
16274            &self,
16275            blockHeight: u64,
16276        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16277            self.call_builder(&isGtEpochRootCall { blockHeight })
16278        }
16279        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16280        pub fn isPermissionedProverEnabled(
16281            &self,
16282        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16283            self.call_builder(&isPermissionedProverEnabledCall)
16284        }
16285        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16286        pub fn lagOverEscapeHatchThreshold(
16287            &self,
16288            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16289            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16290        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16291            self.call_builder(
16292                &lagOverEscapeHatchThresholdCall {
16293                    blockNumber,
16294                    blockThreshold,
16295                },
16296            )
16297        }
16298        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16299        pub fn newFinalizedState_0(
16300            &self,
16301            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16302            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16303        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16304            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16305        }
16306        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16307        pub fn newFinalizedState_1(
16308            &self,
16309            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16310            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16311            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16312        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16313            self.call_builder(
16314                &newFinalizedState_1Call {
16315                    newState,
16316                    nextStakeTable,
16317                    proof,
16318                },
16319            )
16320        }
16321        ///Creates a new call builder for the [`owner`] function.
16322        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16323            self.call_builder(&ownerCall)
16324        }
16325        ///Creates a new call builder for the [`permissionedProver`] function.
16326        pub fn permissionedProver(
16327            &self,
16328        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16329            self.call_builder(&permissionedProverCall)
16330        }
16331        ///Creates a new call builder for the [`proxiableUUID`] function.
16332        pub fn proxiableUUID(
16333            &self,
16334        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16335            self.call_builder(&proxiableUUIDCall)
16336        }
16337        ///Creates a new call builder for the [`renounceOwnership`] function.
16338        pub fn renounceOwnership(
16339            &self,
16340        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16341            self.call_builder(&renounceOwnershipCall)
16342        }
16343        ///Creates a new call builder for the [`setPermissionedProver`] function.
16344        pub fn setPermissionedProver(
16345            &self,
16346            prover: alloy::sol_types::private::Address,
16347        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16348            self.call_builder(
16349                &setPermissionedProverCall {
16350                    prover,
16351                },
16352            )
16353        }
16354        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16355        pub fn setStateHistoryRetentionPeriod(
16356            &self,
16357            historySeconds: u32,
16358        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16359            self.call_builder(
16360                &setStateHistoryRetentionPeriodCall {
16361                    historySeconds,
16362                },
16363            )
16364        }
16365        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16366        pub fn setstateHistoryRetentionPeriod(
16367            &self,
16368            historySeconds: u32,
16369        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16370            self.call_builder(
16371                &setstateHistoryRetentionPeriodCall {
16372                    historySeconds,
16373                },
16374            )
16375        }
16376        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16377        pub fn stateHistoryCommitments(
16378            &self,
16379            _0: alloy::sol_types::private::primitives::aliases::U256,
16380        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16381            self.call_builder(&stateHistoryCommitmentsCall(_0))
16382        }
16383        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16384        pub fn stateHistoryFirstIndex(
16385            &self,
16386        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16387            self.call_builder(&stateHistoryFirstIndexCall)
16388        }
16389        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16390        pub fn stateHistoryRetentionPeriod(
16391            &self,
16392        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16393            self.call_builder(&stateHistoryRetentionPeriodCall)
16394        }
16395        ///Creates a new call builder for the [`transferOwnership`] function.
16396        pub fn transferOwnership(
16397            &self,
16398            newOwner: alloy::sol_types::private::Address,
16399        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16400            self.call_builder(&transferOwnershipCall { newOwner })
16401        }
16402        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16403        pub fn updateEpochStartBlock(
16404            &self,
16405            newEpochStartBlock: u64,
16406        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
16407            self.call_builder(
16408                &updateEpochStartBlockCall {
16409                    newEpochStartBlock,
16410                },
16411            )
16412        }
16413        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16414        pub fn upgradeToAndCall(
16415            &self,
16416            newImplementation: alloy::sol_types::private::Address,
16417            data: alloy::sol_types::private::Bytes,
16418        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
16419            self.call_builder(
16420                &upgradeToAndCallCall {
16421                    newImplementation,
16422                    data,
16423                },
16424            )
16425        }
16426        ///Creates a new call builder for the [`votingStakeTableState`] function.
16427        pub fn votingStakeTableState(
16428            &self,
16429        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
16430            self.call_builder(&votingStakeTableStateCall)
16431        }
16432    }
16433    /// Event filters.
16434    #[automatically_derived]
16435    impl<
16436        P: alloy_contract::private::Provider<N>,
16437        N: alloy_contract::private::Network,
16438    > LightClientArbitrumV2Instance<P, N> {
16439        /// Creates a new event filter using this contract instance's provider and address.
16440        ///
16441        /// Note that the type can be any event, not just those defined in this contract.
16442        /// Prefer using the other methods for building type-safe event filters.
16443        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16444            &self,
16445        ) -> alloy_contract::Event<&P, E, N> {
16446            alloy_contract::Event::new_sol(&self.provider, &self.address)
16447        }
16448        ///Creates a new event filter for the [`Initialized`] event.
16449        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
16450            self.event_filter::<Initialized>()
16451        }
16452        ///Creates a new event filter for the [`NewEpoch`] event.
16453        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
16454            self.event_filter::<NewEpoch>()
16455        }
16456        ///Creates a new event filter for the [`NewState`] event.
16457        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
16458            self.event_filter::<NewState>()
16459        }
16460        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16461        pub fn OwnershipTransferred_filter(
16462            &self,
16463        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
16464            self.event_filter::<OwnershipTransferred>()
16465        }
16466        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16467        pub fn PermissionedProverNotRequired_filter(
16468            &self,
16469        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
16470            self.event_filter::<PermissionedProverNotRequired>()
16471        }
16472        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16473        pub fn PermissionedProverRequired_filter(
16474            &self,
16475        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
16476            self.event_filter::<PermissionedProverRequired>()
16477        }
16478        ///Creates a new event filter for the [`Upgrade`] event.
16479        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
16480            self.event_filter::<Upgrade>()
16481        }
16482        ///Creates a new event filter for the [`Upgraded`] event.
16483        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
16484            self.event_filter::<Upgraded>()
16485        }
16486    }
16487}