hotshot_contract_adapter/bindings/
light_client_v2.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        impl BaseField {
65            /// The Solidity type name.
66            pub const NAME: &'static str = stringify!(@ name);
67            /// Convert from the underlying value type.
68            #[inline]
69            pub const fn from_underlying(
70                value: alloy::sol_types::private::primitives::aliases::U256,
71            ) -> Self {
72                Self(value)
73            }
74            /// Return the underlying value.
75            #[inline]
76            pub const fn into_underlying(
77                self,
78            ) -> alloy::sol_types::private::primitives::aliases::U256 {
79                self.0
80            }
81            /// Return the single encoding of this value, delegating to the
82            /// underlying type.
83            #[inline]
84            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
85                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
86            }
87            /// Return the packed encoding of this value, delegating to the
88            /// underlying type.
89            #[inline]
90            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
91                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
92            }
93        }
94        #[automatically_derived]
95        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
96            fn from(
97                value: alloy::sol_types::private::primitives::aliases::U256,
98            ) -> Self {
99                Self::from_underlying(value)
100            }
101        }
102        #[automatically_derived]
103        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
104            fn from(value: BaseField) -> Self {
105                value.into_underlying()
106            }
107        }
108        #[automatically_derived]
109        impl alloy_sol_types::SolType for BaseField {
110            type RustType = alloy::sol_types::private::primitives::aliases::U256;
111            type Token<'a> = <alloy::sol_types::sol_data::Uint<
112                256,
113            > as alloy_sol_types::SolType>::Token<'a>;
114            const SOL_NAME: &'static str = Self::NAME;
115            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
116                256,
117            > as alloy_sol_types::SolType>::ENCODED_SIZE;
118            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
119                256,
120            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
121            #[inline]
122            fn valid_token(token: &Self::Token<'_>) -> bool {
123                Self::type_check(token).is_ok()
124            }
125            #[inline]
126            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
127                <alloy::sol_types::sol_data::Uint<
128                    256,
129                > as alloy_sol_types::SolType>::type_check(token)
130            }
131            #[inline]
132            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
133                <alloy::sol_types::sol_data::Uint<
134                    256,
135                > as alloy_sol_types::SolType>::detokenize(token)
136            }
137        }
138        #[automatically_derived]
139        impl alloy_sol_types::EventTopic for BaseField {
140            #[inline]
141            fn topic_preimage_length(rust: &Self::RustType) -> usize {
142                <alloy::sol_types::sol_data::Uint<
143                    256,
144                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
145            }
146            #[inline]
147            fn encode_topic_preimage(
148                rust: &Self::RustType,
149                out: &mut alloy_sol_types::private::Vec<u8>,
150            ) {
151                <alloy::sol_types::sol_data::Uint<
152                    256,
153                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
154            }
155            #[inline]
156            fn encode_topic(
157                rust: &Self::RustType,
158            ) -> alloy_sol_types::abi::token::WordToken {
159                <alloy::sol_types::sol_data::Uint<
160                    256,
161                > as alloy_sol_types::EventTopic>::encode_topic(rust)
162            }
163        }
164    };
165    #[derive(serde::Serialize, serde::Deserialize)]
166    #[derive(Default, Debug, PartialEq, Eq, Hash)]
167    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
168    #[derive(Clone)]
169    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
170    const _: () = {
171        use alloy::sol_types as alloy_sol_types;
172        #[automatically_derived]
173        impl alloy_sol_types::private::SolTypeValue<ScalarField>
174        for alloy::sol_types::private::primitives::aliases::U256 {
175            #[inline]
176            fn stv_to_tokens(
177                &self,
178            ) -> <alloy::sol_types::sol_data::Uint<
179                256,
180            > as alloy_sol_types::SolType>::Token<'_> {
181                alloy_sol_types::private::SolTypeValue::<
182                    alloy::sol_types::sol_data::Uint<256>,
183                >::stv_to_tokens(self)
184            }
185            #[inline]
186            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
187                <alloy::sol_types::sol_data::Uint<
188                    256,
189                > as alloy_sol_types::SolType>::tokenize(self)
190                    .0
191            }
192            #[inline]
193            fn stv_abi_encode_packed_to(
194                &self,
195                out: &mut alloy_sol_types::private::Vec<u8>,
196            ) {
197                <alloy::sol_types::sol_data::Uint<
198                    256,
199                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
200            }
201            #[inline]
202            fn stv_abi_packed_encoded_size(&self) -> usize {
203                <alloy::sol_types::sol_data::Uint<
204                    256,
205                > as alloy_sol_types::SolType>::abi_encoded_size(self)
206            }
207        }
208        impl ScalarField {
209            /// The Solidity type name.
210            pub const NAME: &'static str = stringify!(@ name);
211            /// Convert from the underlying value type.
212            #[inline]
213            pub const fn from_underlying(
214                value: alloy::sol_types::private::primitives::aliases::U256,
215            ) -> Self {
216                Self(value)
217            }
218            /// Return the underlying value.
219            #[inline]
220            pub const fn into_underlying(
221                self,
222            ) -> alloy::sol_types::private::primitives::aliases::U256 {
223                self.0
224            }
225            /// Return the single encoding of this value, delegating to the
226            /// underlying type.
227            #[inline]
228            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
229                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
230            }
231            /// Return the packed encoding of this value, delegating to the
232            /// underlying type.
233            #[inline]
234            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
235                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
236            }
237        }
238        #[automatically_derived]
239        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
240            fn from(
241                value: alloy::sol_types::private::primitives::aliases::U256,
242            ) -> Self {
243                Self::from_underlying(value)
244            }
245        }
246        #[automatically_derived]
247        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
248            fn from(value: ScalarField) -> Self {
249                value.into_underlying()
250            }
251        }
252        #[automatically_derived]
253        impl alloy_sol_types::SolType for ScalarField {
254            type RustType = alloy::sol_types::private::primitives::aliases::U256;
255            type Token<'a> = <alloy::sol_types::sol_data::Uint<
256                256,
257            > as alloy_sol_types::SolType>::Token<'a>;
258            const SOL_NAME: &'static str = Self::NAME;
259            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
260                256,
261            > as alloy_sol_types::SolType>::ENCODED_SIZE;
262            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
263                256,
264            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
265            #[inline]
266            fn valid_token(token: &Self::Token<'_>) -> bool {
267                Self::type_check(token).is_ok()
268            }
269            #[inline]
270            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
271                <alloy::sol_types::sol_data::Uint<
272                    256,
273                > as alloy_sol_types::SolType>::type_check(token)
274            }
275            #[inline]
276            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
277                <alloy::sol_types::sol_data::Uint<
278                    256,
279                > as alloy_sol_types::SolType>::detokenize(token)
280            }
281        }
282        #[automatically_derived]
283        impl alloy_sol_types::EventTopic for ScalarField {
284            #[inline]
285            fn topic_preimage_length(rust: &Self::RustType) -> usize {
286                <alloy::sol_types::sol_data::Uint<
287                    256,
288                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
289            }
290            #[inline]
291            fn encode_topic_preimage(
292                rust: &Self::RustType,
293                out: &mut alloy_sol_types::private::Vec<u8>,
294            ) {
295                <alloy::sol_types::sol_data::Uint<
296                    256,
297                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
298            }
299            #[inline]
300            fn encode_topic(
301                rust: &Self::RustType,
302            ) -> alloy_sol_types::abi::token::WordToken {
303                <alloy::sol_types::sol_data::Uint<
304                    256,
305                > as alloy_sol_types::EventTopic>::encode_topic(rust)
306            }
307        }
308    };
309    #[derive(serde::Serialize, serde::Deserialize)]
310    #[derive(Default, Debug, PartialEq, Eq, Hash)]
311    /**```solidity
312struct G1Point { BaseField x; BaseField y; }
313```*/
314    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
315    #[derive(Clone)]
316    pub struct G1Point {
317        #[allow(missing_docs)]
318        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
319        #[allow(missing_docs)]
320        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
321    }
322    #[allow(
323        non_camel_case_types,
324        non_snake_case,
325        clippy::pub_underscore_fields,
326        clippy::style
327    )]
328    const _: () = {
329        use alloy::sol_types as alloy_sol_types;
330        #[doc(hidden)]
331        #[allow(dead_code)]
332        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
333        #[doc(hidden)]
334        type UnderlyingRustTuple<'a> = (
335            <BaseField as alloy::sol_types::SolType>::RustType,
336            <BaseField as alloy::sol_types::SolType>::RustType,
337        );
338        #[cfg(test)]
339        #[allow(dead_code, unreachable_patterns)]
340        fn _type_assertion(
341            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
342        ) {
343            match _t {
344                alloy_sol_types::private::AssertTypeEq::<
345                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
346                >(_) => {}
347            }
348        }
349        #[automatically_derived]
350        #[doc(hidden)]
351        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
352            fn from(value: G1Point) -> Self {
353                (value.x, value.y)
354            }
355        }
356        #[automatically_derived]
357        #[doc(hidden)]
358        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
359            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
360                Self { x: tuple.0, y: tuple.1 }
361            }
362        }
363        #[automatically_derived]
364        impl alloy_sol_types::SolValue for G1Point {
365            type SolType = Self;
366        }
367        #[automatically_derived]
368        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
369            #[inline]
370            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
371                (
372                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
374                )
375            }
376            #[inline]
377            fn stv_abi_encoded_size(&self) -> usize {
378                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
379                    return size;
380                }
381                let tuple = <UnderlyingRustTuple<
382                    '_,
383                > as ::core::convert::From<Self>>::from(self.clone());
384                <UnderlyingSolTuple<
385                    '_,
386                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
387            }
388            #[inline]
389            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
390                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
391            }
392            #[inline]
393            fn stv_abi_encode_packed_to(
394                &self,
395                out: &mut alloy_sol_types::private::Vec<u8>,
396            ) {
397                let tuple = <UnderlyingRustTuple<
398                    '_,
399                > as ::core::convert::From<Self>>::from(self.clone());
400                <UnderlyingSolTuple<
401                    '_,
402                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
403            }
404            #[inline]
405            fn stv_abi_packed_encoded_size(&self) -> usize {
406                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
407                    return size;
408                }
409                let tuple = <UnderlyingRustTuple<
410                    '_,
411                > as ::core::convert::From<Self>>::from(self.clone());
412                <UnderlyingSolTuple<
413                    '_,
414                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
415            }
416        }
417        #[automatically_derived]
418        impl alloy_sol_types::SolType for G1Point {
419            type RustType = Self;
420            type Token<'a> = <UnderlyingSolTuple<
421                'a,
422            > as alloy_sol_types::SolType>::Token<'a>;
423            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
424            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
425                '_,
426            > as alloy_sol_types::SolType>::ENCODED_SIZE;
427            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
428                '_,
429            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
430            #[inline]
431            fn valid_token(token: &Self::Token<'_>) -> bool {
432                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
433            }
434            #[inline]
435            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
436                let tuple = <UnderlyingSolTuple<
437                    '_,
438                > as alloy_sol_types::SolType>::detokenize(token);
439                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
440            }
441        }
442        #[automatically_derived]
443        impl alloy_sol_types::SolStruct for G1Point {
444            const NAME: &'static str = "G1Point";
445            #[inline]
446            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
447                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
448            }
449            #[inline]
450            fn eip712_components() -> alloy_sol_types::private::Vec<
451                alloy_sol_types::private::Cow<'static, str>,
452            > {
453                alloy_sol_types::private::Vec::new()
454            }
455            #[inline]
456            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
457                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
458            }
459            #[inline]
460            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
461                [
462                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
464                ]
465                    .concat()
466            }
467        }
468        #[automatically_derived]
469        impl alloy_sol_types::EventTopic for G1Point {
470            #[inline]
471            fn topic_preimage_length(rust: &Self::RustType) -> usize {
472                0usize
473                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
474                        &rust.x,
475                    )
476                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
477                        &rust.y,
478                    )
479            }
480            #[inline]
481            fn encode_topic_preimage(
482                rust: &Self::RustType,
483                out: &mut alloy_sol_types::private::Vec<u8>,
484            ) {
485                out.reserve(
486                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
487                );
488                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
489                    &rust.x,
490                    out,
491                );
492                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
493                    &rust.y,
494                    out,
495                );
496            }
497            #[inline]
498            fn encode_topic(
499                rust: &Self::RustType,
500            ) -> alloy_sol_types::abi::token::WordToken {
501                let mut out = alloy_sol_types::private::Vec::new();
502                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
503                    rust,
504                    &mut out,
505                );
506                alloy_sol_types::abi::token::WordToken(
507                    alloy_sol_types::private::keccak256(out),
508                )
509            }
510        }
511    };
512    use alloy::contract as alloy_contract;
513    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
514
515See the [wrapper's documentation](`BN254Instance`) for more details.*/
516    #[inline]
517    pub const fn new<
518        P: alloy_contract::private::Provider<N>,
519        N: alloy_contract::private::Network,
520    >(address: alloy_sol_types::private::Address, __provider: P) -> BN254Instance<P, N> {
521        BN254Instance::<P, N>::new(address, __provider)
522    }
523    /**A [`BN254`](self) instance.
524
525Contains type-safe methods for interacting with an on-chain instance of the
526[`BN254`](self) contract located at a given `address`, using a given
527provider `P`.
528
529If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
530documentation on how to provide it), the `deploy` and `deploy_builder` methods can
531be used to deploy a new instance of the contract.
532
533See the [module-level documentation](self) for all the available methods.*/
534    #[derive(Clone)]
535    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
536        address: alloy_sol_types::private::Address,
537        provider: P,
538        _network: ::core::marker::PhantomData<N>,
539    }
540    #[automatically_derived]
541    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
542        #[inline]
543        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
544            f.debug_tuple("BN254Instance").field(&self.address).finish()
545        }
546    }
547    /// Instantiation and getters/setters.
548    impl<
549        P: alloy_contract::private::Provider<N>,
550        N: alloy_contract::private::Network,
551    > BN254Instance<P, N> {
552        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
553
554See the [wrapper's documentation](`BN254Instance`) for more details.*/
555        #[inline]
556        pub const fn new(
557            address: alloy_sol_types::private::Address,
558            __provider: P,
559        ) -> Self {
560            Self {
561                address,
562                provider: __provider,
563                _network: ::core::marker::PhantomData,
564            }
565        }
566        /// Returns a reference to the address.
567        #[inline]
568        pub const fn address(&self) -> &alloy_sol_types::private::Address {
569            &self.address
570        }
571        /// Sets the address.
572        #[inline]
573        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
574            self.address = address;
575        }
576        /// Sets the address and returns `self`.
577        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
578            self.set_address(address);
579            self
580        }
581        /// Returns a reference to the provider.
582        #[inline]
583        pub const fn provider(&self) -> &P {
584            &self.provider
585        }
586    }
587    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
588        /// Clones the provider and returns a new instance with the cloned provider.
589        #[inline]
590        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
591            BN254Instance {
592                address: self.address,
593                provider: ::core::clone::Clone::clone(&self.provider),
594                _network: ::core::marker::PhantomData,
595            }
596        }
597    }
598    /// Function calls.
599    impl<
600        P: alloy_contract::private::Provider<N>,
601        N: alloy_contract::private::Network,
602    > BN254Instance<P, N> {
603        /// Creates a new call builder using this contract instance's provider and address.
604        ///
605        /// Note that the call can be any function call, not just those defined in this
606        /// contract. Prefer using the other methods for building type-safe contract calls.
607        pub fn call_builder<C: alloy_sol_types::SolCall>(
608            &self,
609            call: &C,
610        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
611            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
612        }
613    }
614    /// Event filters.
615    impl<
616        P: alloy_contract::private::Provider<N>,
617        N: alloy_contract::private::Network,
618    > BN254Instance<P, N> {
619        /// Creates a new event filter using this contract instance's provider and address.
620        ///
621        /// Note that the type can be any event, not just those defined in this contract.
622        /// Prefer using the other methods for building type-safe event filters.
623        pub fn event_filter<E: alloy_sol_types::SolEvent>(
624            &self,
625        ) -> alloy_contract::Event<&P, E, N> {
626            alloy_contract::Event::new_sol(&self.provider, &self.address)
627        }
628    }
629}
630///Module containing a contract's types and functions.
631/**
632
633```solidity
634library IPlonkVerifier {
635    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; }
636    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; }
637}
638```*/
639#[allow(
640    non_camel_case_types,
641    non_snake_case,
642    clippy::pub_underscore_fields,
643    clippy::style,
644    clippy::empty_structs_with_brackets
645)]
646pub mod IPlonkVerifier {
647    use super::*;
648    use alloy::sol_types as alloy_sol_types;
649    #[derive(serde::Serialize, serde::Deserialize)]
650    #[derive()]
651    /**```solidity
652struct 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; }
653```*/
654    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
655    #[derive(Clone)]
656    pub struct PlonkProof {
657        #[allow(missing_docs)]
658        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
659        #[allow(missing_docs)]
660        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
661        #[allow(missing_docs)]
662        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703    }
704    #[allow(
705        non_camel_case_types,
706        non_snake_case,
707        clippy::pub_underscore_fields,
708        clippy::style
709    )]
710    const _: () = {
711        use alloy::sol_types as alloy_sol_types;
712        #[doc(hidden)]
713        #[allow(dead_code)]
714        type UnderlyingSolTuple<'a> = (
715            BN254::G1Point,
716            BN254::G1Point,
717            BN254::G1Point,
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::ScalarField,
729            BN254::ScalarField,
730            BN254::ScalarField,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738        );
739        #[doc(hidden)]
740        type UnderlyingRustTuple<'a> = (
741            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
742            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
743            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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::ScalarField as alloy::sol_types::SolType>::RustType,
755            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
756            <BN254::ScalarField 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        );
765        #[cfg(test)]
766        #[allow(dead_code, unreachable_patterns)]
767        fn _type_assertion(
768            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
769        ) {
770            match _t {
771                alloy_sol_types::private::AssertTypeEq::<
772                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
773                >(_) => {}
774            }
775        }
776        #[automatically_derived]
777        #[doc(hidden)]
778        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
779            fn from(value: PlonkProof) -> Self {
780                (
781                    value.wire0,
782                    value.wire1,
783                    value.wire2,
784                    value.wire3,
785                    value.wire4,
786                    value.prodPerm,
787                    value.split0,
788                    value.split1,
789                    value.split2,
790                    value.split3,
791                    value.split4,
792                    value.zeta,
793                    value.zetaOmega,
794                    value.wireEval0,
795                    value.wireEval1,
796                    value.wireEval2,
797                    value.wireEval3,
798                    value.wireEval4,
799                    value.sigmaEval0,
800                    value.sigmaEval1,
801                    value.sigmaEval2,
802                    value.sigmaEval3,
803                    value.prodPermZetaOmegaEval,
804                )
805            }
806        }
807        #[automatically_derived]
808        #[doc(hidden)]
809        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
810            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
811                Self {
812                    wire0: tuple.0,
813                    wire1: tuple.1,
814                    wire2: tuple.2,
815                    wire3: tuple.3,
816                    wire4: tuple.4,
817                    prodPerm: tuple.5,
818                    split0: tuple.6,
819                    split1: tuple.7,
820                    split2: tuple.8,
821                    split3: tuple.9,
822                    split4: tuple.10,
823                    zeta: tuple.11,
824                    zetaOmega: tuple.12,
825                    wireEval0: tuple.13,
826                    wireEval1: tuple.14,
827                    wireEval2: tuple.15,
828                    wireEval3: tuple.16,
829                    wireEval4: tuple.17,
830                    sigmaEval0: tuple.18,
831                    sigmaEval1: tuple.19,
832                    sigmaEval2: tuple.20,
833                    sigmaEval3: tuple.21,
834                    prodPermZetaOmegaEval: tuple.22,
835                }
836            }
837        }
838        #[automatically_derived]
839        impl alloy_sol_types::SolValue for PlonkProof {
840            type SolType = Self;
841        }
842        #[automatically_derived]
843        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
844            #[inline]
845            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
846                (
847                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
848                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
849                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
853                        &self.prodPerm,
854                    ),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
856                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
857                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
862                        &self.zetaOmega,
863                    ),
864                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
865                        &self.wireEval0,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval1,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval2,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval3,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval4,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.sigmaEval0,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval1,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval2,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval3,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.prodPermZetaOmegaEval,
893                    ),
894                )
895            }
896            #[inline]
897            fn stv_abi_encoded_size(&self) -> usize {
898                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
899                    return size;
900                }
901                let tuple = <UnderlyingRustTuple<
902                    '_,
903                > as ::core::convert::From<Self>>::from(self.clone());
904                <UnderlyingSolTuple<
905                    '_,
906                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
907            }
908            #[inline]
909            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
910                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
911            }
912            #[inline]
913            fn stv_abi_encode_packed_to(
914                &self,
915                out: &mut alloy_sol_types::private::Vec<u8>,
916            ) {
917                let tuple = <UnderlyingRustTuple<
918                    '_,
919                > as ::core::convert::From<Self>>::from(self.clone());
920                <UnderlyingSolTuple<
921                    '_,
922                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
923            }
924            #[inline]
925            fn stv_abi_packed_encoded_size(&self) -> usize {
926                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
927                    return size;
928                }
929                let tuple = <UnderlyingRustTuple<
930                    '_,
931                > as ::core::convert::From<Self>>::from(self.clone());
932                <UnderlyingSolTuple<
933                    '_,
934                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
935            }
936        }
937        #[automatically_derived]
938        impl alloy_sol_types::SolType for PlonkProof {
939            type RustType = Self;
940            type Token<'a> = <UnderlyingSolTuple<
941                'a,
942            > as alloy_sol_types::SolType>::Token<'a>;
943            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
944            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
945                '_,
946            > as alloy_sol_types::SolType>::ENCODED_SIZE;
947            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
950            #[inline]
951            fn valid_token(token: &Self::Token<'_>) -> bool {
952                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
953            }
954            #[inline]
955            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
956                let tuple = <UnderlyingSolTuple<
957                    '_,
958                > as alloy_sol_types::SolType>::detokenize(token);
959                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
960            }
961        }
962        #[automatically_derived]
963        impl alloy_sol_types::SolStruct for PlonkProof {
964            const NAME: &'static str = "PlonkProof";
965            #[inline]
966            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
967                alloy_sol_types::private::Cow::Borrowed(
968                    "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)",
969                )
970            }
971            #[inline]
972            fn eip712_components() -> alloy_sol_types::private::Vec<
973                alloy_sol_types::private::Cow<'static, str>,
974            > {
975                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
976                components
977                    .push(
978                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
979                    );
980                components
981                    .extend(
982                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
983                    );
984                components
985                    .push(
986                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
987                    );
988                components
989                    .extend(
990                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
991                    );
992                components
993                    .push(
994                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
995                    );
996                components
997                    .extend(
998                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
999                    );
1000                components
1001                    .push(
1002                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1003                    );
1004                components
1005                    .extend(
1006                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1007                    );
1008                components
1009                    .push(
1010                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1011                    );
1012                components
1013                    .extend(
1014                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1015                    );
1016                components
1017                    .push(
1018                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1019                    );
1020                components
1021                    .extend(
1022                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1023                    );
1024                components
1025                    .push(
1026                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1027                    );
1028                components
1029                    .extend(
1030                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1031                    );
1032                components
1033                    .push(
1034                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1035                    );
1036                components
1037                    .extend(
1038                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1039                    );
1040                components
1041                    .push(
1042                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1043                    );
1044                components
1045                    .extend(
1046                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1047                    );
1048                components
1049                    .push(
1050                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1051                    );
1052                components
1053                    .extend(
1054                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1055                    );
1056                components
1057                    .push(
1058                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1059                    );
1060                components
1061                    .extend(
1062                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1063                    );
1064                components
1065                    .push(
1066                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1067                    );
1068                components
1069                    .extend(
1070                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1071                    );
1072                components
1073                    .push(
1074                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1075                    );
1076                components
1077                    .extend(
1078                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1079                    );
1080                components
1081            }
1082            #[inline]
1083            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1084                [
1085                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1086                            &self.wire0,
1087                        )
1088                        .0,
1089                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1090                            &self.wire1,
1091                        )
1092                        .0,
1093                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1094                            &self.wire2,
1095                        )
1096                        .0,
1097                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1098                            &self.wire3,
1099                        )
1100                        .0,
1101                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1102                            &self.wire4,
1103                        )
1104                        .0,
1105                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1106                            &self.prodPerm,
1107                        )
1108                        .0,
1109                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1110                            &self.split0,
1111                        )
1112                        .0,
1113                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1114                            &self.split1,
1115                        )
1116                        .0,
1117                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1118                            &self.split2,
1119                        )
1120                        .0,
1121                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1122                            &self.split3,
1123                        )
1124                        .0,
1125                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1126                            &self.split4,
1127                        )
1128                        .0,
1129                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1130                            &self.zeta,
1131                        )
1132                        .0,
1133                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1134                            &self.zetaOmega,
1135                        )
1136                        .0,
1137                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1138                            &self.wireEval0,
1139                        )
1140                        .0,
1141                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1142                            &self.wireEval1,
1143                        )
1144                        .0,
1145                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1146                            &self.wireEval2,
1147                        )
1148                        .0,
1149                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1150                            &self.wireEval3,
1151                        )
1152                        .0,
1153                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1154                            &self.wireEval4,
1155                        )
1156                        .0,
1157                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1158                            &self.sigmaEval0,
1159                        )
1160                        .0,
1161                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1162                            &self.sigmaEval1,
1163                        )
1164                        .0,
1165                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1166                            &self.sigmaEval2,
1167                        )
1168                        .0,
1169                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1170                            &self.sigmaEval3,
1171                        )
1172                        .0,
1173                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1174                            &self.prodPermZetaOmegaEval,
1175                        )
1176                        .0,
1177                ]
1178                    .concat()
1179            }
1180        }
1181        #[automatically_derived]
1182        impl alloy_sol_types::EventTopic for PlonkProof {
1183            #[inline]
1184            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1185                0usize
1186                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1187                        &rust.wire0,
1188                    )
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire1,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire2,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire3,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire4,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.prodPerm,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.split0,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split1,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split2,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split3,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split4,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.zeta,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zetaOmega,
1224                    )
1225                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.wireEval0,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval1,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval2,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval3,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval4,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.sigmaEval0,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval1,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval2,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval3,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.prodPermZetaOmegaEval,
1254                    )
1255            }
1256            #[inline]
1257            fn encode_topic_preimage(
1258                rust: &Self::RustType,
1259                out: &mut alloy_sol_types::private::Vec<u8>,
1260            ) {
1261                out.reserve(
1262                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1263                );
1264                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1265                    &rust.wire0,
1266                    out,
1267                );
1268                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1269                    &rust.wire1,
1270                    out,
1271                );
1272                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1273                    &rust.wire2,
1274                    out,
1275                );
1276                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1277                    &rust.wire3,
1278                    out,
1279                );
1280                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1281                    &rust.wire4,
1282                    out,
1283                );
1284                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1285                    &rust.prodPerm,
1286                    out,
1287                );
1288                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1289                    &rust.split0,
1290                    out,
1291                );
1292                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1293                    &rust.split1,
1294                    out,
1295                );
1296                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1297                    &rust.split2,
1298                    out,
1299                );
1300                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1301                    &rust.split3,
1302                    out,
1303                );
1304                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1305                    &rust.split4,
1306                    out,
1307                );
1308                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1309                    &rust.zeta,
1310                    out,
1311                );
1312                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1313                    &rust.zetaOmega,
1314                    out,
1315                );
1316                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1317                    &rust.wireEval0,
1318                    out,
1319                );
1320                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1321                    &rust.wireEval1,
1322                    out,
1323                );
1324                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1325                    &rust.wireEval2,
1326                    out,
1327                );
1328                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1329                    &rust.wireEval3,
1330                    out,
1331                );
1332                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1333                    &rust.wireEval4,
1334                    out,
1335                );
1336                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1337                    &rust.sigmaEval0,
1338                    out,
1339                );
1340                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1341                    &rust.sigmaEval1,
1342                    out,
1343                );
1344                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1345                    &rust.sigmaEval2,
1346                    out,
1347                );
1348                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1349                    &rust.sigmaEval3,
1350                    out,
1351                );
1352                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1353                    &rust.prodPermZetaOmegaEval,
1354                    out,
1355                );
1356            }
1357            #[inline]
1358            fn encode_topic(
1359                rust: &Self::RustType,
1360            ) -> alloy_sol_types::abi::token::WordToken {
1361                let mut out = alloy_sol_types::private::Vec::new();
1362                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1363                    rust,
1364                    &mut out,
1365                );
1366                alloy_sol_types::abi::token::WordToken(
1367                    alloy_sol_types::private::keccak256(out),
1368                )
1369            }
1370        }
1371    };
1372    #[derive(serde::Serialize, serde::Deserialize)]
1373    #[derive()]
1374    /**```solidity
1375struct 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; }
1376```*/
1377    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1378    #[derive(Clone)]
1379    pub struct VerifyingKey {
1380        #[allow(missing_docs)]
1381        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1382        #[allow(missing_docs)]
1383        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1384        #[allow(missing_docs)]
1385        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1386        #[allow(missing_docs)]
1387        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1388        #[allow(missing_docs)]
1389        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1390        #[allow(missing_docs)]
1391        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1392        #[allow(missing_docs)]
1393        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1394        #[allow(missing_docs)]
1395        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1396        #[allow(missing_docs)]
1397        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1398        #[allow(missing_docs)]
1399        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1400        #[allow(missing_docs)]
1401        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1402        #[allow(missing_docs)]
1403        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1404        #[allow(missing_docs)]
1405        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1406        #[allow(missing_docs)]
1407        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1408        #[allow(missing_docs)]
1409        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1410        #[allow(missing_docs)]
1411        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1412        #[allow(missing_docs)]
1413        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1414        #[allow(missing_docs)]
1415        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1416        #[allow(missing_docs)]
1417        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1418        #[allow(missing_docs)]
1419        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1420        #[allow(missing_docs)]
1421        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1422        #[allow(missing_docs)]
1423        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1424    }
1425    #[allow(
1426        non_camel_case_types,
1427        non_snake_case,
1428        clippy::pub_underscore_fields,
1429        clippy::style
1430    )]
1431    const _: () = {
1432        use alloy::sol_types as alloy_sol_types;
1433        #[doc(hidden)]
1434        #[allow(dead_code)]
1435        type UnderlyingSolTuple<'a> = (
1436            alloy::sol_types::sol_data::Uint<256>,
1437            alloy::sol_types::sol_data::Uint<256>,
1438            BN254::G1Point,
1439            BN254::G1Point,
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            alloy::sol_types::sol_data::FixedBytes<32>,
1457            alloy::sol_types::sol_data::FixedBytes<32>,
1458        );
1459        #[doc(hidden)]
1460        type UnderlyingRustTuple<'a> = (
1461            alloy::sol_types::private::primitives::aliases::U256,
1462            alloy::sol_types::private::primitives::aliases::U256,
1463            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1464            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
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            alloy::sol_types::private::FixedBytes<32>,
1482            alloy::sol_types::private::FixedBytes<32>,
1483        );
1484        #[cfg(test)]
1485        #[allow(dead_code, unreachable_patterns)]
1486        fn _type_assertion(
1487            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1488        ) {
1489            match _t {
1490                alloy_sol_types::private::AssertTypeEq::<
1491                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1492                >(_) => {}
1493            }
1494        }
1495        #[automatically_derived]
1496        #[doc(hidden)]
1497        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1498            fn from(value: VerifyingKey) -> Self {
1499                (
1500                    value.domainSize,
1501                    value.numInputs,
1502                    value.sigma0,
1503                    value.sigma1,
1504                    value.sigma2,
1505                    value.sigma3,
1506                    value.sigma4,
1507                    value.q1,
1508                    value.q2,
1509                    value.q3,
1510                    value.q4,
1511                    value.qM12,
1512                    value.qM34,
1513                    value.qO,
1514                    value.qC,
1515                    value.qH1,
1516                    value.qH2,
1517                    value.qH3,
1518                    value.qH4,
1519                    value.qEcc,
1520                    value.g2LSB,
1521                    value.g2MSB,
1522                )
1523            }
1524        }
1525        #[automatically_derived]
1526        #[doc(hidden)]
1527        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1528            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1529                Self {
1530                    domainSize: tuple.0,
1531                    numInputs: tuple.1,
1532                    sigma0: tuple.2,
1533                    sigma1: tuple.3,
1534                    sigma2: tuple.4,
1535                    sigma3: tuple.5,
1536                    sigma4: tuple.6,
1537                    q1: tuple.7,
1538                    q2: tuple.8,
1539                    q3: tuple.9,
1540                    q4: tuple.10,
1541                    qM12: tuple.11,
1542                    qM34: tuple.12,
1543                    qO: tuple.13,
1544                    qC: tuple.14,
1545                    qH1: tuple.15,
1546                    qH2: tuple.16,
1547                    qH3: tuple.17,
1548                    qH4: tuple.18,
1549                    qEcc: tuple.19,
1550                    g2LSB: tuple.20,
1551                    g2MSB: tuple.21,
1552                }
1553            }
1554        }
1555        #[automatically_derived]
1556        impl alloy_sol_types::SolValue for VerifyingKey {
1557            type SolType = Self;
1558        }
1559        #[automatically_derived]
1560        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1561            #[inline]
1562            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1563                (
1564                    <alloy::sol_types::sol_data::Uint<
1565                        256,
1566                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1567                    <alloy::sol_types::sol_data::Uint<
1568                        256,
1569                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1570                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1571                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1588                    <alloy::sol_types::sol_data::FixedBytes<
1589                        32,
1590                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1591                    <alloy::sol_types::sol_data::FixedBytes<
1592                        32,
1593                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1594                )
1595            }
1596            #[inline]
1597            fn stv_abi_encoded_size(&self) -> usize {
1598                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1599                    return size;
1600                }
1601                let tuple = <UnderlyingRustTuple<
1602                    '_,
1603                > as ::core::convert::From<Self>>::from(self.clone());
1604                <UnderlyingSolTuple<
1605                    '_,
1606                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1607            }
1608            #[inline]
1609            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1610                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1611            }
1612            #[inline]
1613            fn stv_abi_encode_packed_to(
1614                &self,
1615                out: &mut alloy_sol_types::private::Vec<u8>,
1616            ) {
1617                let tuple = <UnderlyingRustTuple<
1618                    '_,
1619                > as ::core::convert::From<Self>>::from(self.clone());
1620                <UnderlyingSolTuple<
1621                    '_,
1622                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1623            }
1624            #[inline]
1625            fn stv_abi_packed_encoded_size(&self) -> usize {
1626                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1627                    return size;
1628                }
1629                let tuple = <UnderlyingRustTuple<
1630                    '_,
1631                > as ::core::convert::From<Self>>::from(self.clone());
1632                <UnderlyingSolTuple<
1633                    '_,
1634                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1635            }
1636        }
1637        #[automatically_derived]
1638        impl alloy_sol_types::SolType for VerifyingKey {
1639            type RustType = Self;
1640            type Token<'a> = <UnderlyingSolTuple<
1641                'a,
1642            > as alloy_sol_types::SolType>::Token<'a>;
1643            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1644            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1645                '_,
1646            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1647            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1648                '_,
1649            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1650            #[inline]
1651            fn valid_token(token: &Self::Token<'_>) -> bool {
1652                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1653            }
1654            #[inline]
1655            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1656                let tuple = <UnderlyingSolTuple<
1657                    '_,
1658                > as alloy_sol_types::SolType>::detokenize(token);
1659                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1660            }
1661        }
1662        #[automatically_derived]
1663        impl alloy_sol_types::SolStruct for VerifyingKey {
1664            const NAME: &'static str = "VerifyingKey";
1665            #[inline]
1666            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1667                alloy_sol_types::private::Cow::Borrowed(
1668                    "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)",
1669                )
1670            }
1671            #[inline]
1672            fn eip712_components() -> alloy_sol_types::private::Vec<
1673                alloy_sol_types::private::Cow<'static, str>,
1674            > {
1675                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1676                components
1677                    .push(
1678                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1679                    );
1680                components
1681                    .extend(
1682                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1683                    );
1684                components
1685                    .push(
1686                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1687                    );
1688                components
1689                    .extend(
1690                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1691                    );
1692                components
1693                    .push(
1694                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1695                    );
1696                components
1697                    .extend(
1698                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1699                    );
1700                components
1701                    .push(
1702                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1703                    );
1704                components
1705                    .extend(
1706                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1707                    );
1708                components
1709                    .push(
1710                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1711                    );
1712                components
1713                    .extend(
1714                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1715                    );
1716                components
1717                    .push(
1718                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1719                    );
1720                components
1721                    .extend(
1722                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1723                    );
1724                components
1725                    .push(
1726                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1727                    );
1728                components
1729                    .extend(
1730                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1731                    );
1732                components
1733                    .push(
1734                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1735                    );
1736                components
1737                    .extend(
1738                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1739                    );
1740                components
1741                    .push(
1742                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1743                    );
1744                components
1745                    .extend(
1746                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1747                    );
1748                components
1749                    .push(
1750                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1751                    );
1752                components
1753                    .extend(
1754                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1755                    );
1756                components
1757                    .push(
1758                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1759                    );
1760                components
1761                    .extend(
1762                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1763                    );
1764                components
1765                    .push(
1766                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1767                    );
1768                components
1769                    .extend(
1770                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1771                    );
1772                components
1773                    .push(
1774                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1775                    );
1776                components
1777                    .extend(
1778                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1779                    );
1780                components
1781                    .push(
1782                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1783                    );
1784                components
1785                    .extend(
1786                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1787                    );
1788                components
1789                    .push(
1790                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1791                    );
1792                components
1793                    .extend(
1794                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1795                    );
1796                components
1797                    .push(
1798                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1799                    );
1800                components
1801                    .extend(
1802                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1803                    );
1804                components
1805                    .push(
1806                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1807                    );
1808                components
1809                    .extend(
1810                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1811                    );
1812                components
1813                    .push(
1814                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1815                    );
1816                components
1817                    .extend(
1818                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1819                    );
1820                components
1821            }
1822            #[inline]
1823            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1824                [
1825                    <alloy::sol_types::sol_data::Uint<
1826                        256,
1827                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1828                        .0,
1829                    <alloy::sol_types::sol_data::Uint<
1830                        256,
1831                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1832                        .0,
1833                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1834                            &self.sigma0,
1835                        )
1836                        .0,
1837                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1838                            &self.sigma1,
1839                        )
1840                        .0,
1841                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1842                            &self.sigma2,
1843                        )
1844                        .0,
1845                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1846                            &self.sigma3,
1847                        )
1848                        .0,
1849                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1850                            &self.sigma4,
1851                        )
1852                        .0,
1853                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1854                            &self.q1,
1855                        )
1856                        .0,
1857                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1858                            &self.q2,
1859                        )
1860                        .0,
1861                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1862                            &self.q3,
1863                        )
1864                        .0,
1865                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1866                            &self.q4,
1867                        )
1868                        .0,
1869                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1870                            &self.qM12,
1871                        )
1872                        .0,
1873                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1874                            &self.qM34,
1875                        )
1876                        .0,
1877                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1878                            &self.qO,
1879                        )
1880                        .0,
1881                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1882                            &self.qC,
1883                        )
1884                        .0,
1885                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1886                            &self.qH1,
1887                        )
1888                        .0,
1889                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1890                            &self.qH2,
1891                        )
1892                        .0,
1893                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1894                            &self.qH3,
1895                        )
1896                        .0,
1897                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1898                            &self.qH4,
1899                        )
1900                        .0,
1901                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1902                            &self.qEcc,
1903                        )
1904                        .0,
1905                    <alloy::sol_types::sol_data::FixedBytes<
1906                        32,
1907                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1908                        .0,
1909                    <alloy::sol_types::sol_data::FixedBytes<
1910                        32,
1911                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1912                        .0,
1913                ]
1914                    .concat()
1915            }
1916        }
1917        #[automatically_derived]
1918        impl alloy_sol_types::EventTopic for VerifyingKey {
1919            #[inline]
1920            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1921                0usize
1922                    + <alloy::sol_types::sol_data::Uint<
1923                        256,
1924                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1925                        &rust.domainSize,
1926                    )
1927                    + <alloy::sol_types::sol_data::Uint<
1928                        256,
1929                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1930                        &rust.numInputs,
1931                    )
1932                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1933                        &rust.sigma0,
1934                    )
1935                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1936                        &rust.sigma1,
1937                    )
1938                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1939                        &rust.sigma2,
1940                    )
1941                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1942                        &rust.sigma3,
1943                    )
1944                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1945                        &rust.sigma4,
1946                    )
1947                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1948                        &rust.q1,
1949                    )
1950                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1951                        &rust.q2,
1952                    )
1953                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1954                        &rust.q3,
1955                    )
1956                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1957                        &rust.q4,
1958                    )
1959                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1960                        &rust.qM12,
1961                    )
1962                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1963                        &rust.qM34,
1964                    )
1965                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1966                        &rust.qO,
1967                    )
1968                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1969                        &rust.qC,
1970                    )
1971                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1972                        &rust.qH1,
1973                    )
1974                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1975                        &rust.qH2,
1976                    )
1977                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1978                        &rust.qH3,
1979                    )
1980                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1981                        &rust.qH4,
1982                    )
1983                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1984                        &rust.qEcc,
1985                    )
1986                    + <alloy::sol_types::sol_data::FixedBytes<
1987                        32,
1988                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1989                    + <alloy::sol_types::sol_data::FixedBytes<
1990                        32,
1991                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1992            }
1993            #[inline]
1994            fn encode_topic_preimage(
1995                rust: &Self::RustType,
1996                out: &mut alloy_sol_types::private::Vec<u8>,
1997            ) {
1998                out.reserve(
1999                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2000                );
2001                <alloy::sol_types::sol_data::Uint<
2002                    256,
2003                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2004                    &rust.domainSize,
2005                    out,
2006                );
2007                <alloy::sol_types::sol_data::Uint<
2008                    256,
2009                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2010                    &rust.numInputs,
2011                    out,
2012                );
2013                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2014                    &rust.sigma0,
2015                    out,
2016                );
2017                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2018                    &rust.sigma1,
2019                    out,
2020                );
2021                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2022                    &rust.sigma2,
2023                    out,
2024                );
2025                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2026                    &rust.sigma3,
2027                    out,
2028                );
2029                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2030                    &rust.sigma4,
2031                    out,
2032                );
2033                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2034                    &rust.q1,
2035                    out,
2036                );
2037                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2038                    &rust.q2,
2039                    out,
2040                );
2041                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2042                    &rust.q3,
2043                    out,
2044                );
2045                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2046                    &rust.q4,
2047                    out,
2048                );
2049                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2050                    &rust.qM12,
2051                    out,
2052                );
2053                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2054                    &rust.qM34,
2055                    out,
2056                );
2057                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2058                    &rust.qO,
2059                    out,
2060                );
2061                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2062                    &rust.qC,
2063                    out,
2064                );
2065                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2066                    &rust.qH1,
2067                    out,
2068                );
2069                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2070                    &rust.qH2,
2071                    out,
2072                );
2073                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2074                    &rust.qH3,
2075                    out,
2076                );
2077                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2078                    &rust.qH4,
2079                    out,
2080                );
2081                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2082                    &rust.qEcc,
2083                    out,
2084                );
2085                <alloy::sol_types::sol_data::FixedBytes<
2086                    32,
2087                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2088                    &rust.g2LSB,
2089                    out,
2090                );
2091                <alloy::sol_types::sol_data::FixedBytes<
2092                    32,
2093                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2094                    &rust.g2MSB,
2095                    out,
2096                );
2097            }
2098            #[inline]
2099            fn encode_topic(
2100                rust: &Self::RustType,
2101            ) -> alloy_sol_types::abi::token::WordToken {
2102                let mut out = alloy_sol_types::private::Vec::new();
2103                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2104                    rust,
2105                    &mut out,
2106                );
2107                alloy_sol_types::abi::token::WordToken(
2108                    alloy_sol_types::private::keccak256(out),
2109                )
2110            }
2111        }
2112    };
2113    use alloy::contract as alloy_contract;
2114    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2115
2116See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2117    #[inline]
2118    pub const fn new<
2119        P: alloy_contract::private::Provider<N>,
2120        N: alloy_contract::private::Network,
2121    >(
2122        address: alloy_sol_types::private::Address,
2123        __provider: P,
2124    ) -> IPlonkVerifierInstance<P, N> {
2125        IPlonkVerifierInstance::<P, N>::new(address, __provider)
2126    }
2127    /**A [`IPlonkVerifier`](self) instance.
2128
2129Contains type-safe methods for interacting with an on-chain instance of the
2130[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2131provider `P`.
2132
2133If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2134documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2135be used to deploy a new instance of the contract.
2136
2137See the [module-level documentation](self) for all the available methods.*/
2138    #[derive(Clone)]
2139    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2140        address: alloy_sol_types::private::Address,
2141        provider: P,
2142        _network: ::core::marker::PhantomData<N>,
2143    }
2144    #[automatically_derived]
2145    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2146        #[inline]
2147        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2148            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2149        }
2150    }
2151    /// Instantiation and getters/setters.
2152    impl<
2153        P: alloy_contract::private::Provider<N>,
2154        N: alloy_contract::private::Network,
2155    > IPlonkVerifierInstance<P, N> {
2156        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2157
2158See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2159        #[inline]
2160        pub const fn new(
2161            address: alloy_sol_types::private::Address,
2162            __provider: P,
2163        ) -> Self {
2164            Self {
2165                address,
2166                provider: __provider,
2167                _network: ::core::marker::PhantomData,
2168            }
2169        }
2170        /// Returns a reference to the address.
2171        #[inline]
2172        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2173            &self.address
2174        }
2175        /// Sets the address.
2176        #[inline]
2177        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2178            self.address = address;
2179        }
2180        /// Sets the address and returns `self`.
2181        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2182            self.set_address(address);
2183            self
2184        }
2185        /// Returns a reference to the provider.
2186        #[inline]
2187        pub const fn provider(&self) -> &P {
2188            &self.provider
2189        }
2190    }
2191    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2192        /// Clones the provider and returns a new instance with the cloned provider.
2193        #[inline]
2194        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2195            IPlonkVerifierInstance {
2196                address: self.address,
2197                provider: ::core::clone::Clone::clone(&self.provider),
2198                _network: ::core::marker::PhantomData,
2199            }
2200        }
2201    }
2202    /// Function calls.
2203    impl<
2204        P: alloy_contract::private::Provider<N>,
2205        N: alloy_contract::private::Network,
2206    > IPlonkVerifierInstance<P, N> {
2207        /// Creates a new call builder using this contract instance's provider and address.
2208        ///
2209        /// Note that the call can be any function call, not just those defined in this
2210        /// contract. Prefer using the other methods for building type-safe contract calls.
2211        pub fn call_builder<C: alloy_sol_types::SolCall>(
2212            &self,
2213            call: &C,
2214        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2215            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2216        }
2217    }
2218    /// Event filters.
2219    impl<
2220        P: alloy_contract::private::Provider<N>,
2221        N: alloy_contract::private::Network,
2222    > IPlonkVerifierInstance<P, N> {
2223        /// Creates a new event filter using this contract instance's provider and address.
2224        ///
2225        /// Note that the type can be any event, not just those defined in this contract.
2226        /// Prefer using the other methods for building type-safe event filters.
2227        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2228            &self,
2229        ) -> alloy_contract::Event<&P, E, N> {
2230            alloy_contract::Event::new_sol(&self.provider, &self.address)
2231        }
2232    }
2233}
2234///Module containing a contract's types and functions.
2235/**
2236
2237```solidity
2238library LightClient {
2239    struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2240    struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2241}
2242```*/
2243#[allow(
2244    non_camel_case_types,
2245    non_snake_case,
2246    clippy::pub_underscore_fields,
2247    clippy::style,
2248    clippy::empty_structs_with_brackets
2249)]
2250pub mod LightClient {
2251    use super::*;
2252    use alloy::sol_types as alloy_sol_types;
2253    #[derive(serde::Serialize, serde::Deserialize)]
2254    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2255    /**```solidity
2256struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2257```*/
2258    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2259    #[derive(Clone)]
2260    pub struct LightClientState {
2261        #[allow(missing_docs)]
2262        pub viewNum: u64,
2263        #[allow(missing_docs)]
2264        pub blockHeight: u64,
2265        #[allow(missing_docs)]
2266        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2267    }
2268    #[allow(
2269        non_camel_case_types,
2270        non_snake_case,
2271        clippy::pub_underscore_fields,
2272        clippy::style
2273    )]
2274    const _: () = {
2275        use alloy::sol_types as alloy_sol_types;
2276        #[doc(hidden)]
2277        #[allow(dead_code)]
2278        type UnderlyingSolTuple<'a> = (
2279            alloy::sol_types::sol_data::Uint<64>,
2280            alloy::sol_types::sol_data::Uint<64>,
2281            BN254::ScalarField,
2282        );
2283        #[doc(hidden)]
2284        type UnderlyingRustTuple<'a> = (
2285            u64,
2286            u64,
2287            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2288        );
2289        #[cfg(test)]
2290        #[allow(dead_code, unreachable_patterns)]
2291        fn _type_assertion(
2292            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2293        ) {
2294            match _t {
2295                alloy_sol_types::private::AssertTypeEq::<
2296                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2297                >(_) => {}
2298            }
2299        }
2300        #[automatically_derived]
2301        #[doc(hidden)]
2302        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2303            fn from(value: LightClientState) -> Self {
2304                (value.viewNum, value.blockHeight, value.blockCommRoot)
2305            }
2306        }
2307        #[automatically_derived]
2308        #[doc(hidden)]
2309        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2310            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2311                Self {
2312                    viewNum: tuple.0,
2313                    blockHeight: tuple.1,
2314                    blockCommRoot: tuple.2,
2315                }
2316            }
2317        }
2318        #[automatically_derived]
2319        impl alloy_sol_types::SolValue for LightClientState {
2320            type SolType = Self;
2321        }
2322        #[automatically_derived]
2323        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2324            #[inline]
2325            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2326                (
2327                    <alloy::sol_types::sol_data::Uint<
2328                        64,
2329                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2330                    <alloy::sol_types::sol_data::Uint<
2331                        64,
2332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2333                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2334                        &self.blockCommRoot,
2335                    ),
2336                )
2337            }
2338            #[inline]
2339            fn stv_abi_encoded_size(&self) -> usize {
2340                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2341                    return size;
2342                }
2343                let tuple = <UnderlyingRustTuple<
2344                    '_,
2345                > as ::core::convert::From<Self>>::from(self.clone());
2346                <UnderlyingSolTuple<
2347                    '_,
2348                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2349            }
2350            #[inline]
2351            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2352                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2353            }
2354            #[inline]
2355            fn stv_abi_encode_packed_to(
2356                &self,
2357                out: &mut alloy_sol_types::private::Vec<u8>,
2358            ) {
2359                let tuple = <UnderlyingRustTuple<
2360                    '_,
2361                > as ::core::convert::From<Self>>::from(self.clone());
2362                <UnderlyingSolTuple<
2363                    '_,
2364                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2365            }
2366            #[inline]
2367            fn stv_abi_packed_encoded_size(&self) -> usize {
2368                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2369                    return size;
2370                }
2371                let tuple = <UnderlyingRustTuple<
2372                    '_,
2373                > as ::core::convert::From<Self>>::from(self.clone());
2374                <UnderlyingSolTuple<
2375                    '_,
2376                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2377            }
2378        }
2379        #[automatically_derived]
2380        impl alloy_sol_types::SolType for LightClientState {
2381            type RustType = Self;
2382            type Token<'a> = <UnderlyingSolTuple<
2383                'a,
2384            > as alloy_sol_types::SolType>::Token<'a>;
2385            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2386            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2387                '_,
2388            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2389            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2390                '_,
2391            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2392            #[inline]
2393            fn valid_token(token: &Self::Token<'_>) -> bool {
2394                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2395            }
2396            #[inline]
2397            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2398                let tuple = <UnderlyingSolTuple<
2399                    '_,
2400                > as alloy_sol_types::SolType>::detokenize(token);
2401                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2402            }
2403        }
2404        #[automatically_derived]
2405        impl alloy_sol_types::SolStruct for LightClientState {
2406            const NAME: &'static str = "LightClientState";
2407            #[inline]
2408            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2409                alloy_sol_types::private::Cow::Borrowed(
2410                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2411                )
2412            }
2413            #[inline]
2414            fn eip712_components() -> alloy_sol_types::private::Vec<
2415                alloy_sol_types::private::Cow<'static, str>,
2416            > {
2417                alloy_sol_types::private::Vec::new()
2418            }
2419            #[inline]
2420            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2421                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2422            }
2423            #[inline]
2424            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2425                [
2426                    <alloy::sol_types::sol_data::Uint<
2427                        64,
2428                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2429                        .0,
2430                    <alloy::sol_types::sol_data::Uint<
2431                        64,
2432                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2433                        .0,
2434                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2435                            &self.blockCommRoot,
2436                        )
2437                        .0,
2438                ]
2439                    .concat()
2440            }
2441        }
2442        #[automatically_derived]
2443        impl alloy_sol_types::EventTopic for LightClientState {
2444            #[inline]
2445            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2446                0usize
2447                    + <alloy::sol_types::sol_data::Uint<
2448                        64,
2449                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2450                        &rust.viewNum,
2451                    )
2452                    + <alloy::sol_types::sol_data::Uint<
2453                        64,
2454                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2455                        &rust.blockHeight,
2456                    )
2457                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2458                        &rust.blockCommRoot,
2459                    )
2460            }
2461            #[inline]
2462            fn encode_topic_preimage(
2463                rust: &Self::RustType,
2464                out: &mut alloy_sol_types::private::Vec<u8>,
2465            ) {
2466                out.reserve(
2467                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2468                );
2469                <alloy::sol_types::sol_data::Uint<
2470                    64,
2471                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2472                    &rust.viewNum,
2473                    out,
2474                );
2475                <alloy::sol_types::sol_data::Uint<
2476                    64,
2477                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2478                    &rust.blockHeight,
2479                    out,
2480                );
2481                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2482                    &rust.blockCommRoot,
2483                    out,
2484                );
2485            }
2486            #[inline]
2487            fn encode_topic(
2488                rust: &Self::RustType,
2489            ) -> alloy_sol_types::abi::token::WordToken {
2490                let mut out = alloy_sol_types::private::Vec::new();
2491                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2492                    rust,
2493                    &mut out,
2494                );
2495                alloy_sol_types::abi::token::WordToken(
2496                    alloy_sol_types::private::keccak256(out),
2497                )
2498            }
2499        }
2500    };
2501    #[derive(serde::Serialize, serde::Deserialize)]
2502    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2503    /**```solidity
2504struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2505```*/
2506    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2507    #[derive(Clone)]
2508    pub struct StakeTableState {
2509        #[allow(missing_docs)]
2510        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2511        #[allow(missing_docs)]
2512        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2513        #[allow(missing_docs)]
2514        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2515        #[allow(missing_docs)]
2516        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2517    }
2518    #[allow(
2519        non_camel_case_types,
2520        non_snake_case,
2521        clippy::pub_underscore_fields,
2522        clippy::style
2523    )]
2524    const _: () = {
2525        use alloy::sol_types as alloy_sol_types;
2526        #[doc(hidden)]
2527        #[allow(dead_code)]
2528        type UnderlyingSolTuple<'a> = (
2529            alloy::sol_types::sol_data::Uint<256>,
2530            BN254::ScalarField,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533        );
2534        #[doc(hidden)]
2535        type UnderlyingRustTuple<'a> = (
2536            alloy::sol_types::private::primitives::aliases::U256,
2537            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540        );
2541        #[cfg(test)]
2542        #[allow(dead_code, unreachable_patterns)]
2543        fn _type_assertion(
2544            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2545        ) {
2546            match _t {
2547                alloy_sol_types::private::AssertTypeEq::<
2548                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2549                >(_) => {}
2550            }
2551        }
2552        #[automatically_derived]
2553        #[doc(hidden)]
2554        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2555            fn from(value: StakeTableState) -> Self {
2556                (
2557                    value.threshold,
2558                    value.blsKeyComm,
2559                    value.schnorrKeyComm,
2560                    value.amountComm,
2561                )
2562            }
2563        }
2564        #[automatically_derived]
2565        #[doc(hidden)]
2566        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2567            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2568                Self {
2569                    threshold: tuple.0,
2570                    blsKeyComm: tuple.1,
2571                    schnorrKeyComm: tuple.2,
2572                    amountComm: tuple.3,
2573                }
2574            }
2575        }
2576        #[automatically_derived]
2577        impl alloy_sol_types::SolValue for StakeTableState {
2578            type SolType = Self;
2579        }
2580        #[automatically_derived]
2581        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2582            #[inline]
2583            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2584                (
2585                    <alloy::sol_types::sol_data::Uint<
2586                        256,
2587                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2588                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2589                        &self.blsKeyComm,
2590                    ),
2591                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2592                        &self.schnorrKeyComm,
2593                    ),
2594                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2595                        &self.amountComm,
2596                    ),
2597                )
2598            }
2599            #[inline]
2600            fn stv_abi_encoded_size(&self) -> usize {
2601                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2602                    return size;
2603                }
2604                let tuple = <UnderlyingRustTuple<
2605                    '_,
2606                > as ::core::convert::From<Self>>::from(self.clone());
2607                <UnderlyingSolTuple<
2608                    '_,
2609                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2610            }
2611            #[inline]
2612            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2613                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2614            }
2615            #[inline]
2616            fn stv_abi_encode_packed_to(
2617                &self,
2618                out: &mut alloy_sol_types::private::Vec<u8>,
2619            ) {
2620                let tuple = <UnderlyingRustTuple<
2621                    '_,
2622                > as ::core::convert::From<Self>>::from(self.clone());
2623                <UnderlyingSolTuple<
2624                    '_,
2625                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2626            }
2627            #[inline]
2628            fn stv_abi_packed_encoded_size(&self) -> usize {
2629                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2630                    return size;
2631                }
2632                let tuple = <UnderlyingRustTuple<
2633                    '_,
2634                > as ::core::convert::From<Self>>::from(self.clone());
2635                <UnderlyingSolTuple<
2636                    '_,
2637                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2638            }
2639        }
2640        #[automatically_derived]
2641        impl alloy_sol_types::SolType for StakeTableState {
2642            type RustType = Self;
2643            type Token<'a> = <UnderlyingSolTuple<
2644                'a,
2645            > as alloy_sol_types::SolType>::Token<'a>;
2646            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2647            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2648                '_,
2649            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2650            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2651                '_,
2652            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2653            #[inline]
2654            fn valid_token(token: &Self::Token<'_>) -> bool {
2655                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2656            }
2657            #[inline]
2658            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2659                let tuple = <UnderlyingSolTuple<
2660                    '_,
2661                > as alloy_sol_types::SolType>::detokenize(token);
2662                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2663            }
2664        }
2665        #[automatically_derived]
2666        impl alloy_sol_types::SolStruct for StakeTableState {
2667            const NAME: &'static str = "StakeTableState";
2668            #[inline]
2669            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2670                alloy_sol_types::private::Cow::Borrowed(
2671                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2672                )
2673            }
2674            #[inline]
2675            fn eip712_components() -> alloy_sol_types::private::Vec<
2676                alloy_sol_types::private::Cow<'static, str>,
2677            > {
2678                alloy_sol_types::private::Vec::new()
2679            }
2680            #[inline]
2681            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2682                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2683            }
2684            #[inline]
2685            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2686                [
2687                    <alloy::sol_types::sol_data::Uint<
2688                        256,
2689                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2690                        .0,
2691                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2692                            &self.blsKeyComm,
2693                        )
2694                        .0,
2695                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2696                            &self.schnorrKeyComm,
2697                        )
2698                        .0,
2699                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2700                            &self.amountComm,
2701                        )
2702                        .0,
2703                ]
2704                    .concat()
2705            }
2706        }
2707        #[automatically_derived]
2708        impl alloy_sol_types::EventTopic for StakeTableState {
2709            #[inline]
2710            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2711                0usize
2712                    + <alloy::sol_types::sol_data::Uint<
2713                        256,
2714                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2715                        &rust.threshold,
2716                    )
2717                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2718                        &rust.blsKeyComm,
2719                    )
2720                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2721                        &rust.schnorrKeyComm,
2722                    )
2723                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2724                        &rust.amountComm,
2725                    )
2726            }
2727            #[inline]
2728            fn encode_topic_preimage(
2729                rust: &Self::RustType,
2730                out: &mut alloy_sol_types::private::Vec<u8>,
2731            ) {
2732                out.reserve(
2733                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2734                );
2735                <alloy::sol_types::sol_data::Uint<
2736                    256,
2737                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2738                    &rust.threshold,
2739                    out,
2740                );
2741                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2742                    &rust.blsKeyComm,
2743                    out,
2744                );
2745                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2746                    &rust.schnorrKeyComm,
2747                    out,
2748                );
2749                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2750                    &rust.amountComm,
2751                    out,
2752                );
2753            }
2754            #[inline]
2755            fn encode_topic(
2756                rust: &Self::RustType,
2757            ) -> alloy_sol_types::abi::token::WordToken {
2758                let mut out = alloy_sol_types::private::Vec::new();
2759                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2760                    rust,
2761                    &mut out,
2762                );
2763                alloy_sol_types::abi::token::WordToken(
2764                    alloy_sol_types::private::keccak256(out),
2765                )
2766            }
2767        }
2768    };
2769    use alloy::contract as alloy_contract;
2770    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2771
2772See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2773    #[inline]
2774    pub const fn new<
2775        P: alloy_contract::private::Provider<N>,
2776        N: alloy_contract::private::Network,
2777    >(
2778        address: alloy_sol_types::private::Address,
2779        __provider: P,
2780    ) -> LightClientInstance<P, N> {
2781        LightClientInstance::<P, N>::new(address, __provider)
2782    }
2783    /**A [`LightClient`](self) instance.
2784
2785Contains type-safe methods for interacting with an on-chain instance of the
2786[`LightClient`](self) contract located at a given `address`, using a given
2787provider `P`.
2788
2789If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2790documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2791be used to deploy a new instance of the contract.
2792
2793See the [module-level documentation](self) for all the available methods.*/
2794    #[derive(Clone)]
2795    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
2796        address: alloy_sol_types::private::Address,
2797        provider: P,
2798        _network: ::core::marker::PhantomData<N>,
2799    }
2800    #[automatically_derived]
2801    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
2802        #[inline]
2803        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2804            f.debug_tuple("LightClientInstance").field(&self.address).finish()
2805        }
2806    }
2807    /// Instantiation and getters/setters.
2808    impl<
2809        P: alloy_contract::private::Provider<N>,
2810        N: alloy_contract::private::Network,
2811    > LightClientInstance<P, N> {
2812        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
2813
2814See the [wrapper's documentation](`LightClientInstance`) for more details.*/
2815        #[inline]
2816        pub const fn new(
2817            address: alloy_sol_types::private::Address,
2818            __provider: P,
2819        ) -> Self {
2820            Self {
2821                address,
2822                provider: __provider,
2823                _network: ::core::marker::PhantomData,
2824            }
2825        }
2826        /// Returns a reference to the address.
2827        #[inline]
2828        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2829            &self.address
2830        }
2831        /// Sets the address.
2832        #[inline]
2833        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2834            self.address = address;
2835        }
2836        /// Sets the address and returns `self`.
2837        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2838            self.set_address(address);
2839            self
2840        }
2841        /// Returns a reference to the provider.
2842        #[inline]
2843        pub const fn provider(&self) -> &P {
2844            &self.provider
2845        }
2846    }
2847    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
2848        /// Clones the provider and returns a new instance with the cloned provider.
2849        #[inline]
2850        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
2851            LightClientInstance {
2852                address: self.address,
2853                provider: ::core::clone::Clone::clone(&self.provider),
2854                _network: ::core::marker::PhantomData,
2855            }
2856        }
2857    }
2858    /// Function calls.
2859    impl<
2860        P: alloy_contract::private::Provider<N>,
2861        N: alloy_contract::private::Network,
2862    > LightClientInstance<P, N> {
2863        /// Creates a new call builder using this contract instance's provider and address.
2864        ///
2865        /// Note that the call can be any function call, not just those defined in this
2866        /// contract. Prefer using the other methods for building type-safe contract calls.
2867        pub fn call_builder<C: alloy_sol_types::SolCall>(
2868            &self,
2869            call: &C,
2870        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2871            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2872        }
2873    }
2874    /// Event filters.
2875    impl<
2876        P: alloy_contract::private::Provider<N>,
2877        N: alloy_contract::private::Network,
2878    > LightClientInstance<P, N> {
2879        /// Creates a new event filter using this contract instance's provider and address.
2880        ///
2881        /// Note that the type can be any event, not just those defined in this contract.
2882        /// Prefer using the other methods for building type-safe event filters.
2883        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2884            &self,
2885        ) -> alloy_contract::Event<&P, E, N> {
2886            alloy_contract::Event::new_sol(&self.provider, &self.address)
2887        }
2888    }
2889}
2890/**
2891
2892Generated by the following Solidity interface...
2893```solidity
2894library BN254 {
2895    type BaseField is uint256;
2896    type ScalarField is uint256;
2897    struct G1Point {
2898        BaseField x;
2899        BaseField y;
2900    }
2901}
2902
2903library IPlonkVerifier {
2904    struct PlonkProof {
2905        BN254.G1Point wire0;
2906        BN254.G1Point wire1;
2907        BN254.G1Point wire2;
2908        BN254.G1Point wire3;
2909        BN254.G1Point wire4;
2910        BN254.G1Point prodPerm;
2911        BN254.G1Point split0;
2912        BN254.G1Point split1;
2913        BN254.G1Point split2;
2914        BN254.G1Point split3;
2915        BN254.G1Point split4;
2916        BN254.G1Point zeta;
2917        BN254.G1Point zetaOmega;
2918        BN254.ScalarField wireEval0;
2919        BN254.ScalarField wireEval1;
2920        BN254.ScalarField wireEval2;
2921        BN254.ScalarField wireEval3;
2922        BN254.ScalarField wireEval4;
2923        BN254.ScalarField sigmaEval0;
2924        BN254.ScalarField sigmaEval1;
2925        BN254.ScalarField sigmaEval2;
2926        BN254.ScalarField sigmaEval3;
2927        BN254.ScalarField prodPermZetaOmegaEval;
2928    }
2929    struct VerifyingKey {
2930        uint256 domainSize;
2931        uint256 numInputs;
2932        BN254.G1Point sigma0;
2933        BN254.G1Point sigma1;
2934        BN254.G1Point sigma2;
2935        BN254.G1Point sigma3;
2936        BN254.G1Point sigma4;
2937        BN254.G1Point q1;
2938        BN254.G1Point q2;
2939        BN254.G1Point q3;
2940        BN254.G1Point q4;
2941        BN254.G1Point qM12;
2942        BN254.G1Point qM34;
2943        BN254.G1Point qO;
2944        BN254.G1Point qC;
2945        BN254.G1Point qH1;
2946        BN254.G1Point qH2;
2947        BN254.G1Point qH3;
2948        BN254.G1Point qH4;
2949        BN254.G1Point qEcc;
2950        bytes32 g2LSB;
2951        bytes32 g2MSB;
2952    }
2953}
2954
2955library LightClient {
2956    struct LightClientState {
2957        uint64 viewNum;
2958        uint64 blockHeight;
2959        BN254.ScalarField blockCommRoot;
2960    }
2961    struct StakeTableState {
2962        uint256 threshold;
2963        BN254.ScalarField blsKeyComm;
2964        BN254.ScalarField schnorrKeyComm;
2965        BN254.ScalarField amountComm;
2966    }
2967}
2968
2969interface LightClientV2 {
2970    error AddressEmptyCode(address target);
2971    error DeprecatedApi();
2972    error ERC1967InvalidImplementation(address implementation);
2973    error ERC1967NonPayable();
2974    error FailedInnerCall();
2975    error InsufficientSnapshotHistory();
2976    error InvalidAddress();
2977    error InvalidArgs();
2978    error InvalidHotShotBlockForCommitmentCheck();
2979    error InvalidInitialization();
2980    error InvalidMaxStateHistory();
2981    error InvalidProof();
2982    error InvalidScalar();
2983    error MissingEpochRootUpdate();
2984    error NoChangeRequired();
2985    error NotInitializing();
2986    error OutdatedState();
2987    error OwnableInvalidOwner(address owner);
2988    error OwnableUnauthorizedAccount(address account);
2989    error OwnershipCannotBeRenounced();
2990    error ProverNotPermissioned();
2991    error UUPSUnauthorizedCallContext();
2992    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2993    error WrongStakeTableUsed();
2994
2995    event Initialized(uint64 version);
2996    event NewEpoch(uint64 epoch);
2997    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2998    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2999    event PermissionedProverNotRequired();
3000    event PermissionedProverRequired(address permissionedProver);
3001    event Upgrade(address implementation);
3002    event Upgraded(address indexed implementation);
3003
3004    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3005    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3006    function blocksPerEpoch() external view returns (uint64);
3007    function currentBlockNumber() external view returns (uint256);
3008    function currentEpoch() external view returns (uint64);
3009    function disablePermissionedProverMode() external;
3010    function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
3011    function epochStartBlock() external view returns (uint64);
3012    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3013    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3014    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3015    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3016    function getStateHistoryCount() external view returns (uint256);
3017    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3018    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3019    function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
3020    function isEpochRoot(uint64 blockHeight) external view returns (bool);
3021    function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
3022    function isPermissionedProverEnabled() external view returns (bool);
3023    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
3024    function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
3025    function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
3026    function owner() external view returns (address);
3027    function permissionedProver() external view returns (address);
3028    function proxiableUUID() external view returns (bytes32);
3029    function renounceOwnership() external;
3030    function setPermissionedProver(address prover) external;
3031    function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
3032    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3033    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3034    function stateHistoryFirstIndex() external view returns (uint64);
3035    function stateHistoryRetentionPeriod() external view returns (uint32);
3036    function transferOwnership(address newOwner) external;
3037    function updateEpochStartBlock(uint64 newEpochStartBlock) external;
3038    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3039    function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3040}
3041```
3042
3043...which was generated by the following JSON ABI:
3044```json
3045[
3046  {
3047    "type": "function",
3048    "name": "UPGRADE_INTERFACE_VERSION",
3049    "inputs": [],
3050    "outputs": [
3051      {
3052        "name": "",
3053        "type": "string",
3054        "internalType": "string"
3055      }
3056    ],
3057    "stateMutability": "view"
3058  },
3059  {
3060    "type": "function",
3061    "name": "_getVk",
3062    "inputs": [],
3063    "outputs": [
3064      {
3065        "name": "vk",
3066        "type": "tuple",
3067        "internalType": "struct IPlonkVerifier.VerifyingKey",
3068        "components": [
3069          {
3070            "name": "domainSize",
3071            "type": "uint256",
3072            "internalType": "uint256"
3073          },
3074          {
3075            "name": "numInputs",
3076            "type": "uint256",
3077            "internalType": "uint256"
3078          },
3079          {
3080            "name": "sigma0",
3081            "type": "tuple",
3082            "internalType": "struct BN254.G1Point",
3083            "components": [
3084              {
3085                "name": "x",
3086                "type": "uint256",
3087                "internalType": "BN254.BaseField"
3088              },
3089              {
3090                "name": "y",
3091                "type": "uint256",
3092                "internalType": "BN254.BaseField"
3093              }
3094            ]
3095          },
3096          {
3097            "name": "sigma1",
3098            "type": "tuple",
3099            "internalType": "struct BN254.G1Point",
3100            "components": [
3101              {
3102                "name": "x",
3103                "type": "uint256",
3104                "internalType": "BN254.BaseField"
3105              },
3106              {
3107                "name": "y",
3108                "type": "uint256",
3109                "internalType": "BN254.BaseField"
3110              }
3111            ]
3112          },
3113          {
3114            "name": "sigma2",
3115            "type": "tuple",
3116            "internalType": "struct BN254.G1Point",
3117            "components": [
3118              {
3119                "name": "x",
3120                "type": "uint256",
3121                "internalType": "BN254.BaseField"
3122              },
3123              {
3124                "name": "y",
3125                "type": "uint256",
3126                "internalType": "BN254.BaseField"
3127              }
3128            ]
3129          },
3130          {
3131            "name": "sigma3",
3132            "type": "tuple",
3133            "internalType": "struct BN254.G1Point",
3134            "components": [
3135              {
3136                "name": "x",
3137                "type": "uint256",
3138                "internalType": "BN254.BaseField"
3139              },
3140              {
3141                "name": "y",
3142                "type": "uint256",
3143                "internalType": "BN254.BaseField"
3144              }
3145            ]
3146          },
3147          {
3148            "name": "sigma4",
3149            "type": "tuple",
3150            "internalType": "struct BN254.G1Point",
3151            "components": [
3152              {
3153                "name": "x",
3154                "type": "uint256",
3155                "internalType": "BN254.BaseField"
3156              },
3157              {
3158                "name": "y",
3159                "type": "uint256",
3160                "internalType": "BN254.BaseField"
3161              }
3162            ]
3163          },
3164          {
3165            "name": "q1",
3166            "type": "tuple",
3167            "internalType": "struct BN254.G1Point",
3168            "components": [
3169              {
3170                "name": "x",
3171                "type": "uint256",
3172                "internalType": "BN254.BaseField"
3173              },
3174              {
3175                "name": "y",
3176                "type": "uint256",
3177                "internalType": "BN254.BaseField"
3178              }
3179            ]
3180          },
3181          {
3182            "name": "q2",
3183            "type": "tuple",
3184            "internalType": "struct BN254.G1Point",
3185            "components": [
3186              {
3187                "name": "x",
3188                "type": "uint256",
3189                "internalType": "BN254.BaseField"
3190              },
3191              {
3192                "name": "y",
3193                "type": "uint256",
3194                "internalType": "BN254.BaseField"
3195              }
3196            ]
3197          },
3198          {
3199            "name": "q3",
3200            "type": "tuple",
3201            "internalType": "struct BN254.G1Point",
3202            "components": [
3203              {
3204                "name": "x",
3205                "type": "uint256",
3206                "internalType": "BN254.BaseField"
3207              },
3208              {
3209                "name": "y",
3210                "type": "uint256",
3211                "internalType": "BN254.BaseField"
3212              }
3213            ]
3214          },
3215          {
3216            "name": "q4",
3217            "type": "tuple",
3218            "internalType": "struct BN254.G1Point",
3219            "components": [
3220              {
3221                "name": "x",
3222                "type": "uint256",
3223                "internalType": "BN254.BaseField"
3224              },
3225              {
3226                "name": "y",
3227                "type": "uint256",
3228                "internalType": "BN254.BaseField"
3229              }
3230            ]
3231          },
3232          {
3233            "name": "qM12",
3234            "type": "tuple",
3235            "internalType": "struct BN254.G1Point",
3236            "components": [
3237              {
3238                "name": "x",
3239                "type": "uint256",
3240                "internalType": "BN254.BaseField"
3241              },
3242              {
3243                "name": "y",
3244                "type": "uint256",
3245                "internalType": "BN254.BaseField"
3246              }
3247            ]
3248          },
3249          {
3250            "name": "qM34",
3251            "type": "tuple",
3252            "internalType": "struct BN254.G1Point",
3253            "components": [
3254              {
3255                "name": "x",
3256                "type": "uint256",
3257                "internalType": "BN254.BaseField"
3258              },
3259              {
3260                "name": "y",
3261                "type": "uint256",
3262                "internalType": "BN254.BaseField"
3263              }
3264            ]
3265          },
3266          {
3267            "name": "qO",
3268            "type": "tuple",
3269            "internalType": "struct BN254.G1Point",
3270            "components": [
3271              {
3272                "name": "x",
3273                "type": "uint256",
3274                "internalType": "BN254.BaseField"
3275              },
3276              {
3277                "name": "y",
3278                "type": "uint256",
3279                "internalType": "BN254.BaseField"
3280              }
3281            ]
3282          },
3283          {
3284            "name": "qC",
3285            "type": "tuple",
3286            "internalType": "struct BN254.G1Point",
3287            "components": [
3288              {
3289                "name": "x",
3290                "type": "uint256",
3291                "internalType": "BN254.BaseField"
3292              },
3293              {
3294                "name": "y",
3295                "type": "uint256",
3296                "internalType": "BN254.BaseField"
3297              }
3298            ]
3299          },
3300          {
3301            "name": "qH1",
3302            "type": "tuple",
3303            "internalType": "struct BN254.G1Point",
3304            "components": [
3305              {
3306                "name": "x",
3307                "type": "uint256",
3308                "internalType": "BN254.BaseField"
3309              },
3310              {
3311                "name": "y",
3312                "type": "uint256",
3313                "internalType": "BN254.BaseField"
3314              }
3315            ]
3316          },
3317          {
3318            "name": "qH2",
3319            "type": "tuple",
3320            "internalType": "struct BN254.G1Point",
3321            "components": [
3322              {
3323                "name": "x",
3324                "type": "uint256",
3325                "internalType": "BN254.BaseField"
3326              },
3327              {
3328                "name": "y",
3329                "type": "uint256",
3330                "internalType": "BN254.BaseField"
3331              }
3332            ]
3333          },
3334          {
3335            "name": "qH3",
3336            "type": "tuple",
3337            "internalType": "struct BN254.G1Point",
3338            "components": [
3339              {
3340                "name": "x",
3341                "type": "uint256",
3342                "internalType": "BN254.BaseField"
3343              },
3344              {
3345                "name": "y",
3346                "type": "uint256",
3347                "internalType": "BN254.BaseField"
3348              }
3349            ]
3350          },
3351          {
3352            "name": "qH4",
3353            "type": "tuple",
3354            "internalType": "struct BN254.G1Point",
3355            "components": [
3356              {
3357                "name": "x",
3358                "type": "uint256",
3359                "internalType": "BN254.BaseField"
3360              },
3361              {
3362                "name": "y",
3363                "type": "uint256",
3364                "internalType": "BN254.BaseField"
3365              }
3366            ]
3367          },
3368          {
3369            "name": "qEcc",
3370            "type": "tuple",
3371            "internalType": "struct BN254.G1Point",
3372            "components": [
3373              {
3374                "name": "x",
3375                "type": "uint256",
3376                "internalType": "BN254.BaseField"
3377              },
3378              {
3379                "name": "y",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              }
3383            ]
3384          },
3385          {
3386            "name": "g2LSB",
3387            "type": "bytes32",
3388            "internalType": "bytes32"
3389          },
3390          {
3391            "name": "g2MSB",
3392            "type": "bytes32",
3393            "internalType": "bytes32"
3394          }
3395        ]
3396      }
3397    ],
3398    "stateMutability": "pure"
3399  },
3400  {
3401    "type": "function",
3402    "name": "blocksPerEpoch",
3403    "inputs": [],
3404    "outputs": [
3405      {
3406        "name": "",
3407        "type": "uint64",
3408        "internalType": "uint64"
3409      }
3410    ],
3411    "stateMutability": "view"
3412  },
3413  {
3414    "type": "function",
3415    "name": "currentBlockNumber",
3416    "inputs": [],
3417    "outputs": [
3418      {
3419        "name": "",
3420        "type": "uint256",
3421        "internalType": "uint256"
3422      }
3423    ],
3424    "stateMutability": "view"
3425  },
3426  {
3427    "type": "function",
3428    "name": "currentEpoch",
3429    "inputs": [],
3430    "outputs": [
3431      {
3432        "name": "",
3433        "type": "uint64",
3434        "internalType": "uint64"
3435      }
3436    ],
3437    "stateMutability": "view"
3438  },
3439  {
3440    "type": "function",
3441    "name": "disablePermissionedProverMode",
3442    "inputs": [],
3443    "outputs": [],
3444    "stateMutability": "nonpayable"
3445  },
3446  {
3447    "type": "function",
3448    "name": "epochFromBlockNumber",
3449    "inputs": [
3450      {
3451        "name": "_blockNum",
3452        "type": "uint64",
3453        "internalType": "uint64"
3454      },
3455      {
3456        "name": "_blocksPerEpoch",
3457        "type": "uint64",
3458        "internalType": "uint64"
3459      }
3460    ],
3461    "outputs": [
3462      {
3463        "name": "",
3464        "type": "uint64",
3465        "internalType": "uint64"
3466      }
3467    ],
3468    "stateMutability": "pure"
3469  },
3470  {
3471    "type": "function",
3472    "name": "epochStartBlock",
3473    "inputs": [],
3474    "outputs": [
3475      {
3476        "name": "",
3477        "type": "uint64",
3478        "internalType": "uint64"
3479      }
3480    ],
3481    "stateMutability": "view"
3482  },
3483  {
3484    "type": "function",
3485    "name": "finalizedState",
3486    "inputs": [],
3487    "outputs": [
3488      {
3489        "name": "viewNum",
3490        "type": "uint64",
3491        "internalType": "uint64"
3492      },
3493      {
3494        "name": "blockHeight",
3495        "type": "uint64",
3496        "internalType": "uint64"
3497      },
3498      {
3499        "name": "blockCommRoot",
3500        "type": "uint256",
3501        "internalType": "BN254.ScalarField"
3502      }
3503    ],
3504    "stateMutability": "view"
3505  },
3506  {
3507    "type": "function",
3508    "name": "genesisStakeTableState",
3509    "inputs": [],
3510    "outputs": [
3511      {
3512        "name": "threshold",
3513        "type": "uint256",
3514        "internalType": "uint256"
3515      },
3516      {
3517        "name": "blsKeyComm",
3518        "type": "uint256",
3519        "internalType": "BN254.ScalarField"
3520      },
3521      {
3522        "name": "schnorrKeyComm",
3523        "type": "uint256",
3524        "internalType": "BN254.ScalarField"
3525      },
3526      {
3527        "name": "amountComm",
3528        "type": "uint256",
3529        "internalType": "BN254.ScalarField"
3530      }
3531    ],
3532    "stateMutability": "view"
3533  },
3534  {
3535    "type": "function",
3536    "name": "genesisState",
3537    "inputs": [],
3538    "outputs": [
3539      {
3540        "name": "viewNum",
3541        "type": "uint64",
3542        "internalType": "uint64"
3543      },
3544      {
3545        "name": "blockHeight",
3546        "type": "uint64",
3547        "internalType": "uint64"
3548      },
3549      {
3550        "name": "blockCommRoot",
3551        "type": "uint256",
3552        "internalType": "BN254.ScalarField"
3553      }
3554    ],
3555    "stateMutability": "view"
3556  },
3557  {
3558    "type": "function",
3559    "name": "getHotShotCommitment",
3560    "inputs": [
3561      {
3562        "name": "hotShotBlockHeight",
3563        "type": "uint256",
3564        "internalType": "uint256"
3565      }
3566    ],
3567    "outputs": [
3568      {
3569        "name": "hotShotBlockCommRoot",
3570        "type": "uint256",
3571        "internalType": "BN254.ScalarField"
3572      },
3573      {
3574        "name": "hotshotBlockHeight",
3575        "type": "uint64",
3576        "internalType": "uint64"
3577      }
3578    ],
3579    "stateMutability": "view"
3580  },
3581  {
3582    "type": "function",
3583    "name": "getStateHistoryCount",
3584    "inputs": [],
3585    "outputs": [
3586      {
3587        "name": "",
3588        "type": "uint256",
3589        "internalType": "uint256"
3590      }
3591    ],
3592    "stateMutability": "view"
3593  },
3594  {
3595    "type": "function",
3596    "name": "getVersion",
3597    "inputs": [],
3598    "outputs": [
3599      {
3600        "name": "majorVersion",
3601        "type": "uint8",
3602        "internalType": "uint8"
3603      },
3604      {
3605        "name": "minorVersion",
3606        "type": "uint8",
3607        "internalType": "uint8"
3608      },
3609      {
3610        "name": "patchVersion",
3611        "type": "uint8",
3612        "internalType": "uint8"
3613      }
3614    ],
3615    "stateMutability": "pure"
3616  },
3617  {
3618    "type": "function",
3619    "name": "initialize",
3620    "inputs": [
3621      {
3622        "name": "_genesis",
3623        "type": "tuple",
3624        "internalType": "struct LightClient.LightClientState",
3625        "components": [
3626          {
3627            "name": "viewNum",
3628            "type": "uint64",
3629            "internalType": "uint64"
3630          },
3631          {
3632            "name": "blockHeight",
3633            "type": "uint64",
3634            "internalType": "uint64"
3635          },
3636          {
3637            "name": "blockCommRoot",
3638            "type": "uint256",
3639            "internalType": "BN254.ScalarField"
3640          }
3641        ]
3642      },
3643      {
3644        "name": "_genesisStakeTableState",
3645        "type": "tuple",
3646        "internalType": "struct LightClient.StakeTableState",
3647        "components": [
3648          {
3649            "name": "threshold",
3650            "type": "uint256",
3651            "internalType": "uint256"
3652          },
3653          {
3654            "name": "blsKeyComm",
3655            "type": "uint256",
3656            "internalType": "BN254.ScalarField"
3657          },
3658          {
3659            "name": "schnorrKeyComm",
3660            "type": "uint256",
3661            "internalType": "BN254.ScalarField"
3662          },
3663          {
3664            "name": "amountComm",
3665            "type": "uint256",
3666            "internalType": "BN254.ScalarField"
3667          }
3668        ]
3669      },
3670      {
3671        "name": "_stateHistoryRetentionPeriod",
3672        "type": "uint32",
3673        "internalType": "uint32"
3674      },
3675      {
3676        "name": "owner",
3677        "type": "address",
3678        "internalType": "address"
3679      }
3680    ],
3681    "outputs": [],
3682    "stateMutability": "nonpayable"
3683  },
3684  {
3685    "type": "function",
3686    "name": "initializeV2",
3687    "inputs": [
3688      {
3689        "name": "_blocksPerEpoch",
3690        "type": "uint64",
3691        "internalType": "uint64"
3692      },
3693      {
3694        "name": "_epochStartBlock",
3695        "type": "uint64",
3696        "internalType": "uint64"
3697      }
3698    ],
3699    "outputs": [],
3700    "stateMutability": "nonpayable"
3701  },
3702  {
3703    "type": "function",
3704    "name": "isEpochRoot",
3705    "inputs": [
3706      {
3707        "name": "blockHeight",
3708        "type": "uint64",
3709        "internalType": "uint64"
3710      }
3711    ],
3712    "outputs": [
3713      {
3714        "name": "",
3715        "type": "bool",
3716        "internalType": "bool"
3717      }
3718    ],
3719    "stateMutability": "view"
3720  },
3721  {
3722    "type": "function",
3723    "name": "isGtEpochRoot",
3724    "inputs": [
3725      {
3726        "name": "blockHeight",
3727        "type": "uint64",
3728        "internalType": "uint64"
3729      }
3730    ],
3731    "outputs": [
3732      {
3733        "name": "",
3734        "type": "bool",
3735        "internalType": "bool"
3736      }
3737    ],
3738    "stateMutability": "view"
3739  },
3740  {
3741    "type": "function",
3742    "name": "isPermissionedProverEnabled",
3743    "inputs": [],
3744    "outputs": [
3745      {
3746        "name": "",
3747        "type": "bool",
3748        "internalType": "bool"
3749      }
3750    ],
3751    "stateMutability": "view"
3752  },
3753  {
3754    "type": "function",
3755    "name": "lagOverEscapeHatchThreshold",
3756    "inputs": [
3757      {
3758        "name": "blockNumber",
3759        "type": "uint256",
3760        "internalType": "uint256"
3761      },
3762      {
3763        "name": "blockThreshold",
3764        "type": "uint256",
3765        "internalType": "uint256"
3766      }
3767    ],
3768    "outputs": [
3769      {
3770        "name": "",
3771        "type": "bool",
3772        "internalType": "bool"
3773      }
3774    ],
3775    "stateMutability": "view"
3776  },
3777  {
3778    "type": "function",
3779    "name": "newFinalizedState",
3780    "inputs": [
3781      {
3782        "name": "",
3783        "type": "tuple",
3784        "internalType": "struct LightClient.LightClientState",
3785        "components": [
3786          {
3787            "name": "viewNum",
3788            "type": "uint64",
3789            "internalType": "uint64"
3790          },
3791          {
3792            "name": "blockHeight",
3793            "type": "uint64",
3794            "internalType": "uint64"
3795          },
3796          {
3797            "name": "blockCommRoot",
3798            "type": "uint256",
3799            "internalType": "BN254.ScalarField"
3800          }
3801        ]
3802      },
3803      {
3804        "name": "",
3805        "type": "tuple",
3806        "internalType": "struct IPlonkVerifier.PlonkProof",
3807        "components": [
3808          {
3809            "name": "wire0",
3810            "type": "tuple",
3811            "internalType": "struct BN254.G1Point",
3812            "components": [
3813              {
3814                "name": "x",
3815                "type": "uint256",
3816                "internalType": "BN254.BaseField"
3817              },
3818              {
3819                "name": "y",
3820                "type": "uint256",
3821                "internalType": "BN254.BaseField"
3822              }
3823            ]
3824          },
3825          {
3826            "name": "wire1",
3827            "type": "tuple",
3828            "internalType": "struct BN254.G1Point",
3829            "components": [
3830              {
3831                "name": "x",
3832                "type": "uint256",
3833                "internalType": "BN254.BaseField"
3834              },
3835              {
3836                "name": "y",
3837                "type": "uint256",
3838                "internalType": "BN254.BaseField"
3839              }
3840            ]
3841          },
3842          {
3843            "name": "wire2",
3844            "type": "tuple",
3845            "internalType": "struct BN254.G1Point",
3846            "components": [
3847              {
3848                "name": "x",
3849                "type": "uint256",
3850                "internalType": "BN254.BaseField"
3851              },
3852              {
3853                "name": "y",
3854                "type": "uint256",
3855                "internalType": "BN254.BaseField"
3856              }
3857            ]
3858          },
3859          {
3860            "name": "wire3",
3861            "type": "tuple",
3862            "internalType": "struct BN254.G1Point",
3863            "components": [
3864              {
3865                "name": "x",
3866                "type": "uint256",
3867                "internalType": "BN254.BaseField"
3868              },
3869              {
3870                "name": "y",
3871                "type": "uint256",
3872                "internalType": "BN254.BaseField"
3873              }
3874            ]
3875          },
3876          {
3877            "name": "wire4",
3878            "type": "tuple",
3879            "internalType": "struct BN254.G1Point",
3880            "components": [
3881              {
3882                "name": "x",
3883                "type": "uint256",
3884                "internalType": "BN254.BaseField"
3885              },
3886              {
3887                "name": "y",
3888                "type": "uint256",
3889                "internalType": "BN254.BaseField"
3890              }
3891            ]
3892          },
3893          {
3894            "name": "prodPerm",
3895            "type": "tuple",
3896            "internalType": "struct BN254.G1Point",
3897            "components": [
3898              {
3899                "name": "x",
3900                "type": "uint256",
3901                "internalType": "BN254.BaseField"
3902              },
3903              {
3904                "name": "y",
3905                "type": "uint256",
3906                "internalType": "BN254.BaseField"
3907              }
3908            ]
3909          },
3910          {
3911            "name": "split0",
3912            "type": "tuple",
3913            "internalType": "struct BN254.G1Point",
3914            "components": [
3915              {
3916                "name": "x",
3917                "type": "uint256",
3918                "internalType": "BN254.BaseField"
3919              },
3920              {
3921                "name": "y",
3922                "type": "uint256",
3923                "internalType": "BN254.BaseField"
3924              }
3925            ]
3926          },
3927          {
3928            "name": "split1",
3929            "type": "tuple",
3930            "internalType": "struct BN254.G1Point",
3931            "components": [
3932              {
3933                "name": "x",
3934                "type": "uint256",
3935                "internalType": "BN254.BaseField"
3936              },
3937              {
3938                "name": "y",
3939                "type": "uint256",
3940                "internalType": "BN254.BaseField"
3941              }
3942            ]
3943          },
3944          {
3945            "name": "split2",
3946            "type": "tuple",
3947            "internalType": "struct BN254.G1Point",
3948            "components": [
3949              {
3950                "name": "x",
3951                "type": "uint256",
3952                "internalType": "BN254.BaseField"
3953              },
3954              {
3955                "name": "y",
3956                "type": "uint256",
3957                "internalType": "BN254.BaseField"
3958              }
3959            ]
3960          },
3961          {
3962            "name": "split3",
3963            "type": "tuple",
3964            "internalType": "struct BN254.G1Point",
3965            "components": [
3966              {
3967                "name": "x",
3968                "type": "uint256",
3969                "internalType": "BN254.BaseField"
3970              },
3971              {
3972                "name": "y",
3973                "type": "uint256",
3974                "internalType": "BN254.BaseField"
3975              }
3976            ]
3977          },
3978          {
3979            "name": "split4",
3980            "type": "tuple",
3981            "internalType": "struct BN254.G1Point",
3982            "components": [
3983              {
3984                "name": "x",
3985                "type": "uint256",
3986                "internalType": "BN254.BaseField"
3987              },
3988              {
3989                "name": "y",
3990                "type": "uint256",
3991                "internalType": "BN254.BaseField"
3992              }
3993            ]
3994          },
3995          {
3996            "name": "zeta",
3997            "type": "tuple",
3998            "internalType": "struct BN254.G1Point",
3999            "components": [
4000              {
4001                "name": "x",
4002                "type": "uint256",
4003                "internalType": "BN254.BaseField"
4004              },
4005              {
4006                "name": "y",
4007                "type": "uint256",
4008                "internalType": "BN254.BaseField"
4009              }
4010            ]
4011          },
4012          {
4013            "name": "zetaOmega",
4014            "type": "tuple",
4015            "internalType": "struct BN254.G1Point",
4016            "components": [
4017              {
4018                "name": "x",
4019                "type": "uint256",
4020                "internalType": "BN254.BaseField"
4021              },
4022              {
4023                "name": "y",
4024                "type": "uint256",
4025                "internalType": "BN254.BaseField"
4026              }
4027            ]
4028          },
4029          {
4030            "name": "wireEval0",
4031            "type": "uint256",
4032            "internalType": "BN254.ScalarField"
4033          },
4034          {
4035            "name": "wireEval1",
4036            "type": "uint256",
4037            "internalType": "BN254.ScalarField"
4038          },
4039          {
4040            "name": "wireEval2",
4041            "type": "uint256",
4042            "internalType": "BN254.ScalarField"
4043          },
4044          {
4045            "name": "wireEval3",
4046            "type": "uint256",
4047            "internalType": "BN254.ScalarField"
4048          },
4049          {
4050            "name": "wireEval4",
4051            "type": "uint256",
4052            "internalType": "BN254.ScalarField"
4053          },
4054          {
4055            "name": "sigmaEval0",
4056            "type": "uint256",
4057            "internalType": "BN254.ScalarField"
4058          },
4059          {
4060            "name": "sigmaEval1",
4061            "type": "uint256",
4062            "internalType": "BN254.ScalarField"
4063          },
4064          {
4065            "name": "sigmaEval2",
4066            "type": "uint256",
4067            "internalType": "BN254.ScalarField"
4068          },
4069          {
4070            "name": "sigmaEval3",
4071            "type": "uint256",
4072            "internalType": "BN254.ScalarField"
4073          },
4074          {
4075            "name": "prodPermZetaOmegaEval",
4076            "type": "uint256",
4077            "internalType": "BN254.ScalarField"
4078          }
4079        ]
4080      }
4081    ],
4082    "outputs": [],
4083    "stateMutability": "pure"
4084  },
4085  {
4086    "type": "function",
4087    "name": "newFinalizedState",
4088    "inputs": [
4089      {
4090        "name": "newState",
4091        "type": "tuple",
4092        "internalType": "struct LightClient.LightClientState",
4093        "components": [
4094          {
4095            "name": "viewNum",
4096            "type": "uint64",
4097            "internalType": "uint64"
4098          },
4099          {
4100            "name": "blockHeight",
4101            "type": "uint64",
4102            "internalType": "uint64"
4103          },
4104          {
4105            "name": "blockCommRoot",
4106            "type": "uint256",
4107            "internalType": "BN254.ScalarField"
4108          }
4109        ]
4110      },
4111      {
4112        "name": "nextStakeTable",
4113        "type": "tuple",
4114        "internalType": "struct LightClient.StakeTableState",
4115        "components": [
4116          {
4117            "name": "threshold",
4118            "type": "uint256",
4119            "internalType": "uint256"
4120          },
4121          {
4122            "name": "blsKeyComm",
4123            "type": "uint256",
4124            "internalType": "BN254.ScalarField"
4125          },
4126          {
4127            "name": "schnorrKeyComm",
4128            "type": "uint256",
4129            "internalType": "BN254.ScalarField"
4130          },
4131          {
4132            "name": "amountComm",
4133            "type": "uint256",
4134            "internalType": "BN254.ScalarField"
4135          }
4136        ]
4137      },
4138      {
4139        "name": "proof",
4140        "type": "tuple",
4141        "internalType": "struct IPlonkVerifier.PlonkProof",
4142        "components": [
4143          {
4144            "name": "wire0",
4145            "type": "tuple",
4146            "internalType": "struct BN254.G1Point",
4147            "components": [
4148              {
4149                "name": "x",
4150                "type": "uint256",
4151                "internalType": "BN254.BaseField"
4152              },
4153              {
4154                "name": "y",
4155                "type": "uint256",
4156                "internalType": "BN254.BaseField"
4157              }
4158            ]
4159          },
4160          {
4161            "name": "wire1",
4162            "type": "tuple",
4163            "internalType": "struct BN254.G1Point",
4164            "components": [
4165              {
4166                "name": "x",
4167                "type": "uint256",
4168                "internalType": "BN254.BaseField"
4169              },
4170              {
4171                "name": "y",
4172                "type": "uint256",
4173                "internalType": "BN254.BaseField"
4174              }
4175            ]
4176          },
4177          {
4178            "name": "wire2",
4179            "type": "tuple",
4180            "internalType": "struct BN254.G1Point",
4181            "components": [
4182              {
4183                "name": "x",
4184                "type": "uint256",
4185                "internalType": "BN254.BaseField"
4186              },
4187              {
4188                "name": "y",
4189                "type": "uint256",
4190                "internalType": "BN254.BaseField"
4191              }
4192            ]
4193          },
4194          {
4195            "name": "wire3",
4196            "type": "tuple",
4197            "internalType": "struct BN254.G1Point",
4198            "components": [
4199              {
4200                "name": "x",
4201                "type": "uint256",
4202                "internalType": "BN254.BaseField"
4203              },
4204              {
4205                "name": "y",
4206                "type": "uint256",
4207                "internalType": "BN254.BaseField"
4208              }
4209            ]
4210          },
4211          {
4212            "name": "wire4",
4213            "type": "tuple",
4214            "internalType": "struct BN254.G1Point",
4215            "components": [
4216              {
4217                "name": "x",
4218                "type": "uint256",
4219                "internalType": "BN254.BaseField"
4220              },
4221              {
4222                "name": "y",
4223                "type": "uint256",
4224                "internalType": "BN254.BaseField"
4225              }
4226            ]
4227          },
4228          {
4229            "name": "prodPerm",
4230            "type": "tuple",
4231            "internalType": "struct BN254.G1Point",
4232            "components": [
4233              {
4234                "name": "x",
4235                "type": "uint256",
4236                "internalType": "BN254.BaseField"
4237              },
4238              {
4239                "name": "y",
4240                "type": "uint256",
4241                "internalType": "BN254.BaseField"
4242              }
4243            ]
4244          },
4245          {
4246            "name": "split0",
4247            "type": "tuple",
4248            "internalType": "struct BN254.G1Point",
4249            "components": [
4250              {
4251                "name": "x",
4252                "type": "uint256",
4253                "internalType": "BN254.BaseField"
4254              },
4255              {
4256                "name": "y",
4257                "type": "uint256",
4258                "internalType": "BN254.BaseField"
4259              }
4260            ]
4261          },
4262          {
4263            "name": "split1",
4264            "type": "tuple",
4265            "internalType": "struct BN254.G1Point",
4266            "components": [
4267              {
4268                "name": "x",
4269                "type": "uint256",
4270                "internalType": "BN254.BaseField"
4271              },
4272              {
4273                "name": "y",
4274                "type": "uint256",
4275                "internalType": "BN254.BaseField"
4276              }
4277            ]
4278          },
4279          {
4280            "name": "split2",
4281            "type": "tuple",
4282            "internalType": "struct BN254.G1Point",
4283            "components": [
4284              {
4285                "name": "x",
4286                "type": "uint256",
4287                "internalType": "BN254.BaseField"
4288              },
4289              {
4290                "name": "y",
4291                "type": "uint256",
4292                "internalType": "BN254.BaseField"
4293              }
4294            ]
4295          },
4296          {
4297            "name": "split3",
4298            "type": "tuple",
4299            "internalType": "struct BN254.G1Point",
4300            "components": [
4301              {
4302                "name": "x",
4303                "type": "uint256",
4304                "internalType": "BN254.BaseField"
4305              },
4306              {
4307                "name": "y",
4308                "type": "uint256",
4309                "internalType": "BN254.BaseField"
4310              }
4311            ]
4312          },
4313          {
4314            "name": "split4",
4315            "type": "tuple",
4316            "internalType": "struct BN254.G1Point",
4317            "components": [
4318              {
4319                "name": "x",
4320                "type": "uint256",
4321                "internalType": "BN254.BaseField"
4322              },
4323              {
4324                "name": "y",
4325                "type": "uint256",
4326                "internalType": "BN254.BaseField"
4327              }
4328            ]
4329          },
4330          {
4331            "name": "zeta",
4332            "type": "tuple",
4333            "internalType": "struct BN254.G1Point",
4334            "components": [
4335              {
4336                "name": "x",
4337                "type": "uint256",
4338                "internalType": "BN254.BaseField"
4339              },
4340              {
4341                "name": "y",
4342                "type": "uint256",
4343                "internalType": "BN254.BaseField"
4344              }
4345            ]
4346          },
4347          {
4348            "name": "zetaOmega",
4349            "type": "tuple",
4350            "internalType": "struct BN254.G1Point",
4351            "components": [
4352              {
4353                "name": "x",
4354                "type": "uint256",
4355                "internalType": "BN254.BaseField"
4356              },
4357              {
4358                "name": "y",
4359                "type": "uint256",
4360                "internalType": "BN254.BaseField"
4361              }
4362            ]
4363          },
4364          {
4365            "name": "wireEval0",
4366            "type": "uint256",
4367            "internalType": "BN254.ScalarField"
4368          },
4369          {
4370            "name": "wireEval1",
4371            "type": "uint256",
4372            "internalType": "BN254.ScalarField"
4373          },
4374          {
4375            "name": "wireEval2",
4376            "type": "uint256",
4377            "internalType": "BN254.ScalarField"
4378          },
4379          {
4380            "name": "wireEval3",
4381            "type": "uint256",
4382            "internalType": "BN254.ScalarField"
4383          },
4384          {
4385            "name": "wireEval4",
4386            "type": "uint256",
4387            "internalType": "BN254.ScalarField"
4388          },
4389          {
4390            "name": "sigmaEval0",
4391            "type": "uint256",
4392            "internalType": "BN254.ScalarField"
4393          },
4394          {
4395            "name": "sigmaEval1",
4396            "type": "uint256",
4397            "internalType": "BN254.ScalarField"
4398          },
4399          {
4400            "name": "sigmaEval2",
4401            "type": "uint256",
4402            "internalType": "BN254.ScalarField"
4403          },
4404          {
4405            "name": "sigmaEval3",
4406            "type": "uint256",
4407            "internalType": "BN254.ScalarField"
4408          },
4409          {
4410            "name": "prodPermZetaOmegaEval",
4411            "type": "uint256",
4412            "internalType": "BN254.ScalarField"
4413          }
4414        ]
4415      }
4416    ],
4417    "outputs": [],
4418    "stateMutability": "nonpayable"
4419  },
4420  {
4421    "type": "function",
4422    "name": "owner",
4423    "inputs": [],
4424    "outputs": [
4425      {
4426        "name": "",
4427        "type": "address",
4428        "internalType": "address"
4429      }
4430    ],
4431    "stateMutability": "view"
4432  },
4433  {
4434    "type": "function",
4435    "name": "permissionedProver",
4436    "inputs": [],
4437    "outputs": [
4438      {
4439        "name": "",
4440        "type": "address",
4441        "internalType": "address"
4442      }
4443    ],
4444    "stateMutability": "view"
4445  },
4446  {
4447    "type": "function",
4448    "name": "proxiableUUID",
4449    "inputs": [],
4450    "outputs": [
4451      {
4452        "name": "",
4453        "type": "bytes32",
4454        "internalType": "bytes32"
4455      }
4456    ],
4457    "stateMutability": "view"
4458  },
4459  {
4460    "type": "function",
4461    "name": "renounceOwnership",
4462    "inputs": [],
4463    "outputs": [],
4464    "stateMutability": "nonpayable"
4465  },
4466  {
4467    "type": "function",
4468    "name": "setPermissionedProver",
4469    "inputs": [
4470      {
4471        "name": "prover",
4472        "type": "address",
4473        "internalType": "address"
4474      }
4475    ],
4476    "outputs": [],
4477    "stateMutability": "nonpayable"
4478  },
4479  {
4480    "type": "function",
4481    "name": "setStateHistoryRetentionPeriod",
4482    "inputs": [
4483      {
4484        "name": "historySeconds",
4485        "type": "uint32",
4486        "internalType": "uint32"
4487      }
4488    ],
4489    "outputs": [],
4490    "stateMutability": "nonpayable"
4491  },
4492  {
4493    "type": "function",
4494    "name": "setstateHistoryRetentionPeriod",
4495    "inputs": [
4496      {
4497        "name": "historySeconds",
4498        "type": "uint32",
4499        "internalType": "uint32"
4500      }
4501    ],
4502    "outputs": [],
4503    "stateMutability": "nonpayable"
4504  },
4505  {
4506    "type": "function",
4507    "name": "stateHistoryCommitments",
4508    "inputs": [
4509      {
4510        "name": "",
4511        "type": "uint256",
4512        "internalType": "uint256"
4513      }
4514    ],
4515    "outputs": [
4516      {
4517        "name": "l1BlockHeight",
4518        "type": "uint64",
4519        "internalType": "uint64"
4520      },
4521      {
4522        "name": "l1BlockTimestamp",
4523        "type": "uint64",
4524        "internalType": "uint64"
4525      },
4526      {
4527        "name": "hotShotBlockHeight",
4528        "type": "uint64",
4529        "internalType": "uint64"
4530      },
4531      {
4532        "name": "hotShotBlockCommRoot",
4533        "type": "uint256",
4534        "internalType": "BN254.ScalarField"
4535      }
4536    ],
4537    "stateMutability": "view"
4538  },
4539  {
4540    "type": "function",
4541    "name": "stateHistoryFirstIndex",
4542    "inputs": [],
4543    "outputs": [
4544      {
4545        "name": "",
4546        "type": "uint64",
4547        "internalType": "uint64"
4548      }
4549    ],
4550    "stateMutability": "view"
4551  },
4552  {
4553    "type": "function",
4554    "name": "stateHistoryRetentionPeriod",
4555    "inputs": [],
4556    "outputs": [
4557      {
4558        "name": "",
4559        "type": "uint32",
4560        "internalType": "uint32"
4561      }
4562    ],
4563    "stateMutability": "view"
4564  },
4565  {
4566    "type": "function",
4567    "name": "transferOwnership",
4568    "inputs": [
4569      {
4570        "name": "newOwner",
4571        "type": "address",
4572        "internalType": "address"
4573      }
4574    ],
4575    "outputs": [],
4576    "stateMutability": "nonpayable"
4577  },
4578  {
4579    "type": "function",
4580    "name": "updateEpochStartBlock",
4581    "inputs": [
4582      {
4583        "name": "newEpochStartBlock",
4584        "type": "uint64",
4585        "internalType": "uint64"
4586      }
4587    ],
4588    "outputs": [],
4589    "stateMutability": "nonpayable"
4590  },
4591  {
4592    "type": "function",
4593    "name": "upgradeToAndCall",
4594    "inputs": [
4595      {
4596        "name": "newImplementation",
4597        "type": "address",
4598        "internalType": "address"
4599      },
4600      {
4601        "name": "data",
4602        "type": "bytes",
4603        "internalType": "bytes"
4604      }
4605    ],
4606    "outputs": [],
4607    "stateMutability": "payable"
4608  },
4609  {
4610    "type": "function",
4611    "name": "votingStakeTableState",
4612    "inputs": [],
4613    "outputs": [
4614      {
4615        "name": "threshold",
4616        "type": "uint256",
4617        "internalType": "uint256"
4618      },
4619      {
4620        "name": "blsKeyComm",
4621        "type": "uint256",
4622        "internalType": "BN254.ScalarField"
4623      },
4624      {
4625        "name": "schnorrKeyComm",
4626        "type": "uint256",
4627        "internalType": "BN254.ScalarField"
4628      },
4629      {
4630        "name": "amountComm",
4631        "type": "uint256",
4632        "internalType": "BN254.ScalarField"
4633      }
4634    ],
4635    "stateMutability": "view"
4636  },
4637  {
4638    "type": "event",
4639    "name": "Initialized",
4640    "inputs": [
4641      {
4642        "name": "version",
4643        "type": "uint64",
4644        "indexed": false,
4645        "internalType": "uint64"
4646      }
4647    ],
4648    "anonymous": false
4649  },
4650  {
4651    "type": "event",
4652    "name": "NewEpoch",
4653    "inputs": [
4654      {
4655        "name": "epoch",
4656        "type": "uint64",
4657        "indexed": false,
4658        "internalType": "uint64"
4659      }
4660    ],
4661    "anonymous": false
4662  },
4663  {
4664    "type": "event",
4665    "name": "NewState",
4666    "inputs": [
4667      {
4668        "name": "viewNum",
4669        "type": "uint64",
4670        "indexed": true,
4671        "internalType": "uint64"
4672      },
4673      {
4674        "name": "blockHeight",
4675        "type": "uint64",
4676        "indexed": true,
4677        "internalType": "uint64"
4678      },
4679      {
4680        "name": "blockCommRoot",
4681        "type": "uint256",
4682        "indexed": false,
4683        "internalType": "BN254.ScalarField"
4684      }
4685    ],
4686    "anonymous": false
4687  },
4688  {
4689    "type": "event",
4690    "name": "OwnershipTransferred",
4691    "inputs": [
4692      {
4693        "name": "previousOwner",
4694        "type": "address",
4695        "indexed": true,
4696        "internalType": "address"
4697      },
4698      {
4699        "name": "newOwner",
4700        "type": "address",
4701        "indexed": true,
4702        "internalType": "address"
4703      }
4704    ],
4705    "anonymous": false
4706  },
4707  {
4708    "type": "event",
4709    "name": "PermissionedProverNotRequired",
4710    "inputs": [],
4711    "anonymous": false
4712  },
4713  {
4714    "type": "event",
4715    "name": "PermissionedProverRequired",
4716    "inputs": [
4717      {
4718        "name": "permissionedProver",
4719        "type": "address",
4720        "indexed": false,
4721        "internalType": "address"
4722      }
4723    ],
4724    "anonymous": false
4725  },
4726  {
4727    "type": "event",
4728    "name": "Upgrade",
4729    "inputs": [
4730      {
4731        "name": "implementation",
4732        "type": "address",
4733        "indexed": false,
4734        "internalType": "address"
4735      }
4736    ],
4737    "anonymous": false
4738  },
4739  {
4740    "type": "event",
4741    "name": "Upgraded",
4742    "inputs": [
4743      {
4744        "name": "implementation",
4745        "type": "address",
4746        "indexed": true,
4747        "internalType": "address"
4748      }
4749    ],
4750    "anonymous": false
4751  },
4752  {
4753    "type": "error",
4754    "name": "AddressEmptyCode",
4755    "inputs": [
4756      {
4757        "name": "target",
4758        "type": "address",
4759        "internalType": "address"
4760      }
4761    ]
4762  },
4763  {
4764    "type": "error",
4765    "name": "DeprecatedApi",
4766    "inputs": []
4767  },
4768  {
4769    "type": "error",
4770    "name": "ERC1967InvalidImplementation",
4771    "inputs": [
4772      {
4773        "name": "implementation",
4774        "type": "address",
4775        "internalType": "address"
4776      }
4777    ]
4778  },
4779  {
4780    "type": "error",
4781    "name": "ERC1967NonPayable",
4782    "inputs": []
4783  },
4784  {
4785    "type": "error",
4786    "name": "FailedInnerCall",
4787    "inputs": []
4788  },
4789  {
4790    "type": "error",
4791    "name": "InsufficientSnapshotHistory",
4792    "inputs": []
4793  },
4794  {
4795    "type": "error",
4796    "name": "InvalidAddress",
4797    "inputs": []
4798  },
4799  {
4800    "type": "error",
4801    "name": "InvalidArgs",
4802    "inputs": []
4803  },
4804  {
4805    "type": "error",
4806    "name": "InvalidHotShotBlockForCommitmentCheck",
4807    "inputs": []
4808  },
4809  {
4810    "type": "error",
4811    "name": "InvalidInitialization",
4812    "inputs": []
4813  },
4814  {
4815    "type": "error",
4816    "name": "InvalidMaxStateHistory",
4817    "inputs": []
4818  },
4819  {
4820    "type": "error",
4821    "name": "InvalidProof",
4822    "inputs": []
4823  },
4824  {
4825    "type": "error",
4826    "name": "InvalidScalar",
4827    "inputs": []
4828  },
4829  {
4830    "type": "error",
4831    "name": "MissingEpochRootUpdate",
4832    "inputs": []
4833  },
4834  {
4835    "type": "error",
4836    "name": "NoChangeRequired",
4837    "inputs": []
4838  },
4839  {
4840    "type": "error",
4841    "name": "NotInitializing",
4842    "inputs": []
4843  },
4844  {
4845    "type": "error",
4846    "name": "OutdatedState",
4847    "inputs": []
4848  },
4849  {
4850    "type": "error",
4851    "name": "OwnableInvalidOwner",
4852    "inputs": [
4853      {
4854        "name": "owner",
4855        "type": "address",
4856        "internalType": "address"
4857      }
4858    ]
4859  },
4860  {
4861    "type": "error",
4862    "name": "OwnableUnauthorizedAccount",
4863    "inputs": [
4864      {
4865        "name": "account",
4866        "type": "address",
4867        "internalType": "address"
4868      }
4869    ]
4870  },
4871  {
4872    "type": "error",
4873    "name": "OwnershipCannotBeRenounced",
4874    "inputs": []
4875  },
4876  {
4877    "type": "error",
4878    "name": "ProverNotPermissioned",
4879    "inputs": []
4880  },
4881  {
4882    "type": "error",
4883    "name": "UUPSUnauthorizedCallContext",
4884    "inputs": []
4885  },
4886  {
4887    "type": "error",
4888    "name": "UUPSUnsupportedProxiableUUID",
4889    "inputs": [
4890      {
4891        "name": "slot",
4892        "type": "bytes32",
4893        "internalType": "bytes32"
4894      }
4895    ]
4896  },
4897  {
4898    "type": "error",
4899    "name": "WrongStakeTableUsed",
4900    "inputs": []
4901  }
4902]
4903```*/
4904#[allow(
4905    non_camel_case_types,
4906    non_snake_case,
4907    clippy::pub_underscore_fields,
4908    clippy::style,
4909    clippy::empty_structs_with_brackets
4910)]
4911pub mod LightClientV2 {
4912    use super::*;
4913    use alloy::sol_types as alloy_sol_types;
4914    /// The creation / init bytecode of the contract.
4915    ///
4916    /// ```text
4917    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b6080516134586100f95f395f8181611b3f01528181611b680152611ce501526134585ff3fe608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4918    /// ```
4919    #[rustfmt::skip]
4920    #[allow(clippy::all)]
4921    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4922        b"`\xA0`@R0`\x80R4\x80\x15a\0\x13W__\xFD[Pa\0\x1Ca\0!V[a\0\xD3V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80Th\x01\0\0\0\0\0\0\0\0\x90\x04`\xFF\x16\x15a\0qW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80T`\x01`\x01`@\x1B\x03\x90\x81\x16\x14a\0\xD0W\x80T`\x01`\x01`@\x1B\x03\x19\x16`\x01`\x01`@\x1B\x03\x90\x81\x17\x82U`@Q\x90\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PV[`\x80Qa4Xa\0\xF9_9_\x81\x81a\x1B?\x01R\x81\x81a\x1Bh\x01Ra\x1C\xE5\x01Ra4X_\xF3\xFE`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[a\x08LV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,>V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)|V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)|V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'NV[a\x0EfV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x97V[a\x13\x17V[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xF7W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08[W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\x9Da$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x91V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xCBV[a\t\x87\x91\x90a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\n\xF5a\x14\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0E\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12bW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\xAB\x83\x85a\x0F\x91V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x13(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\x90P[\x81a\x14:W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14:W\x86`\t\x82\x81T\x81\x10a\x13\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x9CV[a\x15\x11a$\x9BV[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1B\xBAWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1B\xAE_Q` a4,_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xE0a\x14\xAEV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08AV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x1F\xBD\x83a3\xEBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\"\x82\x82a#\x1FV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a.\xA8W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n+Wa\n+a.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xDE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra3\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4923    );
4924    /// The runtime bytecode of the contract, as deployed on the network.
4925    ///
4926    /// ```text
4927    ///0x608060405260043610610207575f3560e01c8063715018a6116101135780639fdb54a71161009d578063d24d933d1161006d578063d24d933d146106f9578063e030330114610728578063f068205414610747578063f2fde38b14610766578063f9e50d1914610785575f5ffd5b80639fdb54a714610610578063ad3cb1cc14610665578063b33bc491146106a2578063c23b9e9e146106c1575f5ffd5b80638584d23f116100e35780638584d23f1461053b5780638da5cb5b1461057757806390c14390146105b357806396c1ca61146105d25780639baa3cc9146105f1575f5ffd5b8063715018a6146104d5578063757c37ad146104e95780637667180814610508578063826e41fc1461051c575f5ffd5b8063300c89dd11610194578063426d319411610164578063426d31941461045a578063433dba9f1461047b5780634f1ef2861461049a57806352d1902d146104ad57806369cc6a04146104c1575f5ffd5b8063300c89dd146103c2578063313df7b1146103e1578063378ec23b146104185780633ed55b7b14610434575f5ffd5b806312173c2c116101da57806312173c2c146102f6578063167ac618146103175780632063d4f71461033657806325297427146103555780632f79889d14610384575f5ffd5b8063013fa5fc1461020b57806302b592f31461022c5780630625e19b146102895780630d8e6e2c146102cb575b5f5ffd5b348015610216575f5ffd5b5061022a610225366004612735565b610799565b005b348015610237575f5ffd5b5061024b61024636600461274e565b61084c565b60405161028094939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610294575f5ffd5b50600b54600c54600d54600e546102ab9392919084565b604080519485526020850193909352918301526060820152608001610280565b3480156102d6575f5ffd5b5060408051600281525f6020820181905291810191909152606001610280565b348015610301575f5ffd5b5061030a610895565b6040516102809190612765565b348015610322575f5ffd5b5061022a61033136600461297c565b6108aa565b348015610341575f5ffd5b5061022a610350366004612c3e565b610921565b348015610360575f5ffd5b5061037461036f36600461297c565b61093a565b6040519015158152602001610280565b34801561038f575f5ffd5b506008546103aa90600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610280565b3480156103cd575f5ffd5b506103746103dc36600461297c565b61099c565b3480156103ec575f5ffd5b50600854610400906001600160a01b031681565b6040516001600160a01b039091168152602001610280565b348015610423575f5ffd5b50435b604051908152602001610280565b34801561043f575f5ffd5b50600a546103aa90600160401b90046001600160401b031681565b348015610465575f5ffd5b505f546001546002546003546102ab9392919084565b348015610486575f5ffd5b5061022a610495366004612c85565b610a31565b61022a6104a8366004612c9e565b610a45565b3480156104b8575f5ffd5b50610426610a64565b3480156104cc575f5ffd5b5061022a610a7f565b3480156104e0575f5ffd5b5061022a610aed565b3480156104f4575f5ffd5b5061022a610503366004612da1565b610b0e565b348015610513575f5ffd5b506103aa610e41565b348015610527575f5ffd5b506008546001600160a01b03161515610374565b348015610546575f5ffd5b5061055a61055536600461274e565b610e66565b604080519283526001600160401b03909116602083015201610280565b348015610582575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610400565b3480156105be575f5ffd5b506103aa6105cd366004612de5565b610f91565b3480156105dd575f5ffd5b5061022a6105ec366004612c85565b611000565b3480156105fc575f5ffd5b5061022a61060b366004612e0d565b611089565b34801561061b575f5ffd5b5060065460075461063f916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610280565b348015610670575f5ffd5b50610695604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102809190612e62565b3480156106ad575f5ffd5b5061022a6106bc366004612de5565b6111ab565b3480156106cc575f5ffd5b506008546106e490600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610280565b348015610704575f5ffd5b5060045460055461063f916001600160401b0380821692600160401b909204169083565b348015610733575f5ffd5b50610374610742366004612e97565b611317565b348015610752575f5ffd5b50600a546103aa906001600160401b031681565b348015610771575f5ffd5b5061022a610780366004612735565b61146f565b348015610790575f5ffd5b50600954610426565b6107a16114ae565b6001600160a01b0381166107c85760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036107f75760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061085b575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61089d61249b565b6108a5611509565b905090565b6108b26114ae565b600a80546fffffffffffffffff0000000000000000198116600160401b6001600160401b038581168202928317948590556108f894919091048116928116911617610f91565b600a60106101000a8154816001600160401b0302191690836001600160401b0316021790555050565b604051634e405c8d60e01b815260040160405180910390fd5b5f6001600160401b038216158061095a5750600a546001600160401b0316155b1561096657505f919050565b600a546001600160401b031661097d836005612ecb565b6109879190612efe565b6001600160401b03161592915050565b919050565b5f6001600160401b03821615806109bc5750600a546001600160401b0316155b156109c857505f919050565b600a546109de906001600160401b031683612efe565b6001600160401b03161580610a2b5750600a54610a06906005906001600160401b0316612f2b565b600a546001600160401b0391821691610a20911684612efe565b6001600160401b0316115b92915050565b610a396114ae565b610a4281611000565b50565b610a4d611b34565b610a5682611bd8565b610a608282611c19565b5050565b5f610a6d611cda565b505f51602061342c5f395f51905f5290565b610a876114ae565b6008546001600160a01b031615610ad257600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b610af56114ae565b6040516317d5c96560e11b815260040160405180910390fd5b6008546001600160a01b031615158015610b3357506008546001600160a01b03163314155b15610b51576040516301474c8f60e71b815260040160405180910390fd5b60065483516001600160401b039182169116111580610b8a575060065460208401516001600160401b03600160401b9092048216911611155b15610ba85760405163051c46ef60e01b815260040160405180910390fd5b610bb58360400151611d23565b610bc28260200151611d23565b610bcf8260400151611d23565b610bdc8260600151611d23565b5f610be5610e41565b6020850151600a549192505f91610c0591906001600160401b0316610f91565b600a549091506001600160401b03600160801b909104811690821610610c5057610c32856020015161099c565b15610c505760405163080ae8d960e01b815260040160405180910390fd5b600a546001600160401b03600160801b90910481169082161115610d03576002610c7a8383612f2b565b6001600160401b031610610ca15760405163080ae8d960e01b815260040160405180910390fd5b610cac826001612ecb565b6001600160401b0316816001600160401b0316148015610ce55750600654610ce390600160401b90046001600160401b031661093a565b155b15610d035760405163080ae8d960e01b815260040160405180910390fd5b610d0e858585611d64565b84516006805460208801516001600160401b03908116600160401b026001600160801b0319909216938116939093171790556040860151600755600a54600160801b9004811690821610801590610d6d5750610d6d856020015161093a565b15610dd7578351600b556020840151600c556040840151600d556060840151600e557f31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b610dbb826001612ecb565b6040516001600160401b03909116815260200160405180910390a15b610de2434287611edb565b84602001516001600160401b0316855f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae68760400151604051610e3291815260200190565b60405180910390a35050505050565b600654600a545f916108a5916001600160401b03600160401b90920482169116610f91565b600980545f91829190610e7a600183612f4a565b81548110610e8a57610e8a612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03168410610ec957604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610f8a578460098281548110610ef957610ef9612f5d565b5f918252602090912060029091020154600160801b90046001600160401b03161115610f825760098181548110610f3257610f32612f5d565b905f5260205f2090600202016001015460098281548110610f5557610f55612f5d565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610edd565b5050915091565b5f816001600160401b03165f03610fa957505f610a2b565b826001600160401b03165f03610fc157506001610a2b565b610fcb8284612efe565b6001600160401b03165f03610feb57610fe48284612f71565b9050610a2b565b610ff58284612f71565b610fe4906001612ecb565b6110086114ae565b610e108163ffffffff16108061102757506301e133808163ffffffff16115b80611045575060085463ffffffff600160a01b909104811690821611155b15611063576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f811580156110cd5750825b90505f826001600160401b031660011480156110e85750303b155b9050811580156110f6575080155b156111145760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff19166001178555831561113e57845460ff60401b1916600160401b1785555b611147866120c4565b61114f6120d5565b61115a8989896120dd565b83156111a057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6111b36114ae565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805460029190600160401b900460ff16806111fc575080546001600160401b03808416911610155b1561121a5760405163f92ee8a960e01b815260040160405180910390fd5b805468ffffffffffffffffff19166001600160401b0380841691909117600160401b178255600590851611611262576040516350dd03f760e11b815260040160405180910390fd5b5f54600b55600154600c55600254600d55600354600e55600a80546001600160401b03858116600160401b026001600160801b0319909216908716171790556112ab8385610f91565b600a805467ffffffffffffffff60801b1916600160801b6001600160401b0393841602179055815460ff60401b1916825560405190831681527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a150505050565b6009545f9043841180611328575080155b806113725750600854600980549091600160c01b90046001600160401b031690811061135657611356612f5d565b5f9182526020909120600290910201546001600160401b031684105b156113905760405163b0b4387760e01b815260040160405180910390fd5b5f808061139e600185612f4a565b90505b8161143a57600854600160c01b90046001600160401b0316811061143a5786600982815481106113d3576113d3612f5d565b5f9182526020909120600290910201546001600160401b03161161142857600191506009818154811061140857611408612f5d565b5f9182526020909120600290910201546001600160401b0316925061143a565b8061143281612f9e565b9150506113a1565b816114585760405163b0b4387760e01b815260040160405180910390fd5b856114638489612f4a565b11979650505050505050565b6114776114ae565b6001600160a01b0381166114a557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610a4281612209565b336114e07f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b031614610aeb5760405163118cdaa760e01b815233600482015260240161149c565b61151161249b565b621000008152600b60208201527f26867ee58aaf860fc9e0e3a78666ffc51f3ba1ad8ae001c196830c55b5af0b8c6040820151527f091230adb753f82815151277060cc56b546bb2e950a0de19ed061ec68c071a906020604083015101527f02a509a06d8c56f83f204688ff6e42eac6e3cbdd063b0971a3af953e81badbb66060820151527f06f43ed2b9cece35d1201abc13ffdaea35560cf0f1446277138ce812b9ad9f396020606083015101527f1a588c99ad88f789c87722b061bb5535daa0abcc1dc6d176d7fea51e5d80b9266080820151527f2062b995e61a6ab8aab6cd6e7520b879d84f965ab1f094c104f0c1213b28038b6020608083015101527f21a2fd766a0cebecfdbfdfe56139a1bbd9aec15e2e35be8ef01934a0ec43868560a0820151527f20fe500ac7d1aa7820db8c6f7f9d509e3b2e88731e3a12dd65f06f43ca930da0602060a083015101527f0ab53d1285c7f4819b3ff6e1ddada6bf2515d34bbaf61186c6a04be47dfd65a360c0820151527f0b80a9878082cdfdd9fcc16bb33fa424c0ad66b81949bf642153d3c7ad082f22602060c083015101527f1b900f8e5f8e8064a5888a1bd796b54a2652fc02034fe4b6e6fc8d6650f7453b60e0820151527ecca258a8832c64d1f8e1721a78fc25b13d29adbb81e35a79fc2f49f8902786602060e083015101527f0d1d3348d642e6f2e9739d735d8c723676dbaefdcbb4e96641defa353d26ebb3610100820151527f14fe9d6a335104e7491ca6d5086113e6b0f52946960d726664667bd58539d41e602061010083015101527f1da94364440c4e3fb8af2d363cdefa4edda437579e1b056a16a5e9a11dffa2ab610120820151527f0a077bd307ed31222db55cb0128bafce5e22557b57f5ac915359c50296cb5c77602061012083015101527f28ff80b133d989235c7129dea54469b780ac4717449290067e7c9a7d5be7dbd5610140820151527f1c0fc22eef23b50a2ddc553f9fc1b61fd8c57a58ca321a829c7ec255f757b3a6602061014083015101527e3c4e21e5dfba62a5b1702fb0ef234bfe95a77701a456882350526d140243f5610160820151527f06012db82876ba33e6e8f80a51013662e56c4abc86a7d85c272e19a6d7f57d0b602061016083015101527f16d5247dbdeae1df70093e5ee77272959661e0fbabda431777fa729f5b532f44610180820151527e8d9ee00f799cf00608b082d03b9de5a42b8126c35fbfbd1e602108df10e0e3602061018083015101527f2f526c6981643ff6f6e9d2b5a921e06cf95f274629b5a145bd552b7fda6a87006101a0820151527f2fe7108fd4e24231f3dadb6e09072e106fca0694fe39dff96557a88221a89a5060206101a083015101527f26a3568598a6981e6325f4816736e381087b5b0e4b27ef364d8ae1e29fe9df996101c0820151527f1db81cdf82a9ec99f3c9716df22d38317e6bb84fc57d2f0e7b2bc8a0569f7cc460206101c083015101527e99888088e11de6ed086c99b9bba986d908df5b0c5007680d97567d485719946101e0820151527f1f91576eadffff932b6e54bab022f93f6fec3e5b7674d0006bc5f2223527a34860206101e083015101527e68b3c117ee7e84d6b670b6af20197759ec80d34f3c594328663031e9cd7e02610200820151527f1c3832e24877346680e7047bae2cfcd51fafe3e7caf199e9dfc8e8f10c2b6943602061020083015101527f164cdd9ad5d4e96e109073e8e735cd4ac64aba6ddaa244da6701369c8cba5daf610220820151527f16c41e647f1ab0d45c891544299e4ef9c004d8bc0a3bf096dc38ce8ed90c0d67602061022083015101527f134ba7a9567ba20e1f35959ee8c2cd688d3a962bb1797e8ab8e511768de0ce83610240820151527f02e4d286c9435f7bd94c1a2c78b99966d06faca1ae45de78149950a4fefcd6e7602061024083015101527f039a0b2d920f29e35cb2a9e1ec6cc22ac1d482af45e47399724a0745d542e839610260820151527f15ac2658bfdd2227aebf8e20935935a648819e1dcea807da1c838abfa7896c63602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b306001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161480611bba57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316611bae5f51602061342c5f395f51905f52546001600160a01b031690565b6001600160a01b031614155b15610aeb5760405163703e46dd60e11b815260040160405180910390fd5b611be06114ae565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610841565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611c73575060408051601f3d908101601f19168201909252611c7091810190612fb3565b60015b611c9b57604051634c9c8ce360e01b81526001600160a01b038316600482015260240161149c565b5f51602061342c5f395f51905f528114611ccb57604051632a87526960e21b81526004810182905260240161149c565b611cd58383612279565b505050565b306001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001614610aeb5760405163703e46dd60e11b815260040160405180910390fd5b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f0000001811080610a605760405163016c173360e21b815260040160405180910390fd5b5f611d6d610895565b9050611d77612700565b84516001600160401b0390811682526020808701805183169184019190915260408088015190840152600c546060840152600d546080840152600e5460a0840152600b5460c0840152600a549051600160401b9091048216911610801590611de75750611de7856020015161093a565b15611e1957602084015160e0820152604084015161010082015260608401516101208201528351610140820152611e3d565b600c5460e0820152600d54610100820152600e54610120820152600b546101408201525b60405163fc8660c760e01b815273ffffffffffffffffffffffffffffffffffffffff9063fc8660c790611e78908590859088906004016131ac565b602060405180830381865af4158015611e93573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611eb791906133cc565b611ed4576040516309bde33960e01b815260040160405180910390fd5b5050505050565b60095415801590611f50575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b0316908110611f1b57611f1b612f5d565b5f918252602090912060029091020154611f4590600160401b90046001600160401b031684612f2b565b6001600160401b0316115b15611fe357600854600980549091600160c01b90046001600160401b0316908110611f7d57611f7d612f5d565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b0316906018611fbd836133eb565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b6120cc6122ce565b610a4281612317565b610aeb6122ce565b82516001600160401b0316151580612101575060208301516001600160401b031615155b8061210e57506020820151155b8061211b57506040820151155b8061212857506060820151155b8061213257508151155b806121445750610e108163ffffffff16105b8061215857506301e133808163ffffffff16115b15612176576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b6122828261231f565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a28051156122c657611cd58282612382565b610a606123f4565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff16610aeb57604051631afcd79f60e31b815260040160405180910390fd5b6114776122ce565b806001600160a01b03163b5f0361235457604051634c9c8ce360e01b81526001600160a01b038216600482015260240161149c565b5f51602061342c5f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b03168460405161239e9190613415565b5f60405180830381855af49150503d805f81146123d6576040519150601f19603f3d011682016040523d82523d5f602084013e6123db565b606091505b50915091506123eb858383612413565b95945050505050565b3415610aeb5760405163b398979f60e01b815260040160405180910390fd5b6060826124285761242382612472565b61246b565b815115801561243f57506001600160a01b0384163b155b1561246857604051639996b31560e01b81526001600160a01b038516600482015260240161149c565b50805b9392505050565b8051156124825780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f81526020016124ce60405180604001604052805f81526020015f81525090565b81526020016124ee60405180604001604052805f81526020015f81525090565b815260200161250e60405180604001604052805f81526020015f81525090565b815260200161252e60405180604001604052805f81526020015f81525090565b815260200161254e60405180604001604052805f81526020015f81525090565b815260200161256e60405180604001604052805f81526020015f81525090565b815260200161258e60405180604001604052805f81526020015f81525090565b81526020016125ae60405180604001604052805f81526020015f81525090565b81526020016125ce60405180604001604052805f81526020015f81525090565b81526020016125ee60405180604001604052805f81526020015f81525090565b815260200161260e60405180604001604052805f81526020015f81525090565b815260200161262e60405180604001604052805f81526020015f81525090565b815260200161264e60405180604001604052805f81526020015f81525090565b815260200161266e60405180604001604052805f81526020015f81525090565b815260200161268e60405180604001604052805f81526020015f81525090565b81526020016126ae60405180604001604052805f81526020015f81525090565b81526020016126ce60405180604001604052805f81526020015f81525090565b81526020016126ee60405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b604051806101600160405280600b906020820280368337509192915050565b80356001600160a01b0381168114610997575f5ffd5b5f60208284031215612745575f5ffd5b61246b8261271f565b5f6020828403121561275e575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151612797604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b80356001600160401b0381168114610997575f5ffd5b5f6020828403121561298c575f5ffd5b61246b82612966565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156129cc576129cc612995565b60405290565b604051601f8201601f191681016001600160401b03811182821017156129fa576129fa612995565b604052919050565b5f60608284031215612a12575f5ffd5b604051606081016001600160401b0381118282101715612a3457612a34612995565b604052905080612a4383612966565b8152612a5160208401612966565b6020820152604092830135920191909152919050565b5f60408284031215612a77575f5ffd5b604080519081016001600160401b0381118282101715612a9957612a99612995565b604052823581526020928301359281019290925250919050565b5f6104808284031215612ac4575f5ffd5b612acc6129a9565b9050612ad88383612a67565b8152612ae78360408401612a67565b6020820152612af98360808401612a67565b6040820152612b0b8360c08401612a67565b6060820152612b1e836101008401612a67565b6080820152612b31836101408401612a67565b60a0820152612b44836101808401612a67565b60c0820152612b57836101c08401612a67565b60e0820152612b6a836102008401612a67565b610100820152612b7e836102408401612a67565b610120820152612b92836102808401612a67565b610140820152612ba6836102c08401612a67565b610160820152612bba836103008401612a67565b6101808201526103408201356101a08201526103608201356101c08201526103808201356101e08201526103a08201356102008201526103c08201356102208201526103e08201356102408201526104008201356102608201526104208201356102808201526104408201356102a0820152610460909101356102c0820152919050565b5f5f6104e08385031215612c50575f5ffd5b612c5a8484612a02565b9150612c698460608501612ab3565b90509250929050565b803563ffffffff81168114610997575f5ffd5b5f60208284031215612c95575f5ffd5b61246b82612c72565b5f5f60408385031215612caf575f5ffd5b612cb88361271f565b915060208301356001600160401b03811115612cd2575f5ffd5b8301601f81018513612ce2575f5ffd5b80356001600160401b03811115612cfb57612cfb612995565b612d0e601f8201601f19166020016129d2565b818152866020838501011115612d22575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b5f60808284031215612d51575f5ffd5b604051608081016001600160401b0381118282101715612d7357612d73612995565b6040908152833582526020808501359083015283810135908201526060928301359281019290925250919050565b5f5f5f6105608486031215612db4575f5ffd5b612dbe8585612a02565b9250612dcd8560608601612d41565b9150612ddc8560e08601612ab3565b90509250925092565b5f5f60408385031215612df6575f5ffd5b612dff83612966565b9150612c6960208401612966565b5f5f5f5f6101208587031215612e21575f5ffd5b612e2b8686612a02565b9350612e3a8660608701612d41565b9250612e4860e08601612c72565b9150612e57610100860161271f565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612ea8575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b6001600160401b038181168382160190811115610a2b57610a2b612eb7565b634e487b7160e01b5f52601260045260245ffd5b5f6001600160401b03831680612f1657612f16612eea565b806001600160401b0384160691505092915050565b6001600160401b038281168282160390811115610a2b57610a2b612eb7565b81810381811115610a2b57610a2b612eb7565b634e487b7160e01b5f52603260045260245ffd5b5f6001600160401b03831680612f8957612f89612eea565b806001600160401b0384160491505092915050565b5f81612fac57612fac612eb7565b505f190190565b5f60208284031215612fc3575f5ffd5b5051919050565b805f5b600b811015612fec578151845260209384019390910190600101612fcd565b50505050565b61300782825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610ae082019050845182526020850151602083015260408501516131de604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e08301526133b6610500830185612fca565b6133c4610660830184612ff2565b949350505050565b5f602082840312156133dc575f5ffd5b8151801515811461246b575f5ffd5b5f6001600160401b0382166001600160401b03810361340c5761340c612eb7565b60010192915050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4928    /// ```
4929    #[rustfmt::skip]
4930    #[allow(clippy::all)]
4931    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4932        b"`\x80`@R`\x046\x10a\x02\x07W_5`\xE0\x1C\x80cqP\x18\xA6\x11a\x01\x13W\x80c\x9F\xDBT\xA7\x11a\0\x9DW\x80c\xD2M\x93=\x11a\0mW\x80c\xD2M\x93=\x14a\x06\xF9W\x80c\xE003\x01\x14a\x07(W\x80c\xF0h T\x14a\x07GW\x80c\xF2\xFD\xE3\x8B\x14a\x07fW\x80c\xF9\xE5\r\x19\x14a\x07\x85W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x06\x10W\x80c\xAD<\xB1\xCC\x14a\x06eW\x80c\xB3;\xC4\x91\x14a\x06\xA2W\x80c\xC2;\x9E\x9E\x14a\x06\xC1W__\xFD[\x80c\x85\x84\xD2?\x11a\0\xE3W\x80c\x85\x84\xD2?\x14a\x05;W\x80c\x8D\xA5\xCB[\x14a\x05wW\x80c\x90\xC1C\x90\x14a\x05\xB3W\x80c\x96\xC1\xCAa\x14a\x05\xD2W\x80c\x9B\xAA<\xC9\x14a\x05\xF1W__\xFD[\x80cqP\x18\xA6\x14a\x04\xD5W\x80cu|7\xAD\x14a\x04\xE9W\x80cvg\x18\x08\x14a\x05\x08W\x80c\x82nA\xFC\x14a\x05\x1CW__\xFD[\x80c0\x0C\x89\xDD\x11a\x01\x94W\x80cBm1\x94\x11a\x01dW\x80cBm1\x94\x14a\x04ZW\x80cC=\xBA\x9F\x14a\x04{W\x80cO\x1E\xF2\x86\x14a\x04\x9AW\x80cR\xD1\x90-\x14a\x04\xADW\x80ci\xCCj\x04\x14a\x04\xC1W__\xFD[\x80c0\x0C\x89\xDD\x14a\x03\xC2W\x80c1=\xF7\xB1\x14a\x03\xE1W\x80c7\x8E\xC2;\x14a\x04\x18W\x80c>\xD5[{\x14a\x044W__\xFD[\x80c\x12\x17<,\x11a\x01\xDAW\x80c\x12\x17<,\x14a\x02\xF6W\x80c\x16z\xC6\x18\x14a\x03\x17W\x80c c\xD4\xF7\x14a\x036W\x80c%)t'\x14a\x03UW\x80c/y\x88\x9D\x14a\x03\x84W__\xFD[\x80c\x01?\xA5\xFC\x14a\x02\x0BW\x80c\x02\xB5\x92\xF3\x14a\x02,W\x80c\x06%\xE1\x9B\x14a\x02\x89W\x80c\r\x8En,\x14a\x02\xCBW[__\xFD[4\x80\x15a\x02\x16W__\xFD[Pa\x02*a\x02%6`\x04a'5V[a\x07\x99V[\0[4\x80\x15a\x027W__\xFD[Pa\x02Ka\x02F6`\x04a'NV[a\x08LV[`@Qa\x02\x80\x94\x93\x92\x91\x90`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x84\x01R\x92\x16`@\x82\x01R``\x81\x01\x91\x90\x91R`\x80\x01\x90V[`@Q\x80\x91\x03\x90\xF3[4\x80\x15a\x02\x94W__\xFD[P`\x0BT`\x0CT`\rT`\x0ETa\x02\xAB\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x02\x80V[4\x80\x15a\x02\xD6W__\xFD[P`@\x80Q`\x02\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x02\x80V[4\x80\x15a\x03\x01W__\xFD[Pa\x03\na\x08\x95V[`@Qa\x02\x80\x91\x90a'eV[4\x80\x15a\x03\"W__\xFD[Pa\x02*a\x0316`\x04a)|V[a\x08\xAAV[4\x80\x15a\x03AW__\xFD[Pa\x02*a\x03P6`\x04a,>V[a\t!V[4\x80\x15a\x03`W__\xFD[Pa\x03ta\x03o6`\x04a)|V[a\t:V[`@Q\x90\x15\x15\x81R` \x01a\x02\x80V[4\x80\x15a\x03\x8FW__\xFD[P`\x08Ta\x03\xAA\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x03\xCDW__\xFD[Pa\x03ta\x03\xDC6`\x04a)|V[a\t\x9CV[4\x80\x15a\x03\xECW__\xFD[P`\x08Ta\x04\0\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x04#W__\xFD[PC[`@Q\x90\x81R` \x01a\x02\x80V[4\x80\x15a\x04?W__\xFD[P`\nTa\x03\xAA\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x04eW__\xFD[P_T`\x01T`\x02T`\x03Ta\x02\xAB\x93\x92\x91\x90\x84V[4\x80\x15a\x04\x86W__\xFD[Pa\x02*a\x04\x956`\x04a,\x85V[a\n1V[a\x02*a\x04\xA86`\x04a,\x9EV[a\nEV[4\x80\x15a\x04\xB8W__\xFD[Pa\x04&a\ndV[4\x80\x15a\x04\xCCW__\xFD[Pa\x02*a\n\x7FV[4\x80\x15a\x04\xE0W__\xFD[Pa\x02*a\n\xEDV[4\x80\x15a\x04\xF4W__\xFD[Pa\x02*a\x05\x036`\x04a-\xA1V[a\x0B\x0EV[4\x80\x15a\x05\x13W__\xFD[Pa\x03\xAAa\x0EAV[4\x80\x15a\x05'W__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15a\x03tV[4\x80\x15a\x05FW__\xFD[Pa\x05Za\x05U6`\x04a'NV[a\x0EfV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x02\x80V[4\x80\x15a\x05\x82W__\xFD[P\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16a\x04\0V[4\x80\x15a\x05\xBEW__\xFD[Pa\x03\xAAa\x05\xCD6`\x04a-\xE5V[a\x0F\x91V[4\x80\x15a\x05\xDDW__\xFD[Pa\x02*a\x05\xEC6`\x04a,\x85V[a\x10\0V[4\x80\x15a\x05\xFCW__\xFD[Pa\x02*a\x06\x0B6`\x04a.\rV[a\x10\x89V[4\x80\x15a\x06\x1BW__\xFD[P`\x06T`\x07Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[`@\x80Q`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x93\x90\x92\x16` \x84\x01R\x90\x82\x01R``\x01a\x02\x80V[4\x80\x15a\x06pW__\xFD[Pa\x06\x95`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x02\x80\x91\x90a.bV[4\x80\x15a\x06\xADW__\xFD[Pa\x02*a\x06\xBC6`\x04a-\xE5V[a\x11\xABV[4\x80\x15a\x06\xCCW__\xFD[P`\x08Ta\x06\xE4\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x02\x80V[4\x80\x15a\x07\x04W__\xFD[P`\x04T`\x05Ta\x06?\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x073W__\xFD[Pa\x03ta\x07B6`\x04a.\x97V[a\x13\x17V[4\x80\x15a\x07RW__\xFD[P`\nTa\x03\xAA\x90`\x01`\x01`@\x1B\x03\x16\x81V[4\x80\x15a\x07qW__\xFD[Pa\x02*a\x07\x806`\x04a'5V[a\x14oV[4\x80\x15a\x07\x90W__\xFD[P`\tTa\x04&V[a\x07\xA1a\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x07\xC8W`@Qc\xE6\xC4${`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x90\x81\x16\x90\x82\x16\x03a\x07\xF7W`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x81\x17\x90\x91U`@Q\x90\x81R\x7F\x80\x17\xBB\x88\x7F\xDF\x8F\xCAC\x14\xA9\xD4\x0Fns\xB3\xB8\x10\x02\xD6~\\\xFA\x85\xD8\x81s\xAFj\xA4`r\x90` \x01[`@Q\x80\x91\x03\x90\xA1PV[`\t\x81\x81T\x81\x10a\x08[W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x08\x9Da$\x9BV[a\x08\xA5a\x15\tV[\x90P\x90V[a\x08\xB2a\x14\xAEV[`\n\x80To\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\0\0\0\0\0\0\0\0\x19\x81\x16`\x01`@\x1B`\x01`\x01`@\x1B\x03\x85\x81\x16\x82\x02\x92\x83\x17\x94\x85\x90Ua\x08\xF8\x94\x91\x90\x91\x04\x81\x16\x92\x81\x16\x91\x16\x17a\x0F\x91V[`\n`\x10a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPPV[`@QcN@\\\x8D`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\tZWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\tfWP_\x91\x90PV[`\nT`\x01`\x01`@\x1B\x03\x16a\t}\x83`\x05a.\xCBV[a\t\x87\x91\x90a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x92\x91PPV[\x91\x90PV[_`\x01`\x01`@\x1B\x03\x82\x16\x15\x80a\t\xBCWP`\nT`\x01`\x01`@\x1B\x03\x16\x15[\x15a\t\xC8WP_\x91\x90PV[`\nTa\t\xDE\x90`\x01`\x01`@\x1B\x03\x16\x83a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x15\x80a\n+WP`\nTa\n\x06\x90`\x05\x90`\x01`\x01`@\x1B\x03\x16a/+V[`\nT`\x01`\x01`@\x1B\x03\x91\x82\x16\x91a\n \x91\x16\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16\x11[\x92\x91PPV[a\n9a\x14\xAEV[a\nB\x81a\x10\0V[PV[a\nMa\x1B4V[a\nV\x82a\x1B\xD8V[a\n`\x82\x82a\x1C\x19V[PPV[_a\nma\x1C\xDAV[P_Q` a4,_9_Q\x90_R\x90V[a\n\x87a\x14\xAEV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\n\xD2W`\x08\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16\x90U`@Q\x7F\x9A_W\xDE\x85m\xD6h\xC5M\xD9^\\U\xDF\x93C!q\xCB\xCAI\xA8wmV \xEAY\xC0$P\x90_\x90\xA1V[`@Qc\xA8c\xAE\xC9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[V[a\n\xF5a\x14\xAEV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x0B3WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x0BQW`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x83Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x0B\x8AWP`\x06T` \x84\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x0B\xA8W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0B\xB5\x83`@\x01Qa\x1D#V[a\x0B\xC2\x82` \x01Qa\x1D#V[a\x0B\xCF\x82`@\x01Qa\x1D#V[a\x0B\xDC\x82``\x01Qa\x1D#V[_a\x0B\xE5a\x0EAV[` \x85\x01Q`\nT\x91\x92P_\x91a\x0C\x05\x91\x90`\x01`\x01`@\x1B\x03\x16a\x0F\x91V[`\nT\x90\x91P`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x10a\x0CPWa\x0C2\x85` \x01Qa\t\x9CV[\x15a\x0CPW`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\nT`\x01`\x01`@\x1B\x03`\x01`\x80\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15a\r\x03W`\x02a\x0Cz\x83\x83a/+V[`\x01`\x01`@\x1B\x03\x16\x10a\x0C\xA1W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xAC\x82`\x01a.\xCBV[`\x01`\x01`@\x1B\x03\x16\x81`\x01`\x01`@\x1B\x03\x16\x14\x80\x15a\x0C\xE5WP`\x06Ta\x0C\xE3\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16a\t:V[\x15[\x15a\r\x03W`@Qc\x08\n\xE8\xD9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x0E\x85\x85\x85a\x1DdV[\x84Q`\x06\x80T` \x88\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x81\x16\x93\x90\x93\x17\x17\x90U`@\x86\x01Q`\x07U`\nT`\x01`\x80\x1B\x90\x04\x81\x16\x90\x82\x16\x10\x80\x15\x90a\rmWPa\rm\x85` \x01Qa\t:V[\x15a\r\xD7W\x83Q`\x0BU` \x84\x01Q`\x0CU`@\x84\x01Q`\rU``\x84\x01Q`\x0EU\x7F1\xEA\xBD\x90\x99\xFD\xB2]\xAC\xDD\xD2\x06\xAB\xFF\x871\x1EU4A\xFC\x9D\x0F\xCD\xEF \x10b\xD7\xE7\x07\x1Ba\r\xBB\x82`\x01a.\xCBV[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01`@Q\x80\x91\x03\x90\xA1[a\r\xE2CB\x87a\x1E\xDBV[\x84` \x01Q`\x01`\x01`@\x1B\x03\x16\x85_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x87`@\x01Q`@Qa\x0E2\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPPPPV[`\x06T`\nT_\x91a\x08\xA5\x91`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16a\x0F\x91V[`\t\x80T_\x91\x82\x91\x90a\x0Ez`\x01\x83a/JV[\x81T\x81\x10a\x0E\x8AWa\x0E\x8Aa/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\x0E\xC9W`@Qc\x18V\xA4\x99`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16[\x81\x81\x10\x15a\x0F\x8AW\x84`\t\x82\x81T\x81\x10a\x0E\xF9Wa\x0E\xF9a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0F\x82W`\t\x81\x81T\x81\x10a\x0F2Wa\x0F2a/]V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\x0FUWa\x0FUa/]V[\x90_R` _ \x90`\x02\x02\x01_\x01`\x10\x90T\x90a\x01\0\n\x90\x04`\x01`\x01`@\x1B\x03\x16\x93P\x93PPP\x91P\x91V[`\x01\x01a\x0E\xDDV[PP\x91P\x91V[_\x81`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xA9WP_a\n+V[\x82`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xC1WP`\x01a\n+V[a\x0F\xCB\x82\x84a.\xFEV[`\x01`\x01`@\x1B\x03\x16_\x03a\x0F\xEBWa\x0F\xE4\x82\x84a/qV[\x90Pa\n+V[a\x0F\xF5\x82\x84a/qV[a\x0F\xE4\x90`\x01a.\xCBV[a\x10\x08a\x14\xAEV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x10'WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x10EWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x10cW`@Qc\x07\xA5\x07w`\xE5\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x01`@\x1B\x81\x04`\xFF\x16\x15\x90`\x01`\x01`@\x1B\x03\x16_\x81\x15\x80\x15a\x10\xCDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x10\xE8WP0;\x15[\x90P\x81\x15\x80\x15a\x10\xF6WP\x80\x15[\x15a\x11\x14W`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x84Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01\x17\x85U\x83\x15a\x11>W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x11G\x86a \xC4V[a\x11Oa \xD5V[a\x11Z\x89\x89\x89a \xDDV[\x83\x15a\x11\xA0W\x84T`\xFF`@\x1B\x19\x16\x85U`@Q`\x01\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1[PPPPPPPPPV[a\x11\xB3a\x14\xAEV[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0\x80T`\x02\x91\x90`\x01`@\x1B\x90\x04`\xFF\x16\x80a\x11\xFCWP\x80T`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x16\x10\x15[\x15a\x12\x1AW`@Qc\xF9.\xE8\xA9`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x80Th\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x19\x16`\x01`\x01`@\x1B\x03\x80\x84\x16\x91\x90\x91\x17`\x01`@\x1B\x17\x82U`\x05\x90\x85\x16\x11a\x12bW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_T`\x0BU`\x01T`\x0CU`\x02T`\rU`\x03T`\x0EU`\n\x80T`\x01`\x01`@\x1B\x03\x85\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x90\x87\x16\x17\x17\x90Ua\x12\xAB\x83\x85a\x0F\x91V[`\n\x80Tg\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x16`\x01`\x80\x1B`\x01`\x01`@\x1B\x03\x93\x84\x16\x02\x17\x90U\x81T`\xFF`@\x1B\x19\x16\x82U`@Q\x90\x83\x16\x81R\x7F\xC7\xF5\x05\xB2\xF3q\xAE!u\xEEI\x13\xF4I\x9E\x1F&3\xA7\xB5\x93c!\xEE\xD1\xCD\xAE\xB6\x11Q\x81\xD2\x90` \x01`@Q\x80\x91\x03\x90\xA1PPPPV[`\tT_\x90C\x84\x11\x80a\x13(WP\x80\x15[\x80a\x13rWP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x13VWa\x13Va/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x13\x90W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x13\x9E`\x01\x85a/JV[\x90P[\x81a\x14:W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x14:W\x86`\t\x82\x81T\x81\x10a\x13\xD3Wa\x13\xD3a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x14(W`\x01\x91P`\t\x81\x81T\x81\x10a\x14\x08Wa\x14\x08a/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x14:V[\x80a\x142\x81a/\x9EV[\x91PPa\x13\xA1V[\x81a\x14XW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x14c\x84\x89a/JV[\x11\x97\x96PPPPPPPV[a\x14wa\x14\xAEV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x14\xA5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\nB\x81a\"\tV[3a\x14\xE0\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0T`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14a\n\xEBW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\x14\x9CV[a\x15\x11a$\x9BV[b\x10\0\0\x81R`\x0B` \x82\x01R\x7F&\x86~\xE5\x8A\xAF\x86\x0F\xC9\xE0\xE3\xA7\x86f\xFF\xC5\x1F;\xA1\xAD\x8A\xE0\x01\xC1\x96\x83\x0CU\xB5\xAF\x0B\x8C`@\x82\x01QR\x7F\t\x120\xAD\xB7S\xF8(\x15\x15\x12w\x06\x0C\xC5kTk\xB2\xE9P\xA0\xDE\x19\xED\x06\x1E\xC6\x8C\x07\x1A\x90` `@\x83\x01Q\x01R\x7F\x02\xA5\t\xA0m\x8CV\xF8? F\x88\xFFnB\xEA\xC6\xE3\xCB\xDD\x06;\tq\xA3\xAF\x95>\x81\xBA\xDB\xB6``\x82\x01QR\x7F\x06\xF4>\xD2\xB9\xCE\xCE5\xD1 \x1A\xBC\x13\xFF\xDA\xEA5V\x0C\xF0\xF1Dbw\x13\x8C\xE8\x12\xB9\xAD\x9F9` ``\x83\x01Q\x01R\x7F\x1AX\x8C\x99\xAD\x88\xF7\x89\xC8w\"\xB0a\xBBU5\xDA\xA0\xAB\xCC\x1D\xC6\xD1v\xD7\xFE\xA5\x1E]\x80\xB9&`\x80\x82\x01QR\x7F b\xB9\x95\xE6\x1Aj\xB8\xAA\xB6\xCDnu \xB8y\xD8O\x96Z\xB1\xF0\x94\xC1\x04\xF0\xC1!;(\x03\x8B` `\x80\x83\x01Q\x01R\x7F!\xA2\xFDvj\x0C\xEB\xEC\xFD\xBF\xDF\xE5a9\xA1\xBB\xD9\xAE\xC1^.5\xBE\x8E\xF0\x194\xA0\xECC\x86\x85`\xA0\x82\x01QR\x7F \xFEP\n\xC7\xD1\xAAx \xDB\x8Co\x7F\x9DP\x9E;.\x88s\x1E:\x12\xDDe\xF0oC\xCA\x93\r\xA0` `\xA0\x83\x01Q\x01R\x7F\n\xB5=\x12\x85\xC7\xF4\x81\x9B?\xF6\xE1\xDD\xAD\xA6\xBF%\x15\xD3K\xBA\xF6\x11\x86\xC6\xA0K\xE4}\xFDe\xA3`\xC0\x82\x01QR\x7F\x0B\x80\xA9\x87\x80\x82\xCD\xFD\xD9\xFC\xC1k\xB3?\xA4$\xC0\xADf\xB8\x19I\xBFd!S\xD3\xC7\xAD\x08/\"` `\xC0\x83\x01Q\x01R\x7F\x1B\x90\x0F\x8E_\x8E\x80d\xA5\x88\x8A\x1B\xD7\x96\xB5J&R\xFC\x02\x03O\xE4\xB6\xE6\xFC\x8DfP\xF7E;`\xE0\x82\x01QR~\xCC\xA2X\xA8\x83,d\xD1\xF8\xE1r\x1Ax\xFC%\xB1=)\xAD\xBB\x81\xE3Zy\xFC/I\xF8\x90'\x86` `\xE0\x83\x01Q\x01R\x7F\r\x1D3H\xD6B\xE6\xF2\xE9s\x9Ds]\x8Cr6v\xDB\xAE\xFD\xCB\xB4\xE9fA\xDE\xFA5=&\xEB\xB3a\x01\0\x82\x01QR\x7F\x14\xFE\x9Dj3Q\x04\xE7I\x1C\xA6\xD5\x08a\x13\xE6\xB0\xF5)F\x96\rrfdf{\xD5\x859\xD4\x1E` a\x01\0\x83\x01Q\x01R\x7F\x1D\xA9CdD\x0CN?\xB8\xAF-6<\xDE\xFAN\xDD\xA47W\x9E\x1B\x05j\x16\xA5\xE9\xA1\x1D\xFF\xA2\xABa\x01 \x82\x01QR\x7F\n\x07{\xD3\x07\xED1\"-\xB5\\\xB0\x12\x8B\xAF\xCE^\"U{W\xF5\xAC\x91SY\xC5\x02\x96\xCB\\w` a\x01 \x83\x01Q\x01R\x7F(\xFF\x80\xB13\xD9\x89#\\q)\xDE\xA5Di\xB7\x80\xACG\x17D\x92\x90\x06~|\x9A}[\xE7\xDB\xD5a\x01@\x82\x01QR\x7F\x1C\x0F\xC2.\xEF#\xB5\n-\xDCU?\x9F\xC1\xB6\x1F\xD8\xC5zX\xCA2\x1A\x82\x9C~\xC2U\xF7W\xB3\xA6` a\x01@\x83\x01Q\x01R~<N!\xE5\xDF\xBAb\xA5\xB1p/\xB0\xEF#K\xFE\x95\xA7w\x01\xA4V\x88#PRm\x14\x02C\xF5a\x01`\x82\x01QR\x7F\x06\x01-\xB8(v\xBA3\xE6\xE8\xF8\nQ\x016b\xE5lJ\xBC\x86\xA7\xD8\\'.\x19\xA6\xD7\xF5}\x0B` a\x01`\x83\x01Q\x01R\x7F\x16\xD5$}\xBD\xEA\xE1\xDFp\t>^\xE7rr\x95\x96a\xE0\xFB\xAB\xDAC\x17w\xFAr\x9F[S/Da\x01\x80\x82\x01QR~\x8D\x9E\xE0\x0Fy\x9C\xF0\x06\x08\xB0\x82\xD0;\x9D\xE5\xA4+\x81&\xC3_\xBF\xBD\x1E`!\x08\xDF\x10\xE0\xE3` a\x01\x80\x83\x01Q\x01R\x7F/Rli\x81d?\xF6\xF6\xE9\xD2\xB5\xA9!\xE0l\xF9_'F)\xB5\xA1E\xBDU+\x7F\xDAj\x87\0a\x01\xA0\x82\x01QR\x7F/\xE7\x10\x8F\xD4\xE2B1\xF3\xDA\xDBn\t\x07.\x10o\xCA\x06\x94\xFE9\xDF\xF9eW\xA8\x82!\xA8\x9AP` a\x01\xA0\x83\x01Q\x01R\x7F&\xA3V\x85\x98\xA6\x98\x1Ec%\xF4\x81g6\xE3\x81\x08{[\x0EK'\xEF6M\x8A\xE1\xE2\x9F\xE9\xDF\x99a\x01\xC0\x82\x01QR\x7F\x1D\xB8\x1C\xDF\x82\xA9\xEC\x99\xF3\xC9qm\xF2-81~k\xB8O\xC5}/\x0E{+\xC8\xA0V\x9F|\xC4` a\x01\xC0\x83\x01Q\x01R~\x99\x88\x80\x88\xE1\x1D\xE6\xED\x08l\x99\xB9\xBB\xA9\x86\xD9\x08\xDF[\x0CP\x07h\r\x97V}HW\x19\x94a\x01\xE0\x82\x01QR\x7F\x1F\x91Wn\xAD\xFF\xFF\x93+nT\xBA\xB0\"\xF9?o\xEC>[vt\xD0\0k\xC5\xF2\"5'\xA3H` a\x01\xE0\x83\x01Q\x01R~h\xB3\xC1\x17\xEE~\x84\xD6\xB6p\xB6\xAF \x19wY\xEC\x80\xD3O<YC(f01\xE9\xCD~\x02a\x02\0\x82\x01QR\x7F\x1C82\xE2Hw4f\x80\xE7\x04{\xAE,\xFC\xD5\x1F\xAF\xE3\xE7\xCA\xF1\x99\xE9\xDF\xC8\xE8\xF1\x0C+iC` a\x02\0\x83\x01Q\x01R\x7F\x16L\xDD\x9A\xD5\xD4\xE9n\x10\x90s\xE8\xE75\xCDJ\xC6J\xBAm\xDA\xA2D\xDAg\x016\x9C\x8C\xBA]\xAFa\x02 \x82\x01QR\x7F\x16\xC4\x1Ed\x7F\x1A\xB0\xD4\\\x89\x15D)\x9EN\xF9\xC0\x04\xD8\xBC\n;\xF0\x96\xDC8\xCE\x8E\xD9\x0C\rg` a\x02 \x83\x01Q\x01R\x7F\x13K\xA7\xA9V{\xA2\x0E\x1F5\x95\x9E\xE8\xC2\xCDh\x8D:\x96+\xB1y~\x8A\xB8\xE5\x11v\x8D\xE0\xCE\x83a\x02@\x82\x01QR\x7F\x02\xE4\xD2\x86\xC9C_{\xD9L\x1A,x\xB9\x99f\xD0o\xAC\xA1\xAEE\xDEx\x14\x99P\xA4\xFE\xFC\xD6\xE7` a\x02@\x83\x01Q\x01R\x7F\x03\x9A\x0B-\x92\x0F)\xE3\\\xB2\xA9\xE1\xECl\xC2*\xC1\xD4\x82\xAFE\xE4s\x99rJ\x07E\xD5B\xE89a\x02`\x82\x01QR\x7F\x15\xAC&X\xBF\xDD\"'\xAE\xBF\x8E \x93Y5\xA6H\x81\x9E\x1D\xCE\xA8\x07\xDA\x1C\x83\x8A\xBF\xA7\x89lc` a\x02`\x83\x01Q\x01R\x7F\xB0\x83\x88\x93\xEC\x1F#~\x8B\x072;\x07DY\x9FN\x97\xB5\x98\xB3\xB5\x89\xBC\xC2\xBC7\xB8\xD5\xC4\x18\x01a\x02\x80\x82\x01R\x7F\xC1\x83\x93\xC0\xFA0\xFEN\x8B\x03\x8E5z\xD8Q\xEA\xE8\xDE\x91\x07XN\xFF\xE7\xC7\xF1\xF6Q\xB2\x01\x0E&a\x02\xA0\x82\x01R\x90V[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14\x80a\x1B\xBAWP\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0`\x01`\x01`\xA0\x1B\x03\x16a\x1B\xAE_Q` a4,_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x1B\xE0a\x14\xAEV[`@Q`\x01`\x01`\xA0\x1B\x03\x82\x16\x81R\x7F\xF7\x87!\"n\xFE\x9A\x1B\xB6x\x18\x9A\x16\xD1UI(\xB9\xF2\x19.,\xB9>\xED\xA8;y\xFA@\0}\x90` \x01a\x08AV[\x81`\x01`\x01`\xA0\x1B\x03\x16cR\xD1\x90-`@Q\x81c\xFF\xFF\xFF\xFF\x16`\xE0\x1B\x81R`\x04\x01` `@Q\x80\x83\x03\x81\x86Z\xFA\x92PPP\x80\x15a\x1CsWP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x1Cp\x91\x81\x01\x90a/\xB3V[`\x01[a\x1C\x9BW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x81\x14a\x1C\xCBW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\x14\x9CV[a\x1C\xD5\x83\x83a\"yV[PPPV[0`\x01`\x01`\xA0\x1B\x03\x7F\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\x16\x14a\n\xEBW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\n`W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x1Dma\x08\x95V[\x90Pa\x1Dwa'\0V[\x84Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x80\x87\x01\x80Q\x83\x16\x91\x84\x01\x91\x90\x91R`@\x80\x88\x01Q\x90\x84\x01R`\x0CT``\x84\x01R`\rT`\x80\x84\x01R`\x0ET`\xA0\x84\x01R`\x0BT`\xC0\x84\x01R`\nT\x90Q`\x01`@\x1B\x90\x91\x04\x82\x16\x91\x16\x10\x80\x15\x90a\x1D\xE7WPa\x1D\xE7\x85` \x01Qa\t:V[\x15a\x1E\x19W` \x84\x01Q`\xE0\x82\x01R`@\x84\x01Qa\x01\0\x82\x01R``\x84\x01Qa\x01 \x82\x01R\x83Qa\x01@\x82\x01Ra\x1E=V[`\x0CT`\xE0\x82\x01R`\rTa\x01\0\x82\x01R`\x0ETa\x01 \x82\x01R`\x0BTa\x01@\x82\x01R[`@Qc\xFC\x86`\xC7`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xFC\x86`\xC7\x90a\x1Ex\x90\x85\x90\x85\x90\x88\x90`\x04\x01a1\xACV[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x1E\x93W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x1E\xB7\x91\x90a3\xCCV[a\x1E\xD4W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPPV[`\tT\x15\x80\x15\x90a\x1FPWP`\x08T`\t\x80T`\x01`\xA0\x1B\x83\x04c\xFF\xFF\xFF\xFF\x16\x92`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F\x1BWa\x1F\x1Ba/]V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x1FE\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a/+V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x1F\xE3W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1F}Wa\x1F}a/]V[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x1F\xBD\x83a3\xEBV[\x91\x90a\x01\0\n\x81T\x81`\x01`\x01`@\x1B\x03\x02\x19\x16\x90\x83`\x01`\x01`@\x1B\x03\x16\x02\x17\x90UPP[`@\x80Q`\x80\x81\x01\x82R`\x01`\x01`@\x1B\x03\x94\x85\x16\x81R\x92\x84\x16` \x80\x85\x01\x91\x82R\x83\x01Q\x85\x16\x84\x83\x01\x90\x81R\x92\x90\x91\x01Q``\x84\x01\x90\x81R`\t\x80T`\x01\x81\x01\x82U_\x91\x90\x91R\x93Q`\x02\x90\x94\x02\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xAF\x81\x01\x80T\x93Q\x94Q\x87\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x95\x88\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x95\x16\x96\x90\x97\x16\x95\x90\x95\x17\x92\x90\x92\x17\x92\x90\x92\x16\x93\x90\x93\x17\x90\x91UQ\x7Fn\x15@\x17\x1Bl\x0C\x96\x0Bq\xA7\x02\r\x9F`\x07\x7Fj\xF91\xA8\xBB\xF5\x90\xDA\x02#\xDA\xCFu\xC7\xB0\x90\x91\x01UV[a \xCCa\"\xCEV[a\nB\x81a#\x17V[a\n\xEBa\"\xCEV[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a!\x01WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a!\x0EWP` \x82\x01Q\x15[\x80a!\x1BWP`@\x82\x01Q\x15[\x80a!(WP``\x82\x01Q\x15[\x80a!2WP\x81Q\x15[\x80a!DWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a!XWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a!vW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\"\x82\x82a#\x1FV[`@Q`\x01`\x01`\xA0\x1B\x03\x83\x16\x90\x7F\xBC|\xD7Z \xEE'\xFD\x9A\xDE\xBA\xB3 A\xF7U!M\xBCk\xFF\xA9\x0C\xC0\"[9\xDA.\\-;\x90_\x90\xA2\x80Q\x15a\"\xC6Wa\x1C\xD5\x82\x82a#\x82V[a\n`a#\xF4V[\x7F\xF0\xC5~\x16\x84\r\xF0@\xF1P\x88\xDC/\x81\xFE9\x1C9#\xBE\xC7>#\xA9f.\xFC\x9C\"\x9Cj\0T`\x01`@\x1B\x90\x04`\xFF\x16a\n\xEBW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x14wa\"\xCEV[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a#TW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\x14\x9CV[_Q` a4,_9_Q\x90_R\x80T`\x01`\x01`\xA0\x1B\x03\x19\x16`\x01`\x01`\xA0\x1B\x03\x92\x90\x92\x16\x91\x90\x91\x17\x90UV[``__\x84`\x01`\x01`\xA0\x1B\x03\x16\x84`@Qa#\x9E\x91\x90a4\x15V[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a#\xD6W`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a#\xDBV[``\x91P[P\x91P\x91Pa#\xEB\x85\x83\x83a$\x13V[\x95\x94PPPPPV[4\x15a\n\xEBW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a$(Wa$#\x82a$rV[a$kV[\x81Q\x15\x80\x15a$?WP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a$hW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\x14\x9CV[P\x80[\x93\x92PPPV[\x80Q\x15a$\x82W\x80Q\x80\x82` \x01\xFD[`@Qc\n\x12\xF5!`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`@Q\x80a\x02\xC0\x01`@R\x80_\x81R` \x01_\x81R` \x01a$\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a$\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a%\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x0E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&.`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&N`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&n`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\x8E`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xAE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xCE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a&\xEE`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80a\x01`\x01`@R\x80`\x0B\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a'EW__\xFD[a$k\x82a'\x1FV[_` \x82\x84\x03\x12\x15a'^W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa'\x97`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x83\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x83\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x83\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x83\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x83\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x83\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x83\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x83\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x83\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x83\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x83\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x83\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x83\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x83\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x83\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x83\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x83\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x83\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x90\x92\x01Qa\x04\xE0\x90\x91\x01R\x90V[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a)\x8CW__\xFD[a$k\x82a)fV[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xCCWa)\xCCa)\x95V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a)\xFAWa)\xFAa)\x95V[`@R\x91\x90PV[_``\x82\x84\x03\x12\x15a*\x12W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*4Wa*4a)\x95V[`@R\x90P\x80a*C\x83a)fV[\x81Ra*Q` \x84\x01a)fV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a*wW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a*\x99Wa*\x99a)\x95V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[_a\x04\x80\x82\x84\x03\x12\x15a*\xC4W__\xFD[a*\xCCa)\xA9V[\x90Pa*\xD8\x83\x83a*gV[\x81Ra*\xE7\x83`@\x84\x01a*gV[` \x82\x01Ra*\xF9\x83`\x80\x84\x01a*gV[`@\x82\x01Ra+\x0B\x83`\xC0\x84\x01a*gV[``\x82\x01Ra+\x1E\x83a\x01\0\x84\x01a*gV[`\x80\x82\x01Ra+1\x83a\x01@\x84\x01a*gV[`\xA0\x82\x01Ra+D\x83a\x01\x80\x84\x01a*gV[`\xC0\x82\x01Ra+W\x83a\x01\xC0\x84\x01a*gV[`\xE0\x82\x01Ra+j\x83a\x02\0\x84\x01a*gV[a\x01\0\x82\x01Ra+~\x83a\x02@\x84\x01a*gV[a\x01 \x82\x01Ra+\x92\x83a\x02\x80\x84\x01a*gV[a\x01@\x82\x01Ra+\xA6\x83a\x02\xC0\x84\x01a*gV[a\x01`\x82\x01Ra+\xBA\x83a\x03\0\x84\x01a*gV[a\x01\x80\x82\x01Ra\x03@\x82\x015a\x01\xA0\x82\x01Ra\x03`\x82\x015a\x01\xC0\x82\x01Ra\x03\x80\x82\x015a\x01\xE0\x82\x01Ra\x03\xA0\x82\x015a\x02\0\x82\x01Ra\x03\xC0\x82\x015a\x02 \x82\x01Ra\x03\xE0\x82\x015a\x02@\x82\x01Ra\x04\0\x82\x015a\x02`\x82\x01Ra\x04 \x82\x015a\x02\x80\x82\x01Ra\x04@\x82\x015a\x02\xA0\x82\x01Ra\x04`\x90\x91\x015a\x02\xC0\x82\x01R\x91\x90PV[__a\x04\xE0\x83\x85\x03\x12\x15a,PW__\xFD[a,Z\x84\x84a*\x02V[\x91Pa,i\x84``\x85\x01a*\xB3V[\x90P\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\t\x97W__\xFD[_` \x82\x84\x03\x12\x15a,\x95W__\xFD[a$k\x82a,rV[__`@\x83\x85\x03\x12\x15a,\xAFW__\xFD[a,\xB8\x83a'\x1FV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xD2W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a,\xE2W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a,\xFBWa,\xFBa)\x95V[a-\x0E`\x1F\x82\x01`\x1F\x19\x16` \x01a)\xD2V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a-\"W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[_`\x80\x82\x84\x03\x12\x15a-QW__\xFD[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a-sWa-sa)\x95V[`@\x90\x81R\x835\x82R` \x80\x85\x015\x90\x83\x01R\x83\x81\x015\x90\x82\x01R``\x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[___a\x05`\x84\x86\x03\x12\x15a-\xB4W__\xFD[a-\xBE\x85\x85a*\x02V[\x92Pa-\xCD\x85``\x86\x01a-AV[\x91Pa-\xDC\x85`\xE0\x86\x01a*\xB3V[\x90P\x92P\x92P\x92V[__`@\x83\x85\x03\x12\x15a-\xF6W__\xFD[a-\xFF\x83a)fV[\x91Pa,i` \x84\x01a)fV[____a\x01 \x85\x87\x03\x12\x15a.!W__\xFD[a.+\x86\x86a*\x02V[\x93Pa.:\x86``\x87\x01a-AV[\x92Pa.H`\xE0\x86\x01a,rV[\x91Pa.Wa\x01\0\x86\x01a'\x1FV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a.\xA8W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[`\x01`\x01`@\x1B\x03\x81\x81\x16\x83\x82\x16\x01\x90\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`\x12`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x16Wa/\x16a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x06\x91PP\x92\x91PPV[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\n+Wa\n+a.\xB7V[\x81\x81\x03\x81\x81\x11\x15a\n+Wa\n+a.\xB7V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_`\x01`\x01`@\x1B\x03\x83\x16\x80a/\x89Wa/\x89a.\xEAV[\x80`\x01`\x01`@\x1B\x03\x84\x16\x04\x91PP\x92\x91PPV[_\x81a/\xACWa/\xACa.\xB7V[P_\x19\x01\x90V[_` \x82\x84\x03\x12\x15a/\xC3W__\xFD[PQ\x91\x90PV[\x80_[`\x0B\x81\x10\x15a/\xECW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a/\xCDV[PPPPV[a0\x07\x82\x82Q\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[` \x81\x81\x01Q\x80Q`@\x85\x01R\x90\x81\x01Q``\x84\x01RP`@\x81\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP``\x81\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\x80\x81\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xA0\x81\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xC0\x81\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RP`\xE0\x81\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01\0\x81\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01 \x81\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01@\x81\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01`\x81\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\x80\x81\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xA0\x81\x01Qa\x03@\x83\x01Ra\x01\xC0\x81\x01Qa\x03`\x83\x01Ra\x01\xE0\x81\x01Qa\x03\x80\x83\x01Ra\x02\0\x81\x01Qa\x03\xA0\x83\x01Ra\x02 \x81\x01Qa\x03\xC0\x83\x01Ra\x02@\x81\x01Qa\x03\xE0\x83\x01Ra\x02`\x81\x01Qa\x04\0\x83\x01Ra\x02\x80\x81\x01Qa\x04 \x83\x01Ra\x02\xA0\x81\x01Qa\x04@\x83\x01Ra\x02\xC0\x01Qa\x04`\x90\x91\x01RV[_a\n\xE0\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa1\xDE`@\x84\x01\x82\x80Q\x82R` \x90\x81\x01Q\x91\x01RV[P``\x85\x01Q\x80Q`\x80\x84\x01R` \x81\x01Q`\xA0\x84\x01RP`\x80\x85\x01Q\x80Q`\xC0\x84\x01R` \x81\x01Q`\xE0\x84\x01RP`\xA0\x85\x01Q\x80Qa\x01\0\x84\x01R` \x81\x01Qa\x01 \x84\x01RP`\xC0\x85\x01Q\x80Qa\x01@\x84\x01R` \x81\x01Qa\x01`\x84\x01RP`\xE0\x85\x01Q\x80Qa\x01\x80\x84\x01R` \x81\x01Qa\x01\xA0\x84\x01RPa\x01\0\x85\x01Q\x80Qa\x01\xC0\x84\x01R` \x81\x01Qa\x01\xE0\x84\x01RPa\x01 \x85\x01Q\x80Qa\x02\0\x84\x01R` \x81\x01Qa\x02 \x84\x01RPa\x01@\x85\x01Q\x80Qa\x02@\x84\x01R` \x81\x01Qa\x02`\x84\x01RPa\x01`\x85\x01Q\x80Qa\x02\x80\x84\x01R` \x81\x01Qa\x02\xA0\x84\x01RPa\x01\x80\x85\x01Q\x80Qa\x02\xC0\x84\x01R` \x81\x01Qa\x02\xE0\x84\x01RPa\x01\xA0\x85\x01Q\x80Qa\x03\0\x84\x01R` \x81\x01Qa\x03 \x84\x01RPa\x01\xC0\x85\x01Q\x80Qa\x03@\x84\x01R` \x81\x01Qa\x03`\x84\x01RPa\x01\xE0\x85\x01Q\x80Qa\x03\x80\x84\x01R` \x81\x01Qa\x03\xA0\x84\x01RPa\x02\0\x85\x01Q\x80Qa\x03\xC0\x84\x01R` \x81\x01Qa\x03\xE0\x84\x01RPa\x02 \x85\x01Q\x80Qa\x04\0\x84\x01R` \x81\x01Qa\x04 \x84\x01RPa\x02@\x85\x01Q\x80Qa\x04@\x84\x01R` \x81\x01Qa\x04`\x84\x01RPa\x02`\x85\x01Q\x80Qa\x04\x80\x84\x01R` \x81\x01Qa\x04\xA0\x84\x01RPa\x02\x80\x85\x01Qa\x04\xC0\x83\x01Ra\x02\xA0\x85\x01Qa\x04\xE0\x83\x01Ra3\xB6a\x05\0\x83\x01\x85a/\xCAV[a3\xC4a\x06`\x83\x01\x84a/\xF2V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a3\xDCW__\xFD[\x81Q\x80\x15\x15\x81\x14a$kW__\xFD[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a4\x0CWa4\x0Ca.\xB7V[`\x01\x01\x92\x91PPV[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4933    );
4934    #[derive(serde::Serialize, serde::Deserialize)]
4935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4936    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4937```solidity
4938error AddressEmptyCode(address target);
4939```*/
4940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4941    #[derive(Clone)]
4942    pub struct AddressEmptyCode {
4943        #[allow(missing_docs)]
4944        pub target: alloy::sol_types::private::Address,
4945    }
4946    #[allow(
4947        non_camel_case_types,
4948        non_snake_case,
4949        clippy::pub_underscore_fields,
4950        clippy::style
4951    )]
4952    const _: () = {
4953        use alloy::sol_types as alloy_sol_types;
4954        #[doc(hidden)]
4955        #[allow(dead_code)]
4956        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4957        #[doc(hidden)]
4958        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4959        #[cfg(test)]
4960        #[allow(dead_code, unreachable_patterns)]
4961        fn _type_assertion(
4962            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4963        ) {
4964            match _t {
4965                alloy_sol_types::private::AssertTypeEq::<
4966                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4967                >(_) => {}
4968            }
4969        }
4970        #[automatically_derived]
4971        #[doc(hidden)]
4972        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4973            fn from(value: AddressEmptyCode) -> Self {
4974                (value.target,)
4975            }
4976        }
4977        #[automatically_derived]
4978        #[doc(hidden)]
4979        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4980            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4981                Self { target: tuple.0 }
4982            }
4983        }
4984        #[automatically_derived]
4985        impl alloy_sol_types::SolError for AddressEmptyCode {
4986            type Parameters<'a> = UnderlyingSolTuple<'a>;
4987            type Token<'a> = <Self::Parameters<
4988                'a,
4989            > as alloy_sol_types::SolType>::Token<'a>;
4990            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4991            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4992            #[inline]
4993            fn new<'a>(
4994                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4995            ) -> Self {
4996                tuple.into()
4997            }
4998            #[inline]
4999            fn tokenize(&self) -> Self::Token<'_> {
5000                (
5001                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5002                        &self.target,
5003                    ),
5004                )
5005            }
5006            #[inline]
5007            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5008                <Self::Parameters<
5009                    '_,
5010                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5011                    .map(Self::new)
5012            }
5013        }
5014    };
5015    #[derive(serde::Serialize, serde::Deserialize)]
5016    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5017    /**Custom error with signature `DeprecatedApi()` and selector `0x4e405c8d`.
5018```solidity
5019error DeprecatedApi();
5020```*/
5021    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5022    #[derive(Clone)]
5023    pub struct DeprecatedApi;
5024    #[allow(
5025        non_camel_case_types,
5026        non_snake_case,
5027        clippy::pub_underscore_fields,
5028        clippy::style
5029    )]
5030    const _: () = {
5031        use alloy::sol_types as alloy_sol_types;
5032        #[doc(hidden)]
5033        #[allow(dead_code)]
5034        type UnderlyingSolTuple<'a> = ();
5035        #[doc(hidden)]
5036        type UnderlyingRustTuple<'a> = ();
5037        #[cfg(test)]
5038        #[allow(dead_code, unreachable_patterns)]
5039        fn _type_assertion(
5040            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5041        ) {
5042            match _t {
5043                alloy_sol_types::private::AssertTypeEq::<
5044                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5045                >(_) => {}
5046            }
5047        }
5048        #[automatically_derived]
5049        #[doc(hidden)]
5050        impl ::core::convert::From<DeprecatedApi> for UnderlyingRustTuple<'_> {
5051            fn from(value: DeprecatedApi) -> Self {
5052                ()
5053            }
5054        }
5055        #[automatically_derived]
5056        #[doc(hidden)]
5057        impl ::core::convert::From<UnderlyingRustTuple<'_>> for DeprecatedApi {
5058            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5059                Self
5060            }
5061        }
5062        #[automatically_derived]
5063        impl alloy_sol_types::SolError for DeprecatedApi {
5064            type Parameters<'a> = UnderlyingSolTuple<'a>;
5065            type Token<'a> = <Self::Parameters<
5066                'a,
5067            > as alloy_sol_types::SolType>::Token<'a>;
5068            const SIGNATURE: &'static str = "DeprecatedApi()";
5069            const SELECTOR: [u8; 4] = [78u8, 64u8, 92u8, 141u8];
5070            #[inline]
5071            fn new<'a>(
5072                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5073            ) -> Self {
5074                tuple.into()
5075            }
5076            #[inline]
5077            fn tokenize(&self) -> Self::Token<'_> {
5078                ()
5079            }
5080            #[inline]
5081            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5082                <Self::Parameters<
5083                    '_,
5084                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5085                    .map(Self::new)
5086            }
5087        }
5088    };
5089    #[derive(serde::Serialize, serde::Deserialize)]
5090    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5091    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
5092```solidity
5093error ERC1967InvalidImplementation(address implementation);
5094```*/
5095    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5096    #[derive(Clone)]
5097    pub struct ERC1967InvalidImplementation {
5098        #[allow(missing_docs)]
5099        pub implementation: alloy::sol_types::private::Address,
5100    }
5101    #[allow(
5102        non_camel_case_types,
5103        non_snake_case,
5104        clippy::pub_underscore_fields,
5105        clippy::style
5106    )]
5107    const _: () = {
5108        use alloy::sol_types as alloy_sol_types;
5109        #[doc(hidden)]
5110        #[allow(dead_code)]
5111        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5112        #[doc(hidden)]
5113        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5114        #[cfg(test)]
5115        #[allow(dead_code, unreachable_patterns)]
5116        fn _type_assertion(
5117            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5118        ) {
5119            match _t {
5120                alloy_sol_types::private::AssertTypeEq::<
5121                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5122                >(_) => {}
5123            }
5124        }
5125        #[automatically_derived]
5126        #[doc(hidden)]
5127        impl ::core::convert::From<ERC1967InvalidImplementation>
5128        for UnderlyingRustTuple<'_> {
5129            fn from(value: ERC1967InvalidImplementation) -> Self {
5130                (value.implementation,)
5131            }
5132        }
5133        #[automatically_derived]
5134        #[doc(hidden)]
5135        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5136        for ERC1967InvalidImplementation {
5137            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5138                Self { implementation: tuple.0 }
5139            }
5140        }
5141        #[automatically_derived]
5142        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
5143            type Parameters<'a> = UnderlyingSolTuple<'a>;
5144            type Token<'a> = <Self::Parameters<
5145                'a,
5146            > as alloy_sol_types::SolType>::Token<'a>;
5147            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
5148            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
5149            #[inline]
5150            fn new<'a>(
5151                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5152            ) -> Self {
5153                tuple.into()
5154            }
5155            #[inline]
5156            fn tokenize(&self) -> Self::Token<'_> {
5157                (
5158                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5159                        &self.implementation,
5160                    ),
5161                )
5162            }
5163            #[inline]
5164            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5165                <Self::Parameters<
5166                    '_,
5167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5168                    .map(Self::new)
5169            }
5170        }
5171    };
5172    #[derive(serde::Serialize, serde::Deserialize)]
5173    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5174    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
5175```solidity
5176error ERC1967NonPayable();
5177```*/
5178    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5179    #[derive(Clone)]
5180    pub struct ERC1967NonPayable;
5181    #[allow(
5182        non_camel_case_types,
5183        non_snake_case,
5184        clippy::pub_underscore_fields,
5185        clippy::style
5186    )]
5187    const _: () = {
5188        use alloy::sol_types as alloy_sol_types;
5189        #[doc(hidden)]
5190        #[allow(dead_code)]
5191        type UnderlyingSolTuple<'a> = ();
5192        #[doc(hidden)]
5193        type UnderlyingRustTuple<'a> = ();
5194        #[cfg(test)]
5195        #[allow(dead_code, unreachable_patterns)]
5196        fn _type_assertion(
5197            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5198        ) {
5199            match _t {
5200                alloy_sol_types::private::AssertTypeEq::<
5201                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5202                >(_) => {}
5203            }
5204        }
5205        #[automatically_derived]
5206        #[doc(hidden)]
5207        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
5208            fn from(value: ERC1967NonPayable) -> Self {
5209                ()
5210            }
5211        }
5212        #[automatically_derived]
5213        #[doc(hidden)]
5214        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
5215            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5216                Self
5217            }
5218        }
5219        #[automatically_derived]
5220        impl alloy_sol_types::SolError for ERC1967NonPayable {
5221            type Parameters<'a> = UnderlyingSolTuple<'a>;
5222            type Token<'a> = <Self::Parameters<
5223                'a,
5224            > as alloy_sol_types::SolType>::Token<'a>;
5225            const SIGNATURE: &'static str = "ERC1967NonPayable()";
5226            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
5227            #[inline]
5228            fn new<'a>(
5229                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5230            ) -> Self {
5231                tuple.into()
5232            }
5233            #[inline]
5234            fn tokenize(&self) -> Self::Token<'_> {
5235                ()
5236            }
5237            #[inline]
5238            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5239                <Self::Parameters<
5240                    '_,
5241                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5242                    .map(Self::new)
5243            }
5244        }
5245    };
5246    #[derive(serde::Serialize, serde::Deserialize)]
5247    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5248    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5249```solidity
5250error FailedInnerCall();
5251```*/
5252    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5253    #[derive(Clone)]
5254    pub struct FailedInnerCall;
5255    #[allow(
5256        non_camel_case_types,
5257        non_snake_case,
5258        clippy::pub_underscore_fields,
5259        clippy::style
5260    )]
5261    const _: () = {
5262        use alloy::sol_types as alloy_sol_types;
5263        #[doc(hidden)]
5264        #[allow(dead_code)]
5265        type UnderlyingSolTuple<'a> = ();
5266        #[doc(hidden)]
5267        type UnderlyingRustTuple<'a> = ();
5268        #[cfg(test)]
5269        #[allow(dead_code, unreachable_patterns)]
5270        fn _type_assertion(
5271            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5272        ) {
5273            match _t {
5274                alloy_sol_types::private::AssertTypeEq::<
5275                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5276                >(_) => {}
5277            }
5278        }
5279        #[automatically_derived]
5280        #[doc(hidden)]
5281        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5282            fn from(value: FailedInnerCall) -> Self {
5283                ()
5284            }
5285        }
5286        #[automatically_derived]
5287        #[doc(hidden)]
5288        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5289            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5290                Self
5291            }
5292        }
5293        #[automatically_derived]
5294        impl alloy_sol_types::SolError for FailedInnerCall {
5295            type Parameters<'a> = UnderlyingSolTuple<'a>;
5296            type Token<'a> = <Self::Parameters<
5297                'a,
5298            > as alloy_sol_types::SolType>::Token<'a>;
5299            const SIGNATURE: &'static str = "FailedInnerCall()";
5300            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5301            #[inline]
5302            fn new<'a>(
5303                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5304            ) -> Self {
5305                tuple.into()
5306            }
5307            #[inline]
5308            fn tokenize(&self) -> Self::Token<'_> {
5309                ()
5310            }
5311            #[inline]
5312            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5313                <Self::Parameters<
5314                    '_,
5315                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5316                    .map(Self::new)
5317            }
5318        }
5319    };
5320    #[derive(serde::Serialize, serde::Deserialize)]
5321    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5322    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5323```solidity
5324error InsufficientSnapshotHistory();
5325```*/
5326    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5327    #[derive(Clone)]
5328    pub struct InsufficientSnapshotHistory;
5329    #[allow(
5330        non_camel_case_types,
5331        non_snake_case,
5332        clippy::pub_underscore_fields,
5333        clippy::style
5334    )]
5335    const _: () = {
5336        use alloy::sol_types as alloy_sol_types;
5337        #[doc(hidden)]
5338        #[allow(dead_code)]
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        #[allow(dead_code)]
5415        type UnderlyingSolTuple<'a> = ();
5416        #[doc(hidden)]
5417        type UnderlyingRustTuple<'a> = ();
5418        #[cfg(test)]
5419        #[allow(dead_code, unreachable_patterns)]
5420        fn _type_assertion(
5421            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5422        ) {
5423            match _t {
5424                alloy_sol_types::private::AssertTypeEq::<
5425                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5426                >(_) => {}
5427            }
5428        }
5429        #[automatically_derived]
5430        #[doc(hidden)]
5431        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5432            fn from(value: InvalidAddress) -> Self {
5433                ()
5434            }
5435        }
5436        #[automatically_derived]
5437        #[doc(hidden)]
5438        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5439            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5440                Self
5441            }
5442        }
5443        #[automatically_derived]
5444        impl alloy_sol_types::SolError for InvalidAddress {
5445            type Parameters<'a> = UnderlyingSolTuple<'a>;
5446            type Token<'a> = <Self::Parameters<
5447                'a,
5448            > as alloy_sol_types::SolType>::Token<'a>;
5449            const SIGNATURE: &'static str = "InvalidAddress()";
5450            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5451            #[inline]
5452            fn new<'a>(
5453                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5454            ) -> Self {
5455                tuple.into()
5456            }
5457            #[inline]
5458            fn tokenize(&self) -> Self::Token<'_> {
5459                ()
5460            }
5461            #[inline]
5462            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5463                <Self::Parameters<
5464                    '_,
5465                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5466                    .map(Self::new)
5467            }
5468        }
5469    };
5470    #[derive(serde::Serialize, serde::Deserialize)]
5471    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5472    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5473```solidity
5474error InvalidArgs();
5475```*/
5476    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5477    #[derive(Clone)]
5478    pub struct InvalidArgs;
5479    #[allow(
5480        non_camel_case_types,
5481        non_snake_case,
5482        clippy::pub_underscore_fields,
5483        clippy::style
5484    )]
5485    const _: () = {
5486        use alloy::sol_types as alloy_sol_types;
5487        #[doc(hidden)]
5488        #[allow(dead_code)]
5489        type UnderlyingSolTuple<'a> = ();
5490        #[doc(hidden)]
5491        type UnderlyingRustTuple<'a> = ();
5492        #[cfg(test)]
5493        #[allow(dead_code, unreachable_patterns)]
5494        fn _type_assertion(
5495            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5496        ) {
5497            match _t {
5498                alloy_sol_types::private::AssertTypeEq::<
5499                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5500                >(_) => {}
5501            }
5502        }
5503        #[automatically_derived]
5504        #[doc(hidden)]
5505        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5506            fn from(value: InvalidArgs) -> Self {
5507                ()
5508            }
5509        }
5510        #[automatically_derived]
5511        #[doc(hidden)]
5512        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5513            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5514                Self
5515            }
5516        }
5517        #[automatically_derived]
5518        impl alloy_sol_types::SolError for InvalidArgs {
5519            type Parameters<'a> = UnderlyingSolTuple<'a>;
5520            type Token<'a> = <Self::Parameters<
5521                'a,
5522            > as alloy_sol_types::SolType>::Token<'a>;
5523            const SIGNATURE: &'static str = "InvalidArgs()";
5524            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5525            #[inline]
5526            fn new<'a>(
5527                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5528            ) -> Self {
5529                tuple.into()
5530            }
5531            #[inline]
5532            fn tokenize(&self) -> Self::Token<'_> {
5533                ()
5534            }
5535            #[inline]
5536            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5537                <Self::Parameters<
5538                    '_,
5539                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5540                    .map(Self::new)
5541            }
5542        }
5543    };
5544    #[derive(serde::Serialize, serde::Deserialize)]
5545    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5546    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5547```solidity
5548error InvalidHotShotBlockForCommitmentCheck();
5549```*/
5550    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5551    #[derive(Clone)]
5552    pub struct InvalidHotShotBlockForCommitmentCheck;
5553    #[allow(
5554        non_camel_case_types,
5555        non_snake_case,
5556        clippy::pub_underscore_fields,
5557        clippy::style
5558    )]
5559    const _: () = {
5560        use alloy::sol_types as alloy_sol_types;
5561        #[doc(hidden)]
5562        #[allow(dead_code)]
5563        type UnderlyingSolTuple<'a> = ();
5564        #[doc(hidden)]
5565        type UnderlyingRustTuple<'a> = ();
5566        #[cfg(test)]
5567        #[allow(dead_code, unreachable_patterns)]
5568        fn _type_assertion(
5569            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5570        ) {
5571            match _t {
5572                alloy_sol_types::private::AssertTypeEq::<
5573                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5574                >(_) => {}
5575            }
5576        }
5577        #[automatically_derived]
5578        #[doc(hidden)]
5579        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5580        for UnderlyingRustTuple<'_> {
5581            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5582                ()
5583            }
5584        }
5585        #[automatically_derived]
5586        #[doc(hidden)]
5587        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5588        for InvalidHotShotBlockForCommitmentCheck {
5589            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5590                Self
5591            }
5592        }
5593        #[automatically_derived]
5594        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5595            type Parameters<'a> = UnderlyingSolTuple<'a>;
5596            type Token<'a> = <Self::Parameters<
5597                'a,
5598            > as alloy_sol_types::SolType>::Token<'a>;
5599            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5600            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5601            #[inline]
5602            fn new<'a>(
5603                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5604            ) -> Self {
5605                tuple.into()
5606            }
5607            #[inline]
5608            fn tokenize(&self) -> Self::Token<'_> {
5609                ()
5610            }
5611            #[inline]
5612            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5613                <Self::Parameters<
5614                    '_,
5615                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5616                    .map(Self::new)
5617            }
5618        }
5619    };
5620    #[derive(serde::Serialize, serde::Deserialize)]
5621    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5622    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5623```solidity
5624error InvalidInitialization();
5625```*/
5626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5627    #[derive(Clone)]
5628    pub struct InvalidInitialization;
5629    #[allow(
5630        non_camel_case_types,
5631        non_snake_case,
5632        clippy::pub_underscore_fields,
5633        clippy::style
5634    )]
5635    const _: () = {
5636        use alloy::sol_types as alloy_sol_types;
5637        #[doc(hidden)]
5638        #[allow(dead_code)]
5639        type UnderlyingSolTuple<'a> = ();
5640        #[doc(hidden)]
5641        type UnderlyingRustTuple<'a> = ();
5642        #[cfg(test)]
5643        #[allow(dead_code, unreachable_patterns)]
5644        fn _type_assertion(
5645            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5646        ) {
5647            match _t {
5648                alloy_sol_types::private::AssertTypeEq::<
5649                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5650                >(_) => {}
5651            }
5652        }
5653        #[automatically_derived]
5654        #[doc(hidden)]
5655        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5656            fn from(value: InvalidInitialization) -> Self {
5657                ()
5658            }
5659        }
5660        #[automatically_derived]
5661        #[doc(hidden)]
5662        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5663            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5664                Self
5665            }
5666        }
5667        #[automatically_derived]
5668        impl alloy_sol_types::SolError for InvalidInitialization {
5669            type Parameters<'a> = UnderlyingSolTuple<'a>;
5670            type Token<'a> = <Self::Parameters<
5671                'a,
5672            > as alloy_sol_types::SolType>::Token<'a>;
5673            const SIGNATURE: &'static str = "InvalidInitialization()";
5674            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5675            #[inline]
5676            fn new<'a>(
5677                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5678            ) -> Self {
5679                tuple.into()
5680            }
5681            #[inline]
5682            fn tokenize(&self) -> Self::Token<'_> {
5683                ()
5684            }
5685            #[inline]
5686            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5687                <Self::Parameters<
5688                    '_,
5689                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5690                    .map(Self::new)
5691            }
5692        }
5693    };
5694    #[derive(serde::Serialize, serde::Deserialize)]
5695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5696    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5697```solidity
5698error InvalidMaxStateHistory();
5699```*/
5700    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5701    #[derive(Clone)]
5702    pub struct InvalidMaxStateHistory;
5703    #[allow(
5704        non_camel_case_types,
5705        non_snake_case,
5706        clippy::pub_underscore_fields,
5707        clippy::style
5708    )]
5709    const _: () = {
5710        use alloy::sol_types as alloy_sol_types;
5711        #[doc(hidden)]
5712        #[allow(dead_code)]
5713        type UnderlyingSolTuple<'a> = ();
5714        #[doc(hidden)]
5715        type UnderlyingRustTuple<'a> = ();
5716        #[cfg(test)]
5717        #[allow(dead_code, unreachable_patterns)]
5718        fn _type_assertion(
5719            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5720        ) {
5721            match _t {
5722                alloy_sol_types::private::AssertTypeEq::<
5723                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5724                >(_) => {}
5725            }
5726        }
5727        #[automatically_derived]
5728        #[doc(hidden)]
5729        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5730            fn from(value: InvalidMaxStateHistory) -> Self {
5731                ()
5732            }
5733        }
5734        #[automatically_derived]
5735        #[doc(hidden)]
5736        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5737            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5738                Self
5739            }
5740        }
5741        #[automatically_derived]
5742        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5743            type Parameters<'a> = UnderlyingSolTuple<'a>;
5744            type Token<'a> = <Self::Parameters<
5745                'a,
5746            > as alloy_sol_types::SolType>::Token<'a>;
5747            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5748            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5749            #[inline]
5750            fn new<'a>(
5751                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5752            ) -> Self {
5753                tuple.into()
5754            }
5755            #[inline]
5756            fn tokenize(&self) -> Self::Token<'_> {
5757                ()
5758            }
5759            #[inline]
5760            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5761                <Self::Parameters<
5762                    '_,
5763                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5764                    .map(Self::new)
5765            }
5766        }
5767    };
5768    #[derive(serde::Serialize, serde::Deserialize)]
5769    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5770    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5771```solidity
5772error InvalidProof();
5773```*/
5774    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5775    #[derive(Clone)]
5776    pub struct InvalidProof;
5777    #[allow(
5778        non_camel_case_types,
5779        non_snake_case,
5780        clippy::pub_underscore_fields,
5781        clippy::style
5782    )]
5783    const _: () = {
5784        use alloy::sol_types as alloy_sol_types;
5785        #[doc(hidden)]
5786        #[allow(dead_code)]
5787        type UnderlyingSolTuple<'a> = ();
5788        #[doc(hidden)]
5789        type UnderlyingRustTuple<'a> = ();
5790        #[cfg(test)]
5791        #[allow(dead_code, unreachable_patterns)]
5792        fn _type_assertion(
5793            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5794        ) {
5795            match _t {
5796                alloy_sol_types::private::AssertTypeEq::<
5797                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5798                >(_) => {}
5799            }
5800        }
5801        #[automatically_derived]
5802        #[doc(hidden)]
5803        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5804            fn from(value: InvalidProof) -> Self {
5805                ()
5806            }
5807        }
5808        #[automatically_derived]
5809        #[doc(hidden)]
5810        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5811            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5812                Self
5813            }
5814        }
5815        #[automatically_derived]
5816        impl alloy_sol_types::SolError for InvalidProof {
5817            type Parameters<'a> = UnderlyingSolTuple<'a>;
5818            type Token<'a> = <Self::Parameters<
5819                'a,
5820            > as alloy_sol_types::SolType>::Token<'a>;
5821            const SIGNATURE: &'static str = "InvalidProof()";
5822            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5823            #[inline]
5824            fn new<'a>(
5825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5826            ) -> Self {
5827                tuple.into()
5828            }
5829            #[inline]
5830            fn tokenize(&self) -> Self::Token<'_> {
5831                ()
5832            }
5833            #[inline]
5834            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5835                <Self::Parameters<
5836                    '_,
5837                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5838                    .map(Self::new)
5839            }
5840        }
5841    };
5842    #[derive(serde::Serialize, serde::Deserialize)]
5843    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5844    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5845```solidity
5846error InvalidScalar();
5847```*/
5848    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5849    #[derive(Clone)]
5850    pub struct InvalidScalar;
5851    #[allow(
5852        non_camel_case_types,
5853        non_snake_case,
5854        clippy::pub_underscore_fields,
5855        clippy::style
5856    )]
5857    const _: () = {
5858        use alloy::sol_types as alloy_sol_types;
5859        #[doc(hidden)]
5860        #[allow(dead_code)]
5861        type UnderlyingSolTuple<'a> = ();
5862        #[doc(hidden)]
5863        type UnderlyingRustTuple<'a> = ();
5864        #[cfg(test)]
5865        #[allow(dead_code, unreachable_patterns)]
5866        fn _type_assertion(
5867            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5868        ) {
5869            match _t {
5870                alloy_sol_types::private::AssertTypeEq::<
5871                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5872                >(_) => {}
5873            }
5874        }
5875        #[automatically_derived]
5876        #[doc(hidden)]
5877        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5878            fn from(value: InvalidScalar) -> Self {
5879                ()
5880            }
5881        }
5882        #[automatically_derived]
5883        #[doc(hidden)]
5884        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5885            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5886                Self
5887            }
5888        }
5889        #[automatically_derived]
5890        impl alloy_sol_types::SolError for InvalidScalar {
5891            type Parameters<'a> = UnderlyingSolTuple<'a>;
5892            type Token<'a> = <Self::Parameters<
5893                'a,
5894            > as alloy_sol_types::SolType>::Token<'a>;
5895            const SIGNATURE: &'static str = "InvalidScalar()";
5896            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5897            #[inline]
5898            fn new<'a>(
5899                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5900            ) -> Self {
5901                tuple.into()
5902            }
5903            #[inline]
5904            fn tokenize(&self) -> Self::Token<'_> {
5905                ()
5906            }
5907            #[inline]
5908            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5909                <Self::Parameters<
5910                    '_,
5911                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5912                    .map(Self::new)
5913            }
5914        }
5915    };
5916    #[derive(serde::Serialize, serde::Deserialize)]
5917    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5918    /**Custom error with signature `MissingEpochRootUpdate()` and selector `0x080ae8d9`.
5919```solidity
5920error MissingEpochRootUpdate();
5921```*/
5922    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5923    #[derive(Clone)]
5924    pub struct MissingEpochRootUpdate;
5925    #[allow(
5926        non_camel_case_types,
5927        non_snake_case,
5928        clippy::pub_underscore_fields,
5929        clippy::style
5930    )]
5931    const _: () = {
5932        use alloy::sol_types as alloy_sol_types;
5933        #[doc(hidden)]
5934        #[allow(dead_code)]
5935        type UnderlyingSolTuple<'a> = ();
5936        #[doc(hidden)]
5937        type UnderlyingRustTuple<'a> = ();
5938        #[cfg(test)]
5939        #[allow(dead_code, unreachable_patterns)]
5940        fn _type_assertion(
5941            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5942        ) {
5943            match _t {
5944                alloy_sol_types::private::AssertTypeEq::<
5945                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5946                >(_) => {}
5947            }
5948        }
5949        #[automatically_derived]
5950        #[doc(hidden)]
5951        impl ::core::convert::From<MissingEpochRootUpdate> for UnderlyingRustTuple<'_> {
5952            fn from(value: MissingEpochRootUpdate) -> Self {
5953                ()
5954            }
5955        }
5956        #[automatically_derived]
5957        #[doc(hidden)]
5958        impl ::core::convert::From<UnderlyingRustTuple<'_>> for MissingEpochRootUpdate {
5959            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5960                Self
5961            }
5962        }
5963        #[automatically_derived]
5964        impl alloy_sol_types::SolError for MissingEpochRootUpdate {
5965            type Parameters<'a> = UnderlyingSolTuple<'a>;
5966            type Token<'a> = <Self::Parameters<
5967                'a,
5968            > as alloy_sol_types::SolType>::Token<'a>;
5969            const SIGNATURE: &'static str = "MissingEpochRootUpdate()";
5970            const SELECTOR: [u8; 4] = [8u8, 10u8, 232u8, 217u8];
5971            #[inline]
5972            fn new<'a>(
5973                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5974            ) -> Self {
5975                tuple.into()
5976            }
5977            #[inline]
5978            fn tokenize(&self) -> Self::Token<'_> {
5979                ()
5980            }
5981            #[inline]
5982            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5983                <Self::Parameters<
5984                    '_,
5985                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5986                    .map(Self::new)
5987            }
5988        }
5989    };
5990    #[derive(serde::Serialize, serde::Deserialize)]
5991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5992    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5993```solidity
5994error NoChangeRequired();
5995```*/
5996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5997    #[derive(Clone)]
5998    pub struct NoChangeRequired;
5999    #[allow(
6000        non_camel_case_types,
6001        non_snake_case,
6002        clippy::pub_underscore_fields,
6003        clippy::style
6004    )]
6005    const _: () = {
6006        use alloy::sol_types as alloy_sol_types;
6007        #[doc(hidden)]
6008        #[allow(dead_code)]
6009        type UnderlyingSolTuple<'a> = ();
6010        #[doc(hidden)]
6011        type UnderlyingRustTuple<'a> = ();
6012        #[cfg(test)]
6013        #[allow(dead_code, unreachable_patterns)]
6014        fn _type_assertion(
6015            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6016        ) {
6017            match _t {
6018                alloy_sol_types::private::AssertTypeEq::<
6019                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6020                >(_) => {}
6021            }
6022        }
6023        #[automatically_derived]
6024        #[doc(hidden)]
6025        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
6026            fn from(value: NoChangeRequired) -> Self {
6027                ()
6028            }
6029        }
6030        #[automatically_derived]
6031        #[doc(hidden)]
6032        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
6033            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6034                Self
6035            }
6036        }
6037        #[automatically_derived]
6038        impl alloy_sol_types::SolError for NoChangeRequired {
6039            type Parameters<'a> = UnderlyingSolTuple<'a>;
6040            type Token<'a> = <Self::Parameters<
6041                'a,
6042            > as alloy_sol_types::SolType>::Token<'a>;
6043            const SIGNATURE: &'static str = "NoChangeRequired()";
6044            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
6045            #[inline]
6046            fn new<'a>(
6047                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6048            ) -> Self {
6049                tuple.into()
6050            }
6051            #[inline]
6052            fn tokenize(&self) -> Self::Token<'_> {
6053                ()
6054            }
6055            #[inline]
6056            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6057                <Self::Parameters<
6058                    '_,
6059                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6060                    .map(Self::new)
6061            }
6062        }
6063    };
6064    #[derive(serde::Serialize, serde::Deserialize)]
6065    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6066    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
6067```solidity
6068error NotInitializing();
6069```*/
6070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6071    #[derive(Clone)]
6072    pub struct NotInitializing;
6073    #[allow(
6074        non_camel_case_types,
6075        non_snake_case,
6076        clippy::pub_underscore_fields,
6077        clippy::style
6078    )]
6079    const _: () = {
6080        use alloy::sol_types as alloy_sol_types;
6081        #[doc(hidden)]
6082        #[allow(dead_code)]
6083        type UnderlyingSolTuple<'a> = ();
6084        #[doc(hidden)]
6085        type UnderlyingRustTuple<'a> = ();
6086        #[cfg(test)]
6087        #[allow(dead_code, unreachable_patterns)]
6088        fn _type_assertion(
6089            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6090        ) {
6091            match _t {
6092                alloy_sol_types::private::AssertTypeEq::<
6093                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6094                >(_) => {}
6095            }
6096        }
6097        #[automatically_derived]
6098        #[doc(hidden)]
6099        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
6100            fn from(value: NotInitializing) -> Self {
6101                ()
6102            }
6103        }
6104        #[automatically_derived]
6105        #[doc(hidden)]
6106        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
6107            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6108                Self
6109            }
6110        }
6111        #[automatically_derived]
6112        impl alloy_sol_types::SolError for NotInitializing {
6113            type Parameters<'a> = UnderlyingSolTuple<'a>;
6114            type Token<'a> = <Self::Parameters<
6115                'a,
6116            > as alloy_sol_types::SolType>::Token<'a>;
6117            const SIGNATURE: &'static str = "NotInitializing()";
6118            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
6119            #[inline]
6120            fn new<'a>(
6121                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6122            ) -> Self {
6123                tuple.into()
6124            }
6125            #[inline]
6126            fn tokenize(&self) -> Self::Token<'_> {
6127                ()
6128            }
6129            #[inline]
6130            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6131                <Self::Parameters<
6132                    '_,
6133                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6134                    .map(Self::new)
6135            }
6136        }
6137    };
6138    #[derive(serde::Serialize, serde::Deserialize)]
6139    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6140    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
6141```solidity
6142error OutdatedState();
6143```*/
6144    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6145    #[derive(Clone)]
6146    pub struct OutdatedState;
6147    #[allow(
6148        non_camel_case_types,
6149        non_snake_case,
6150        clippy::pub_underscore_fields,
6151        clippy::style
6152    )]
6153    const _: () = {
6154        use alloy::sol_types as alloy_sol_types;
6155        #[doc(hidden)]
6156        #[allow(dead_code)]
6157        type UnderlyingSolTuple<'a> = ();
6158        #[doc(hidden)]
6159        type UnderlyingRustTuple<'a> = ();
6160        #[cfg(test)]
6161        #[allow(dead_code, unreachable_patterns)]
6162        fn _type_assertion(
6163            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6164        ) {
6165            match _t {
6166                alloy_sol_types::private::AssertTypeEq::<
6167                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6168                >(_) => {}
6169            }
6170        }
6171        #[automatically_derived]
6172        #[doc(hidden)]
6173        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
6174            fn from(value: OutdatedState) -> Self {
6175                ()
6176            }
6177        }
6178        #[automatically_derived]
6179        #[doc(hidden)]
6180        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
6181            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6182                Self
6183            }
6184        }
6185        #[automatically_derived]
6186        impl alloy_sol_types::SolError for OutdatedState {
6187            type Parameters<'a> = UnderlyingSolTuple<'a>;
6188            type Token<'a> = <Self::Parameters<
6189                'a,
6190            > as alloy_sol_types::SolType>::Token<'a>;
6191            const SIGNATURE: &'static str = "OutdatedState()";
6192            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
6193            #[inline]
6194            fn new<'a>(
6195                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6196            ) -> Self {
6197                tuple.into()
6198            }
6199            #[inline]
6200            fn tokenize(&self) -> Self::Token<'_> {
6201                ()
6202            }
6203            #[inline]
6204            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6205                <Self::Parameters<
6206                    '_,
6207                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6208                    .map(Self::new)
6209            }
6210        }
6211    };
6212    #[derive(serde::Serialize, serde::Deserialize)]
6213    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6214    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
6215```solidity
6216error OwnableInvalidOwner(address owner);
6217```*/
6218    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6219    #[derive(Clone)]
6220    pub struct OwnableInvalidOwner {
6221        #[allow(missing_docs)]
6222        pub owner: alloy::sol_types::private::Address,
6223    }
6224    #[allow(
6225        non_camel_case_types,
6226        non_snake_case,
6227        clippy::pub_underscore_fields,
6228        clippy::style
6229    )]
6230    const _: () = {
6231        use alloy::sol_types as alloy_sol_types;
6232        #[doc(hidden)]
6233        #[allow(dead_code)]
6234        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6235        #[doc(hidden)]
6236        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6237        #[cfg(test)]
6238        #[allow(dead_code, unreachable_patterns)]
6239        fn _type_assertion(
6240            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6241        ) {
6242            match _t {
6243                alloy_sol_types::private::AssertTypeEq::<
6244                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6245                >(_) => {}
6246            }
6247        }
6248        #[automatically_derived]
6249        #[doc(hidden)]
6250        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
6251            fn from(value: OwnableInvalidOwner) -> Self {
6252                (value.owner,)
6253            }
6254        }
6255        #[automatically_derived]
6256        #[doc(hidden)]
6257        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
6258            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6259                Self { owner: tuple.0 }
6260            }
6261        }
6262        #[automatically_derived]
6263        impl alloy_sol_types::SolError for OwnableInvalidOwner {
6264            type Parameters<'a> = UnderlyingSolTuple<'a>;
6265            type Token<'a> = <Self::Parameters<
6266                'a,
6267            > as alloy_sol_types::SolType>::Token<'a>;
6268            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
6269            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
6270            #[inline]
6271            fn new<'a>(
6272                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6273            ) -> Self {
6274                tuple.into()
6275            }
6276            #[inline]
6277            fn tokenize(&self) -> Self::Token<'_> {
6278                (
6279                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6280                        &self.owner,
6281                    ),
6282                )
6283            }
6284            #[inline]
6285            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6286                <Self::Parameters<
6287                    '_,
6288                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6289                    .map(Self::new)
6290            }
6291        }
6292    };
6293    #[derive(serde::Serialize, serde::Deserialize)]
6294    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6295    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
6296```solidity
6297error OwnableUnauthorizedAccount(address account);
6298```*/
6299    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6300    #[derive(Clone)]
6301    pub struct OwnableUnauthorizedAccount {
6302        #[allow(missing_docs)]
6303        pub account: alloy::sol_types::private::Address,
6304    }
6305    #[allow(
6306        non_camel_case_types,
6307        non_snake_case,
6308        clippy::pub_underscore_fields,
6309        clippy::style
6310    )]
6311    const _: () = {
6312        use alloy::sol_types as alloy_sol_types;
6313        #[doc(hidden)]
6314        #[allow(dead_code)]
6315        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
6316        #[doc(hidden)]
6317        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6318        #[cfg(test)]
6319        #[allow(dead_code, unreachable_patterns)]
6320        fn _type_assertion(
6321            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6322        ) {
6323            match _t {
6324                alloy_sol_types::private::AssertTypeEq::<
6325                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6326                >(_) => {}
6327            }
6328        }
6329        #[automatically_derived]
6330        #[doc(hidden)]
6331        impl ::core::convert::From<OwnableUnauthorizedAccount>
6332        for UnderlyingRustTuple<'_> {
6333            fn from(value: OwnableUnauthorizedAccount) -> Self {
6334                (value.account,)
6335            }
6336        }
6337        #[automatically_derived]
6338        #[doc(hidden)]
6339        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6340        for OwnableUnauthorizedAccount {
6341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6342                Self { account: tuple.0 }
6343            }
6344        }
6345        #[automatically_derived]
6346        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6347            type Parameters<'a> = UnderlyingSolTuple<'a>;
6348            type Token<'a> = <Self::Parameters<
6349                'a,
6350            > as alloy_sol_types::SolType>::Token<'a>;
6351            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6352            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6353            #[inline]
6354            fn new<'a>(
6355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6356            ) -> Self {
6357                tuple.into()
6358            }
6359            #[inline]
6360            fn tokenize(&self) -> Self::Token<'_> {
6361                (
6362                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6363                        &self.account,
6364                    ),
6365                )
6366            }
6367            #[inline]
6368            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6369                <Self::Parameters<
6370                    '_,
6371                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6372                    .map(Self::new)
6373            }
6374        }
6375    };
6376    #[derive(serde::Serialize, serde::Deserialize)]
6377    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6378    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6379```solidity
6380error OwnershipCannotBeRenounced();
6381```*/
6382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6383    #[derive(Clone)]
6384    pub struct OwnershipCannotBeRenounced;
6385    #[allow(
6386        non_camel_case_types,
6387        non_snake_case,
6388        clippy::pub_underscore_fields,
6389        clippy::style
6390    )]
6391    const _: () = {
6392        use alloy::sol_types as alloy_sol_types;
6393        #[doc(hidden)]
6394        #[allow(dead_code)]
6395        type UnderlyingSolTuple<'a> = ();
6396        #[doc(hidden)]
6397        type UnderlyingRustTuple<'a> = ();
6398        #[cfg(test)]
6399        #[allow(dead_code, unreachable_patterns)]
6400        fn _type_assertion(
6401            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6402        ) {
6403            match _t {
6404                alloy_sol_types::private::AssertTypeEq::<
6405                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6406                >(_) => {}
6407            }
6408        }
6409        #[automatically_derived]
6410        #[doc(hidden)]
6411        impl ::core::convert::From<OwnershipCannotBeRenounced>
6412        for UnderlyingRustTuple<'_> {
6413            fn from(value: OwnershipCannotBeRenounced) -> Self {
6414                ()
6415            }
6416        }
6417        #[automatically_derived]
6418        #[doc(hidden)]
6419        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6420        for OwnershipCannotBeRenounced {
6421            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6422                Self
6423            }
6424        }
6425        #[automatically_derived]
6426        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6427            type Parameters<'a> = UnderlyingSolTuple<'a>;
6428            type Token<'a> = <Self::Parameters<
6429                'a,
6430            > as alloy_sol_types::SolType>::Token<'a>;
6431            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6432            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6433            #[inline]
6434            fn new<'a>(
6435                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6436            ) -> Self {
6437                tuple.into()
6438            }
6439            #[inline]
6440            fn tokenize(&self) -> Self::Token<'_> {
6441                ()
6442            }
6443            #[inline]
6444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6445                <Self::Parameters<
6446                    '_,
6447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6448                    .map(Self::new)
6449            }
6450        }
6451    };
6452    #[derive(serde::Serialize, serde::Deserialize)]
6453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6454    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6455```solidity
6456error ProverNotPermissioned();
6457```*/
6458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6459    #[derive(Clone)]
6460    pub struct ProverNotPermissioned;
6461    #[allow(
6462        non_camel_case_types,
6463        non_snake_case,
6464        clippy::pub_underscore_fields,
6465        clippy::style
6466    )]
6467    const _: () = {
6468        use alloy::sol_types as alloy_sol_types;
6469        #[doc(hidden)]
6470        #[allow(dead_code)]
6471        type UnderlyingSolTuple<'a> = ();
6472        #[doc(hidden)]
6473        type UnderlyingRustTuple<'a> = ();
6474        #[cfg(test)]
6475        #[allow(dead_code, unreachable_patterns)]
6476        fn _type_assertion(
6477            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6478        ) {
6479            match _t {
6480                alloy_sol_types::private::AssertTypeEq::<
6481                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6482                >(_) => {}
6483            }
6484        }
6485        #[automatically_derived]
6486        #[doc(hidden)]
6487        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6488            fn from(value: ProverNotPermissioned) -> Self {
6489                ()
6490            }
6491        }
6492        #[automatically_derived]
6493        #[doc(hidden)]
6494        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6495            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6496                Self
6497            }
6498        }
6499        #[automatically_derived]
6500        impl alloy_sol_types::SolError for ProverNotPermissioned {
6501            type Parameters<'a> = UnderlyingSolTuple<'a>;
6502            type Token<'a> = <Self::Parameters<
6503                'a,
6504            > as alloy_sol_types::SolType>::Token<'a>;
6505            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6506            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6507            #[inline]
6508            fn new<'a>(
6509                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6510            ) -> Self {
6511                tuple.into()
6512            }
6513            #[inline]
6514            fn tokenize(&self) -> Self::Token<'_> {
6515                ()
6516            }
6517            #[inline]
6518            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6519                <Self::Parameters<
6520                    '_,
6521                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6522                    .map(Self::new)
6523            }
6524        }
6525    };
6526    #[derive(serde::Serialize, serde::Deserialize)]
6527    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6528    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6529```solidity
6530error UUPSUnauthorizedCallContext();
6531```*/
6532    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6533    #[derive(Clone)]
6534    pub struct UUPSUnauthorizedCallContext;
6535    #[allow(
6536        non_camel_case_types,
6537        non_snake_case,
6538        clippy::pub_underscore_fields,
6539        clippy::style
6540    )]
6541    const _: () = {
6542        use alloy::sol_types as alloy_sol_types;
6543        #[doc(hidden)]
6544        #[allow(dead_code)]
6545        type UnderlyingSolTuple<'a> = ();
6546        #[doc(hidden)]
6547        type UnderlyingRustTuple<'a> = ();
6548        #[cfg(test)]
6549        #[allow(dead_code, unreachable_patterns)]
6550        fn _type_assertion(
6551            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6552        ) {
6553            match _t {
6554                alloy_sol_types::private::AssertTypeEq::<
6555                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6556                >(_) => {}
6557            }
6558        }
6559        #[automatically_derived]
6560        #[doc(hidden)]
6561        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6562        for UnderlyingRustTuple<'_> {
6563            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6564                ()
6565            }
6566        }
6567        #[automatically_derived]
6568        #[doc(hidden)]
6569        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6570        for UUPSUnauthorizedCallContext {
6571            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6572                Self
6573            }
6574        }
6575        #[automatically_derived]
6576        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6577            type Parameters<'a> = UnderlyingSolTuple<'a>;
6578            type Token<'a> = <Self::Parameters<
6579                'a,
6580            > as alloy_sol_types::SolType>::Token<'a>;
6581            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6582            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6583            #[inline]
6584            fn new<'a>(
6585                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6586            ) -> Self {
6587                tuple.into()
6588            }
6589            #[inline]
6590            fn tokenize(&self) -> Self::Token<'_> {
6591                ()
6592            }
6593            #[inline]
6594            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6595                <Self::Parameters<
6596                    '_,
6597                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6598                    .map(Self::new)
6599            }
6600        }
6601    };
6602    #[derive(serde::Serialize, serde::Deserialize)]
6603    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6604    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6605```solidity
6606error UUPSUnsupportedProxiableUUID(bytes32 slot);
6607```*/
6608    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6609    #[derive(Clone)]
6610    pub struct UUPSUnsupportedProxiableUUID {
6611        #[allow(missing_docs)]
6612        pub slot: alloy::sol_types::private::FixedBytes<32>,
6613    }
6614    #[allow(
6615        non_camel_case_types,
6616        non_snake_case,
6617        clippy::pub_underscore_fields,
6618        clippy::style
6619    )]
6620    const _: () = {
6621        use alloy::sol_types as alloy_sol_types;
6622        #[doc(hidden)]
6623        #[allow(dead_code)]
6624        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6625        #[doc(hidden)]
6626        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6627        #[cfg(test)]
6628        #[allow(dead_code, unreachable_patterns)]
6629        fn _type_assertion(
6630            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6631        ) {
6632            match _t {
6633                alloy_sol_types::private::AssertTypeEq::<
6634                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6635                >(_) => {}
6636            }
6637        }
6638        #[automatically_derived]
6639        #[doc(hidden)]
6640        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6641        for UnderlyingRustTuple<'_> {
6642            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6643                (value.slot,)
6644            }
6645        }
6646        #[automatically_derived]
6647        #[doc(hidden)]
6648        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6649        for UUPSUnsupportedProxiableUUID {
6650            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6651                Self { slot: tuple.0 }
6652            }
6653        }
6654        #[automatically_derived]
6655        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6656            type Parameters<'a> = UnderlyingSolTuple<'a>;
6657            type Token<'a> = <Self::Parameters<
6658                'a,
6659            > as alloy_sol_types::SolType>::Token<'a>;
6660            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6661            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6662            #[inline]
6663            fn new<'a>(
6664                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6665            ) -> Self {
6666                tuple.into()
6667            }
6668            #[inline]
6669            fn tokenize(&self) -> Self::Token<'_> {
6670                (
6671                    <alloy::sol_types::sol_data::FixedBytes<
6672                        32,
6673                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6674                )
6675            }
6676            #[inline]
6677            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6678                <Self::Parameters<
6679                    '_,
6680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6681                    .map(Self::new)
6682            }
6683        }
6684    };
6685    #[derive(serde::Serialize, serde::Deserialize)]
6686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6687    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6688```solidity
6689error WrongStakeTableUsed();
6690```*/
6691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6692    #[derive(Clone)]
6693    pub struct WrongStakeTableUsed;
6694    #[allow(
6695        non_camel_case_types,
6696        non_snake_case,
6697        clippy::pub_underscore_fields,
6698        clippy::style
6699    )]
6700    const _: () = {
6701        use alloy::sol_types as alloy_sol_types;
6702        #[doc(hidden)]
6703        #[allow(dead_code)]
6704        type UnderlyingSolTuple<'a> = ();
6705        #[doc(hidden)]
6706        type UnderlyingRustTuple<'a> = ();
6707        #[cfg(test)]
6708        #[allow(dead_code, unreachable_patterns)]
6709        fn _type_assertion(
6710            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6711        ) {
6712            match _t {
6713                alloy_sol_types::private::AssertTypeEq::<
6714                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6715                >(_) => {}
6716            }
6717        }
6718        #[automatically_derived]
6719        #[doc(hidden)]
6720        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6721            fn from(value: WrongStakeTableUsed) -> Self {
6722                ()
6723            }
6724        }
6725        #[automatically_derived]
6726        #[doc(hidden)]
6727        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6728            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6729                Self
6730            }
6731        }
6732        #[automatically_derived]
6733        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6734            type Parameters<'a> = UnderlyingSolTuple<'a>;
6735            type Token<'a> = <Self::Parameters<
6736                'a,
6737            > as alloy_sol_types::SolType>::Token<'a>;
6738            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6739            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6740            #[inline]
6741            fn new<'a>(
6742                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6743            ) -> Self {
6744                tuple.into()
6745            }
6746            #[inline]
6747            fn tokenize(&self) -> Self::Token<'_> {
6748                ()
6749            }
6750            #[inline]
6751            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6752                <Self::Parameters<
6753                    '_,
6754                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6755                    .map(Self::new)
6756            }
6757        }
6758    };
6759    #[derive(serde::Serialize, serde::Deserialize)]
6760    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6761    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6762```solidity
6763event Initialized(uint64 version);
6764```*/
6765    #[allow(
6766        non_camel_case_types,
6767        non_snake_case,
6768        clippy::pub_underscore_fields,
6769        clippy::style
6770    )]
6771    #[derive(Clone)]
6772    pub struct Initialized {
6773        #[allow(missing_docs)]
6774        pub version: u64,
6775    }
6776    #[allow(
6777        non_camel_case_types,
6778        non_snake_case,
6779        clippy::pub_underscore_fields,
6780        clippy::style
6781    )]
6782    const _: () = {
6783        use alloy::sol_types as alloy_sol_types;
6784        #[automatically_derived]
6785        impl alloy_sol_types::SolEvent for Initialized {
6786            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6787            type DataToken<'a> = <Self::DataTuple<
6788                'a,
6789            > as alloy_sol_types::SolType>::Token<'a>;
6790            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6791            const SIGNATURE: &'static str = "Initialized(uint64)";
6792            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6793                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6794                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6795                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6796            ]);
6797            const ANONYMOUS: bool = false;
6798            #[allow(unused_variables)]
6799            #[inline]
6800            fn new(
6801                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6802                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6803            ) -> Self {
6804                Self { version: data.0 }
6805            }
6806            #[inline]
6807            fn check_signature(
6808                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6809            ) -> alloy_sol_types::Result<()> {
6810                if topics.0 != Self::SIGNATURE_HASH {
6811                    return Err(
6812                        alloy_sol_types::Error::invalid_event_signature_hash(
6813                            Self::SIGNATURE,
6814                            topics.0,
6815                            Self::SIGNATURE_HASH,
6816                        ),
6817                    );
6818                }
6819                Ok(())
6820            }
6821            #[inline]
6822            fn tokenize_body(&self) -> Self::DataToken<'_> {
6823                (
6824                    <alloy::sol_types::sol_data::Uint<
6825                        64,
6826                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6827                )
6828            }
6829            #[inline]
6830            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6831                (Self::SIGNATURE_HASH.into(),)
6832            }
6833            #[inline]
6834            fn encode_topics_raw(
6835                &self,
6836                out: &mut [alloy_sol_types::abi::token::WordToken],
6837            ) -> alloy_sol_types::Result<()> {
6838                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6839                    return Err(alloy_sol_types::Error::Overrun);
6840                }
6841                out[0usize] = alloy_sol_types::abi::token::WordToken(
6842                    Self::SIGNATURE_HASH,
6843                );
6844                Ok(())
6845            }
6846        }
6847        #[automatically_derived]
6848        impl alloy_sol_types::private::IntoLogData for Initialized {
6849            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6850                From::from(self)
6851            }
6852            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6853                From::from(&self)
6854            }
6855        }
6856        #[automatically_derived]
6857        impl From<&Initialized> for alloy_sol_types::private::LogData {
6858            #[inline]
6859            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6860                alloy_sol_types::SolEvent::encode_log_data(this)
6861            }
6862        }
6863    };
6864    #[derive(serde::Serialize, serde::Deserialize)]
6865    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6866    /**Event with signature `NewEpoch(uint64)` and selector `0x31eabd9099fdb25dacddd206abff87311e553441fc9d0fcdef201062d7e7071b`.
6867```solidity
6868event NewEpoch(uint64 epoch);
6869```*/
6870    #[allow(
6871        non_camel_case_types,
6872        non_snake_case,
6873        clippy::pub_underscore_fields,
6874        clippy::style
6875    )]
6876    #[derive(Clone)]
6877    pub struct NewEpoch {
6878        #[allow(missing_docs)]
6879        pub epoch: u64,
6880    }
6881    #[allow(
6882        non_camel_case_types,
6883        non_snake_case,
6884        clippy::pub_underscore_fields,
6885        clippy::style
6886    )]
6887    const _: () = {
6888        use alloy::sol_types as alloy_sol_types;
6889        #[automatically_derived]
6890        impl alloy_sol_types::SolEvent for NewEpoch {
6891            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6892            type DataToken<'a> = <Self::DataTuple<
6893                'a,
6894            > as alloy_sol_types::SolType>::Token<'a>;
6895            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6896            const SIGNATURE: &'static str = "NewEpoch(uint64)";
6897            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6898                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
6899                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
6900                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
6901            ]);
6902            const ANONYMOUS: bool = false;
6903            #[allow(unused_variables)]
6904            #[inline]
6905            fn new(
6906                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6907                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6908            ) -> Self {
6909                Self { epoch: data.0 }
6910            }
6911            #[inline]
6912            fn check_signature(
6913                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6914            ) -> alloy_sol_types::Result<()> {
6915                if topics.0 != Self::SIGNATURE_HASH {
6916                    return Err(
6917                        alloy_sol_types::Error::invalid_event_signature_hash(
6918                            Self::SIGNATURE,
6919                            topics.0,
6920                            Self::SIGNATURE_HASH,
6921                        ),
6922                    );
6923                }
6924                Ok(())
6925            }
6926            #[inline]
6927            fn tokenize_body(&self) -> Self::DataToken<'_> {
6928                (
6929                    <alloy::sol_types::sol_data::Uint<
6930                        64,
6931                    > as alloy_sol_types::SolType>::tokenize(&self.epoch),
6932                )
6933            }
6934            #[inline]
6935            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6936                (Self::SIGNATURE_HASH.into(),)
6937            }
6938            #[inline]
6939            fn encode_topics_raw(
6940                &self,
6941                out: &mut [alloy_sol_types::abi::token::WordToken],
6942            ) -> alloy_sol_types::Result<()> {
6943                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6944                    return Err(alloy_sol_types::Error::Overrun);
6945                }
6946                out[0usize] = alloy_sol_types::abi::token::WordToken(
6947                    Self::SIGNATURE_HASH,
6948                );
6949                Ok(())
6950            }
6951        }
6952        #[automatically_derived]
6953        impl alloy_sol_types::private::IntoLogData for NewEpoch {
6954            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6955                From::from(self)
6956            }
6957            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6958                From::from(&self)
6959            }
6960        }
6961        #[automatically_derived]
6962        impl From<&NewEpoch> for alloy_sol_types::private::LogData {
6963            #[inline]
6964            fn from(this: &NewEpoch) -> alloy_sol_types::private::LogData {
6965                alloy_sol_types::SolEvent::encode_log_data(this)
6966            }
6967        }
6968    };
6969    #[derive(serde::Serialize, serde::Deserialize)]
6970    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6971    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6972```solidity
6973event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6974```*/
6975    #[allow(
6976        non_camel_case_types,
6977        non_snake_case,
6978        clippy::pub_underscore_fields,
6979        clippy::style
6980    )]
6981    #[derive(Clone)]
6982    pub struct NewState {
6983        #[allow(missing_docs)]
6984        pub viewNum: u64,
6985        #[allow(missing_docs)]
6986        pub blockHeight: u64,
6987        #[allow(missing_docs)]
6988        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6989    }
6990    #[allow(
6991        non_camel_case_types,
6992        non_snake_case,
6993        clippy::pub_underscore_fields,
6994        clippy::style
6995    )]
6996    const _: () = {
6997        use alloy::sol_types as alloy_sol_types;
6998        #[automatically_derived]
6999        impl alloy_sol_types::SolEvent for NewState {
7000            type DataTuple<'a> = (BN254::ScalarField,);
7001            type DataToken<'a> = <Self::DataTuple<
7002                'a,
7003            > as alloy_sol_types::SolType>::Token<'a>;
7004            type TopicList = (
7005                alloy_sol_types::sol_data::FixedBytes<32>,
7006                alloy::sol_types::sol_data::Uint<64>,
7007                alloy::sol_types::sol_data::Uint<64>,
7008            );
7009            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
7010            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7011                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
7012                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
7013                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
7014            ]);
7015            const ANONYMOUS: bool = false;
7016            #[allow(unused_variables)]
7017            #[inline]
7018            fn new(
7019                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7020                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7021            ) -> Self {
7022                Self {
7023                    viewNum: topics.1,
7024                    blockHeight: topics.2,
7025                    blockCommRoot: data.0,
7026                }
7027            }
7028            #[inline]
7029            fn check_signature(
7030                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7031            ) -> alloy_sol_types::Result<()> {
7032                if topics.0 != Self::SIGNATURE_HASH {
7033                    return Err(
7034                        alloy_sol_types::Error::invalid_event_signature_hash(
7035                            Self::SIGNATURE,
7036                            topics.0,
7037                            Self::SIGNATURE_HASH,
7038                        ),
7039                    );
7040                }
7041                Ok(())
7042            }
7043            #[inline]
7044            fn tokenize_body(&self) -> Self::DataToken<'_> {
7045                (
7046                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7047                        &self.blockCommRoot,
7048                    ),
7049                )
7050            }
7051            #[inline]
7052            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7053                (
7054                    Self::SIGNATURE_HASH.into(),
7055                    self.viewNum.clone(),
7056                    self.blockHeight.clone(),
7057                )
7058            }
7059            #[inline]
7060            fn encode_topics_raw(
7061                &self,
7062                out: &mut [alloy_sol_types::abi::token::WordToken],
7063            ) -> alloy_sol_types::Result<()> {
7064                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7065                    return Err(alloy_sol_types::Error::Overrun);
7066                }
7067                out[0usize] = alloy_sol_types::abi::token::WordToken(
7068                    Self::SIGNATURE_HASH,
7069                );
7070                out[1usize] = <alloy::sol_types::sol_data::Uint<
7071                    64,
7072                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
7073                out[2usize] = <alloy::sol_types::sol_data::Uint<
7074                    64,
7075                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
7076                Ok(())
7077            }
7078        }
7079        #[automatically_derived]
7080        impl alloy_sol_types::private::IntoLogData for NewState {
7081            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7082                From::from(self)
7083            }
7084            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7085                From::from(&self)
7086            }
7087        }
7088        #[automatically_derived]
7089        impl From<&NewState> for alloy_sol_types::private::LogData {
7090            #[inline]
7091            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
7092                alloy_sol_types::SolEvent::encode_log_data(this)
7093            }
7094        }
7095    };
7096    #[derive(serde::Serialize, serde::Deserialize)]
7097    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7098    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
7099```solidity
7100event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
7101```*/
7102    #[allow(
7103        non_camel_case_types,
7104        non_snake_case,
7105        clippy::pub_underscore_fields,
7106        clippy::style
7107    )]
7108    #[derive(Clone)]
7109    pub struct OwnershipTransferred {
7110        #[allow(missing_docs)]
7111        pub previousOwner: alloy::sol_types::private::Address,
7112        #[allow(missing_docs)]
7113        pub newOwner: alloy::sol_types::private::Address,
7114    }
7115    #[allow(
7116        non_camel_case_types,
7117        non_snake_case,
7118        clippy::pub_underscore_fields,
7119        clippy::style
7120    )]
7121    const _: () = {
7122        use alloy::sol_types as alloy_sol_types;
7123        #[automatically_derived]
7124        impl alloy_sol_types::SolEvent for OwnershipTransferred {
7125            type DataTuple<'a> = ();
7126            type DataToken<'a> = <Self::DataTuple<
7127                'a,
7128            > as alloy_sol_types::SolType>::Token<'a>;
7129            type TopicList = (
7130                alloy_sol_types::sol_data::FixedBytes<32>,
7131                alloy::sol_types::sol_data::Address,
7132                alloy::sol_types::sol_data::Address,
7133            );
7134            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
7135            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7136                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
7137                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
7138                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
7139            ]);
7140            const ANONYMOUS: bool = false;
7141            #[allow(unused_variables)]
7142            #[inline]
7143            fn new(
7144                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7145                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7146            ) -> Self {
7147                Self {
7148                    previousOwner: topics.1,
7149                    newOwner: topics.2,
7150                }
7151            }
7152            #[inline]
7153            fn check_signature(
7154                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7155            ) -> alloy_sol_types::Result<()> {
7156                if topics.0 != Self::SIGNATURE_HASH {
7157                    return Err(
7158                        alloy_sol_types::Error::invalid_event_signature_hash(
7159                            Self::SIGNATURE,
7160                            topics.0,
7161                            Self::SIGNATURE_HASH,
7162                        ),
7163                    );
7164                }
7165                Ok(())
7166            }
7167            #[inline]
7168            fn tokenize_body(&self) -> Self::DataToken<'_> {
7169                ()
7170            }
7171            #[inline]
7172            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7173                (
7174                    Self::SIGNATURE_HASH.into(),
7175                    self.previousOwner.clone(),
7176                    self.newOwner.clone(),
7177                )
7178            }
7179            #[inline]
7180            fn encode_topics_raw(
7181                &self,
7182                out: &mut [alloy_sol_types::abi::token::WordToken],
7183            ) -> alloy_sol_types::Result<()> {
7184                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7185                    return Err(alloy_sol_types::Error::Overrun);
7186                }
7187                out[0usize] = alloy_sol_types::abi::token::WordToken(
7188                    Self::SIGNATURE_HASH,
7189                );
7190                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7191                    &self.previousOwner,
7192                );
7193                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7194                    &self.newOwner,
7195                );
7196                Ok(())
7197            }
7198        }
7199        #[automatically_derived]
7200        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
7201            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7202                From::from(self)
7203            }
7204            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7205                From::from(&self)
7206            }
7207        }
7208        #[automatically_derived]
7209        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
7210            #[inline]
7211            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
7212                alloy_sol_types::SolEvent::encode_log_data(this)
7213            }
7214        }
7215    };
7216    #[derive(serde::Serialize, serde::Deserialize)]
7217    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7218    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
7219```solidity
7220event PermissionedProverNotRequired();
7221```*/
7222    #[allow(
7223        non_camel_case_types,
7224        non_snake_case,
7225        clippy::pub_underscore_fields,
7226        clippy::style
7227    )]
7228    #[derive(Clone)]
7229    pub struct PermissionedProverNotRequired;
7230    #[allow(
7231        non_camel_case_types,
7232        non_snake_case,
7233        clippy::pub_underscore_fields,
7234        clippy::style
7235    )]
7236    const _: () = {
7237        use alloy::sol_types as alloy_sol_types;
7238        #[automatically_derived]
7239        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
7240            type DataTuple<'a> = ();
7241            type DataToken<'a> = <Self::DataTuple<
7242                'a,
7243            > as alloy_sol_types::SolType>::Token<'a>;
7244            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7245            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
7246            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7247                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
7248                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
7249                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
7250            ]);
7251            const ANONYMOUS: bool = false;
7252            #[allow(unused_variables)]
7253            #[inline]
7254            fn new(
7255                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7256                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7257            ) -> Self {
7258                Self {}
7259            }
7260            #[inline]
7261            fn check_signature(
7262                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7263            ) -> alloy_sol_types::Result<()> {
7264                if topics.0 != Self::SIGNATURE_HASH {
7265                    return Err(
7266                        alloy_sol_types::Error::invalid_event_signature_hash(
7267                            Self::SIGNATURE,
7268                            topics.0,
7269                            Self::SIGNATURE_HASH,
7270                        ),
7271                    );
7272                }
7273                Ok(())
7274            }
7275            #[inline]
7276            fn tokenize_body(&self) -> Self::DataToken<'_> {
7277                ()
7278            }
7279            #[inline]
7280            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7281                (Self::SIGNATURE_HASH.into(),)
7282            }
7283            #[inline]
7284            fn encode_topics_raw(
7285                &self,
7286                out: &mut [alloy_sol_types::abi::token::WordToken],
7287            ) -> alloy_sol_types::Result<()> {
7288                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7289                    return Err(alloy_sol_types::Error::Overrun);
7290                }
7291                out[0usize] = alloy_sol_types::abi::token::WordToken(
7292                    Self::SIGNATURE_HASH,
7293                );
7294                Ok(())
7295            }
7296        }
7297        #[automatically_derived]
7298        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
7299            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7300                From::from(self)
7301            }
7302            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7303                From::from(&self)
7304            }
7305        }
7306        #[automatically_derived]
7307        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
7308            #[inline]
7309            fn from(
7310                this: &PermissionedProverNotRequired,
7311            ) -> alloy_sol_types::private::LogData {
7312                alloy_sol_types::SolEvent::encode_log_data(this)
7313            }
7314        }
7315    };
7316    #[derive(serde::Serialize, serde::Deserialize)]
7317    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7318    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
7319```solidity
7320event PermissionedProverRequired(address permissionedProver);
7321```*/
7322    #[allow(
7323        non_camel_case_types,
7324        non_snake_case,
7325        clippy::pub_underscore_fields,
7326        clippy::style
7327    )]
7328    #[derive(Clone)]
7329    pub struct PermissionedProverRequired {
7330        #[allow(missing_docs)]
7331        pub permissionedProver: alloy::sol_types::private::Address,
7332    }
7333    #[allow(
7334        non_camel_case_types,
7335        non_snake_case,
7336        clippy::pub_underscore_fields,
7337        clippy::style
7338    )]
7339    const _: () = {
7340        use alloy::sol_types as alloy_sol_types;
7341        #[automatically_derived]
7342        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
7343            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7344            type DataToken<'a> = <Self::DataTuple<
7345                'a,
7346            > as alloy_sol_types::SolType>::Token<'a>;
7347            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7348            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
7349            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7350                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
7351                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
7352                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
7353            ]);
7354            const ANONYMOUS: bool = false;
7355            #[allow(unused_variables)]
7356            #[inline]
7357            fn new(
7358                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7359                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7360            ) -> Self {
7361                Self { permissionedProver: data.0 }
7362            }
7363            #[inline]
7364            fn check_signature(
7365                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7366            ) -> alloy_sol_types::Result<()> {
7367                if topics.0 != Self::SIGNATURE_HASH {
7368                    return Err(
7369                        alloy_sol_types::Error::invalid_event_signature_hash(
7370                            Self::SIGNATURE,
7371                            topics.0,
7372                            Self::SIGNATURE_HASH,
7373                        ),
7374                    );
7375                }
7376                Ok(())
7377            }
7378            #[inline]
7379            fn tokenize_body(&self) -> Self::DataToken<'_> {
7380                (
7381                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7382                        &self.permissionedProver,
7383                    ),
7384                )
7385            }
7386            #[inline]
7387            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7388                (Self::SIGNATURE_HASH.into(),)
7389            }
7390            #[inline]
7391            fn encode_topics_raw(
7392                &self,
7393                out: &mut [alloy_sol_types::abi::token::WordToken],
7394            ) -> alloy_sol_types::Result<()> {
7395                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7396                    return Err(alloy_sol_types::Error::Overrun);
7397                }
7398                out[0usize] = alloy_sol_types::abi::token::WordToken(
7399                    Self::SIGNATURE_HASH,
7400                );
7401                Ok(())
7402            }
7403        }
7404        #[automatically_derived]
7405        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
7406            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7407                From::from(self)
7408            }
7409            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7410                From::from(&self)
7411            }
7412        }
7413        #[automatically_derived]
7414        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
7415            #[inline]
7416            fn from(
7417                this: &PermissionedProverRequired,
7418            ) -> alloy_sol_types::private::LogData {
7419                alloy_sol_types::SolEvent::encode_log_data(this)
7420            }
7421        }
7422    };
7423    #[derive(serde::Serialize, serde::Deserialize)]
7424    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7425    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7426```solidity
7427event Upgrade(address implementation);
7428```*/
7429    #[allow(
7430        non_camel_case_types,
7431        non_snake_case,
7432        clippy::pub_underscore_fields,
7433        clippy::style
7434    )]
7435    #[derive(Clone)]
7436    pub struct Upgrade {
7437        #[allow(missing_docs)]
7438        pub implementation: alloy::sol_types::private::Address,
7439    }
7440    #[allow(
7441        non_camel_case_types,
7442        non_snake_case,
7443        clippy::pub_underscore_fields,
7444        clippy::style
7445    )]
7446    const _: () = {
7447        use alloy::sol_types as alloy_sol_types;
7448        #[automatically_derived]
7449        impl alloy_sol_types::SolEvent for Upgrade {
7450            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7451            type DataToken<'a> = <Self::DataTuple<
7452                'a,
7453            > as alloy_sol_types::SolType>::Token<'a>;
7454            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7455            const SIGNATURE: &'static str = "Upgrade(address)";
7456            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7457                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7458                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7459                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7460            ]);
7461            const ANONYMOUS: bool = false;
7462            #[allow(unused_variables)]
7463            #[inline]
7464            fn new(
7465                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7466                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7467            ) -> Self {
7468                Self { implementation: data.0 }
7469            }
7470            #[inline]
7471            fn check_signature(
7472                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7473            ) -> alloy_sol_types::Result<()> {
7474                if topics.0 != Self::SIGNATURE_HASH {
7475                    return Err(
7476                        alloy_sol_types::Error::invalid_event_signature_hash(
7477                            Self::SIGNATURE,
7478                            topics.0,
7479                            Self::SIGNATURE_HASH,
7480                        ),
7481                    );
7482                }
7483                Ok(())
7484            }
7485            #[inline]
7486            fn tokenize_body(&self) -> Self::DataToken<'_> {
7487                (
7488                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7489                        &self.implementation,
7490                    ),
7491                )
7492            }
7493            #[inline]
7494            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7495                (Self::SIGNATURE_HASH.into(),)
7496            }
7497            #[inline]
7498            fn encode_topics_raw(
7499                &self,
7500                out: &mut [alloy_sol_types::abi::token::WordToken],
7501            ) -> alloy_sol_types::Result<()> {
7502                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7503                    return Err(alloy_sol_types::Error::Overrun);
7504                }
7505                out[0usize] = alloy_sol_types::abi::token::WordToken(
7506                    Self::SIGNATURE_HASH,
7507                );
7508                Ok(())
7509            }
7510        }
7511        #[automatically_derived]
7512        impl alloy_sol_types::private::IntoLogData for Upgrade {
7513            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7514                From::from(self)
7515            }
7516            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7517                From::from(&self)
7518            }
7519        }
7520        #[automatically_derived]
7521        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7522            #[inline]
7523            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7524                alloy_sol_types::SolEvent::encode_log_data(this)
7525            }
7526        }
7527    };
7528    #[derive(serde::Serialize, serde::Deserialize)]
7529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7530    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7531```solidity
7532event Upgraded(address indexed implementation);
7533```*/
7534    #[allow(
7535        non_camel_case_types,
7536        non_snake_case,
7537        clippy::pub_underscore_fields,
7538        clippy::style
7539    )]
7540    #[derive(Clone)]
7541    pub struct Upgraded {
7542        #[allow(missing_docs)]
7543        pub implementation: alloy::sol_types::private::Address,
7544    }
7545    #[allow(
7546        non_camel_case_types,
7547        non_snake_case,
7548        clippy::pub_underscore_fields,
7549        clippy::style
7550    )]
7551    const _: () = {
7552        use alloy::sol_types as alloy_sol_types;
7553        #[automatically_derived]
7554        impl alloy_sol_types::SolEvent for Upgraded {
7555            type DataTuple<'a> = ();
7556            type DataToken<'a> = <Self::DataTuple<
7557                'a,
7558            > as alloy_sol_types::SolType>::Token<'a>;
7559            type TopicList = (
7560                alloy_sol_types::sol_data::FixedBytes<32>,
7561                alloy::sol_types::sol_data::Address,
7562            );
7563            const SIGNATURE: &'static str = "Upgraded(address)";
7564            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7565                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7566                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7567                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7568            ]);
7569            const ANONYMOUS: bool = false;
7570            #[allow(unused_variables)]
7571            #[inline]
7572            fn new(
7573                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7574                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7575            ) -> Self {
7576                Self { implementation: topics.1 }
7577            }
7578            #[inline]
7579            fn check_signature(
7580                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7581            ) -> alloy_sol_types::Result<()> {
7582                if topics.0 != Self::SIGNATURE_HASH {
7583                    return Err(
7584                        alloy_sol_types::Error::invalid_event_signature_hash(
7585                            Self::SIGNATURE,
7586                            topics.0,
7587                            Self::SIGNATURE_HASH,
7588                        ),
7589                    );
7590                }
7591                Ok(())
7592            }
7593            #[inline]
7594            fn tokenize_body(&self) -> Self::DataToken<'_> {
7595                ()
7596            }
7597            #[inline]
7598            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7599                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
7600            }
7601            #[inline]
7602            fn encode_topics_raw(
7603                &self,
7604                out: &mut [alloy_sol_types::abi::token::WordToken],
7605            ) -> alloy_sol_types::Result<()> {
7606                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7607                    return Err(alloy_sol_types::Error::Overrun);
7608                }
7609                out[0usize] = alloy_sol_types::abi::token::WordToken(
7610                    Self::SIGNATURE_HASH,
7611                );
7612                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
7613                    &self.implementation,
7614                );
7615                Ok(())
7616            }
7617        }
7618        #[automatically_derived]
7619        impl alloy_sol_types::private::IntoLogData for Upgraded {
7620            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7621                From::from(self)
7622            }
7623            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7624                From::from(&self)
7625            }
7626        }
7627        #[automatically_derived]
7628        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7629            #[inline]
7630            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7631                alloy_sol_types::SolEvent::encode_log_data(this)
7632            }
7633        }
7634    };
7635    #[derive(serde::Serialize, serde::Deserialize)]
7636    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7637    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7638```solidity
7639function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7640```*/
7641    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7642    #[derive(Clone)]
7643    pub struct UPGRADE_INTERFACE_VERSIONCall;
7644    #[derive(serde::Serialize, serde::Deserialize)]
7645    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7646    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7647    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7648    #[derive(Clone)]
7649    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7650        #[allow(missing_docs)]
7651        pub _0: alloy::sol_types::private::String,
7652    }
7653    #[allow(
7654        non_camel_case_types,
7655        non_snake_case,
7656        clippy::pub_underscore_fields,
7657        clippy::style
7658    )]
7659    const _: () = {
7660        use alloy::sol_types as alloy_sol_types;
7661        {
7662            #[doc(hidden)]
7663            #[allow(dead_code)]
7664            type UnderlyingSolTuple<'a> = ();
7665            #[doc(hidden)]
7666            type UnderlyingRustTuple<'a> = ();
7667            #[cfg(test)]
7668            #[allow(dead_code, unreachable_patterns)]
7669            fn _type_assertion(
7670                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7671            ) {
7672                match _t {
7673                    alloy_sol_types::private::AssertTypeEq::<
7674                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7675                    >(_) => {}
7676                }
7677            }
7678            #[automatically_derived]
7679            #[doc(hidden)]
7680            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7681            for UnderlyingRustTuple<'_> {
7682                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7683                    ()
7684                }
7685            }
7686            #[automatically_derived]
7687            #[doc(hidden)]
7688            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7689            for UPGRADE_INTERFACE_VERSIONCall {
7690                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7691                    Self
7692                }
7693            }
7694        }
7695        {
7696            #[doc(hidden)]
7697            #[allow(dead_code)]
7698            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7699            #[doc(hidden)]
7700            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7701            #[cfg(test)]
7702            #[allow(dead_code, unreachable_patterns)]
7703            fn _type_assertion(
7704                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7705            ) {
7706                match _t {
7707                    alloy_sol_types::private::AssertTypeEq::<
7708                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7709                    >(_) => {}
7710                }
7711            }
7712            #[automatically_derived]
7713            #[doc(hidden)]
7714            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7715            for UnderlyingRustTuple<'_> {
7716                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7717                    (value._0,)
7718                }
7719            }
7720            #[automatically_derived]
7721            #[doc(hidden)]
7722            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7723            for UPGRADE_INTERFACE_VERSIONReturn {
7724                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7725                    Self { _0: tuple.0 }
7726                }
7727            }
7728        }
7729        #[automatically_derived]
7730        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7731            type Parameters<'a> = ();
7732            type Token<'a> = <Self::Parameters<
7733                'a,
7734            > as alloy_sol_types::SolType>::Token<'a>;
7735            type Return = alloy::sol_types::private::String;
7736            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7737            type ReturnToken<'a> = <Self::ReturnTuple<
7738                'a,
7739            > as alloy_sol_types::SolType>::Token<'a>;
7740            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7741            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7742            #[inline]
7743            fn new<'a>(
7744                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7745            ) -> Self {
7746                tuple.into()
7747            }
7748            #[inline]
7749            fn tokenize(&self) -> Self::Token<'_> {
7750                ()
7751            }
7752            #[inline]
7753            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7754                (
7755                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7756                        ret,
7757                    ),
7758                )
7759            }
7760            #[inline]
7761            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7762                <Self::ReturnTuple<
7763                    '_,
7764                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7765                    .map(|r| {
7766                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7767                        r._0
7768                    })
7769            }
7770            #[inline]
7771            fn abi_decode_returns_validate(
7772                data: &[u8],
7773            ) -> alloy_sol_types::Result<Self::Return> {
7774                <Self::ReturnTuple<
7775                    '_,
7776                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7777                    .map(|r| {
7778                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7779                        r._0
7780                    })
7781            }
7782        }
7783    };
7784    #[derive(serde::Serialize, serde::Deserialize)]
7785    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7786    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7787```solidity
7788function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7789```*/
7790    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7791    #[derive(Clone)]
7792    pub struct _getVkCall;
7793    #[derive(serde::Serialize, serde::Deserialize)]
7794    #[derive()]
7795    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7796    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7797    #[derive(Clone)]
7798    pub struct _getVkReturn {
7799        #[allow(missing_docs)]
7800        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7801    }
7802    #[allow(
7803        non_camel_case_types,
7804        non_snake_case,
7805        clippy::pub_underscore_fields,
7806        clippy::style
7807    )]
7808    const _: () = {
7809        use alloy::sol_types as alloy_sol_types;
7810        {
7811            #[doc(hidden)]
7812            #[allow(dead_code)]
7813            type UnderlyingSolTuple<'a> = ();
7814            #[doc(hidden)]
7815            type UnderlyingRustTuple<'a> = ();
7816            #[cfg(test)]
7817            #[allow(dead_code, unreachable_patterns)]
7818            fn _type_assertion(
7819                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7820            ) {
7821                match _t {
7822                    alloy_sol_types::private::AssertTypeEq::<
7823                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7824                    >(_) => {}
7825                }
7826            }
7827            #[automatically_derived]
7828            #[doc(hidden)]
7829            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7830                fn from(value: _getVkCall) -> Self {
7831                    ()
7832                }
7833            }
7834            #[automatically_derived]
7835            #[doc(hidden)]
7836            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7837                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7838                    Self
7839                }
7840            }
7841        }
7842        {
7843            #[doc(hidden)]
7844            #[allow(dead_code)]
7845            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7846            #[doc(hidden)]
7847            type UnderlyingRustTuple<'a> = (
7848                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7849            );
7850            #[cfg(test)]
7851            #[allow(dead_code, unreachable_patterns)]
7852            fn _type_assertion(
7853                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7854            ) {
7855                match _t {
7856                    alloy_sol_types::private::AssertTypeEq::<
7857                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7858                    >(_) => {}
7859                }
7860            }
7861            #[automatically_derived]
7862            #[doc(hidden)]
7863            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7864                fn from(value: _getVkReturn) -> Self {
7865                    (value.vk,)
7866                }
7867            }
7868            #[automatically_derived]
7869            #[doc(hidden)]
7870            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7871                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7872                    Self { vk: tuple.0 }
7873                }
7874            }
7875        }
7876        #[automatically_derived]
7877        impl alloy_sol_types::SolCall for _getVkCall {
7878            type Parameters<'a> = ();
7879            type Token<'a> = <Self::Parameters<
7880                'a,
7881            > as alloy_sol_types::SolType>::Token<'a>;
7882            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7883            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7884            type ReturnToken<'a> = <Self::ReturnTuple<
7885                'a,
7886            > as alloy_sol_types::SolType>::Token<'a>;
7887            const SIGNATURE: &'static str = "_getVk()";
7888            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7889            #[inline]
7890            fn new<'a>(
7891                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7892            ) -> Self {
7893                tuple.into()
7894            }
7895            #[inline]
7896            fn tokenize(&self) -> Self::Token<'_> {
7897                ()
7898            }
7899            #[inline]
7900            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7901                (
7902                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7903                        ret,
7904                    ),
7905                )
7906            }
7907            #[inline]
7908            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7909                <Self::ReturnTuple<
7910                    '_,
7911                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7912                    .map(|r| {
7913                        let r: _getVkReturn = r.into();
7914                        r.vk
7915                    })
7916            }
7917            #[inline]
7918            fn abi_decode_returns_validate(
7919                data: &[u8],
7920            ) -> alloy_sol_types::Result<Self::Return> {
7921                <Self::ReturnTuple<
7922                    '_,
7923                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7924                    .map(|r| {
7925                        let r: _getVkReturn = r.into();
7926                        r.vk
7927                    })
7928            }
7929        }
7930    };
7931    #[derive(serde::Serialize, serde::Deserialize)]
7932    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7933    /**Function with signature `blocksPerEpoch()` and selector `0xf0682054`.
7934```solidity
7935function blocksPerEpoch() external view returns (uint64);
7936```*/
7937    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7938    #[derive(Clone)]
7939    pub struct blocksPerEpochCall;
7940    #[derive(serde::Serialize, serde::Deserialize)]
7941    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7942    ///Container type for the return parameters of the [`blocksPerEpoch()`](blocksPerEpochCall) function.
7943    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7944    #[derive(Clone)]
7945    pub struct blocksPerEpochReturn {
7946        #[allow(missing_docs)]
7947        pub _0: u64,
7948    }
7949    #[allow(
7950        non_camel_case_types,
7951        non_snake_case,
7952        clippy::pub_underscore_fields,
7953        clippy::style
7954    )]
7955    const _: () = {
7956        use alloy::sol_types as alloy_sol_types;
7957        {
7958            #[doc(hidden)]
7959            #[allow(dead_code)]
7960            type UnderlyingSolTuple<'a> = ();
7961            #[doc(hidden)]
7962            type UnderlyingRustTuple<'a> = ();
7963            #[cfg(test)]
7964            #[allow(dead_code, unreachable_patterns)]
7965            fn _type_assertion(
7966                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7967            ) {
7968                match _t {
7969                    alloy_sol_types::private::AssertTypeEq::<
7970                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7971                    >(_) => {}
7972                }
7973            }
7974            #[automatically_derived]
7975            #[doc(hidden)]
7976            impl ::core::convert::From<blocksPerEpochCall> for UnderlyingRustTuple<'_> {
7977                fn from(value: blocksPerEpochCall) -> Self {
7978                    ()
7979                }
7980            }
7981            #[automatically_derived]
7982            #[doc(hidden)]
7983            impl ::core::convert::From<UnderlyingRustTuple<'_>> for blocksPerEpochCall {
7984                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7985                    Self
7986                }
7987            }
7988        }
7989        {
7990            #[doc(hidden)]
7991            #[allow(dead_code)]
7992            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
7993            #[doc(hidden)]
7994            type UnderlyingRustTuple<'a> = (u64,);
7995            #[cfg(test)]
7996            #[allow(dead_code, unreachable_patterns)]
7997            fn _type_assertion(
7998                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7999            ) {
8000                match _t {
8001                    alloy_sol_types::private::AssertTypeEq::<
8002                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8003                    >(_) => {}
8004                }
8005            }
8006            #[automatically_derived]
8007            #[doc(hidden)]
8008            impl ::core::convert::From<blocksPerEpochReturn>
8009            for UnderlyingRustTuple<'_> {
8010                fn from(value: blocksPerEpochReturn) -> Self {
8011                    (value._0,)
8012                }
8013            }
8014            #[automatically_derived]
8015            #[doc(hidden)]
8016            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8017            for blocksPerEpochReturn {
8018                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8019                    Self { _0: tuple.0 }
8020                }
8021            }
8022        }
8023        #[automatically_derived]
8024        impl alloy_sol_types::SolCall for blocksPerEpochCall {
8025            type Parameters<'a> = ();
8026            type Token<'a> = <Self::Parameters<
8027                'a,
8028            > as alloy_sol_types::SolType>::Token<'a>;
8029            type Return = u64;
8030            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8031            type ReturnToken<'a> = <Self::ReturnTuple<
8032                'a,
8033            > as alloy_sol_types::SolType>::Token<'a>;
8034            const SIGNATURE: &'static str = "blocksPerEpoch()";
8035            const SELECTOR: [u8; 4] = [240u8, 104u8, 32u8, 84u8];
8036            #[inline]
8037            fn new<'a>(
8038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8039            ) -> Self {
8040                tuple.into()
8041            }
8042            #[inline]
8043            fn tokenize(&self) -> Self::Token<'_> {
8044                ()
8045            }
8046            #[inline]
8047            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8048                (
8049                    <alloy::sol_types::sol_data::Uint<
8050                        64,
8051                    > as alloy_sol_types::SolType>::tokenize(ret),
8052                )
8053            }
8054            #[inline]
8055            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8056                <Self::ReturnTuple<
8057                    '_,
8058                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8059                    .map(|r| {
8060                        let r: blocksPerEpochReturn = r.into();
8061                        r._0
8062                    })
8063            }
8064            #[inline]
8065            fn abi_decode_returns_validate(
8066                data: &[u8],
8067            ) -> alloy_sol_types::Result<Self::Return> {
8068                <Self::ReturnTuple<
8069                    '_,
8070                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8071                    .map(|r| {
8072                        let r: blocksPerEpochReturn = r.into();
8073                        r._0
8074                    })
8075            }
8076        }
8077    };
8078    #[derive(serde::Serialize, serde::Deserialize)]
8079    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8080    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
8081```solidity
8082function currentBlockNumber() external view returns (uint256);
8083```*/
8084    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8085    #[derive(Clone)]
8086    pub struct currentBlockNumberCall;
8087    #[derive(serde::Serialize, serde::Deserialize)]
8088    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8089    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
8090    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8091    #[derive(Clone)]
8092    pub struct currentBlockNumberReturn {
8093        #[allow(missing_docs)]
8094        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8095    }
8096    #[allow(
8097        non_camel_case_types,
8098        non_snake_case,
8099        clippy::pub_underscore_fields,
8100        clippy::style
8101    )]
8102    const _: () = {
8103        use alloy::sol_types as alloy_sol_types;
8104        {
8105            #[doc(hidden)]
8106            #[allow(dead_code)]
8107            type UnderlyingSolTuple<'a> = ();
8108            #[doc(hidden)]
8109            type UnderlyingRustTuple<'a> = ();
8110            #[cfg(test)]
8111            #[allow(dead_code, unreachable_patterns)]
8112            fn _type_assertion(
8113                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8114            ) {
8115                match _t {
8116                    alloy_sol_types::private::AssertTypeEq::<
8117                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8118                    >(_) => {}
8119                }
8120            }
8121            #[automatically_derived]
8122            #[doc(hidden)]
8123            impl ::core::convert::From<currentBlockNumberCall>
8124            for UnderlyingRustTuple<'_> {
8125                fn from(value: currentBlockNumberCall) -> Self {
8126                    ()
8127                }
8128            }
8129            #[automatically_derived]
8130            #[doc(hidden)]
8131            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8132            for currentBlockNumberCall {
8133                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8134                    Self
8135                }
8136            }
8137        }
8138        {
8139            #[doc(hidden)]
8140            #[allow(dead_code)]
8141            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8142            #[doc(hidden)]
8143            type UnderlyingRustTuple<'a> = (
8144                alloy::sol_types::private::primitives::aliases::U256,
8145            );
8146            #[cfg(test)]
8147            #[allow(dead_code, unreachable_patterns)]
8148            fn _type_assertion(
8149                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8150            ) {
8151                match _t {
8152                    alloy_sol_types::private::AssertTypeEq::<
8153                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8154                    >(_) => {}
8155                }
8156            }
8157            #[automatically_derived]
8158            #[doc(hidden)]
8159            impl ::core::convert::From<currentBlockNumberReturn>
8160            for UnderlyingRustTuple<'_> {
8161                fn from(value: currentBlockNumberReturn) -> Self {
8162                    (value._0,)
8163                }
8164            }
8165            #[automatically_derived]
8166            #[doc(hidden)]
8167            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8168            for currentBlockNumberReturn {
8169                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8170                    Self { _0: tuple.0 }
8171                }
8172            }
8173        }
8174        #[automatically_derived]
8175        impl alloy_sol_types::SolCall for currentBlockNumberCall {
8176            type Parameters<'a> = ();
8177            type Token<'a> = <Self::Parameters<
8178                'a,
8179            > as alloy_sol_types::SolType>::Token<'a>;
8180            type Return = alloy::sol_types::private::primitives::aliases::U256;
8181            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8182            type ReturnToken<'a> = <Self::ReturnTuple<
8183                'a,
8184            > as alloy_sol_types::SolType>::Token<'a>;
8185            const SIGNATURE: &'static str = "currentBlockNumber()";
8186            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
8187            #[inline]
8188            fn new<'a>(
8189                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8190            ) -> Self {
8191                tuple.into()
8192            }
8193            #[inline]
8194            fn tokenize(&self) -> Self::Token<'_> {
8195                ()
8196            }
8197            #[inline]
8198            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8199                (
8200                    <alloy::sol_types::sol_data::Uint<
8201                        256,
8202                    > as alloy_sol_types::SolType>::tokenize(ret),
8203                )
8204            }
8205            #[inline]
8206            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8207                <Self::ReturnTuple<
8208                    '_,
8209                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8210                    .map(|r| {
8211                        let r: currentBlockNumberReturn = r.into();
8212                        r._0
8213                    })
8214            }
8215            #[inline]
8216            fn abi_decode_returns_validate(
8217                data: &[u8],
8218            ) -> alloy_sol_types::Result<Self::Return> {
8219                <Self::ReturnTuple<
8220                    '_,
8221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8222                    .map(|r| {
8223                        let r: currentBlockNumberReturn = r.into();
8224                        r._0
8225                    })
8226            }
8227        }
8228    };
8229    #[derive(serde::Serialize, serde::Deserialize)]
8230    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8231    /**Function with signature `currentEpoch()` and selector `0x76671808`.
8232```solidity
8233function currentEpoch() external view returns (uint64);
8234```*/
8235    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8236    #[derive(Clone)]
8237    pub struct currentEpochCall;
8238    #[derive(serde::Serialize, serde::Deserialize)]
8239    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8240    ///Container type for the return parameters of the [`currentEpoch()`](currentEpochCall) function.
8241    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8242    #[derive(Clone)]
8243    pub struct currentEpochReturn {
8244        #[allow(missing_docs)]
8245        pub _0: u64,
8246    }
8247    #[allow(
8248        non_camel_case_types,
8249        non_snake_case,
8250        clippy::pub_underscore_fields,
8251        clippy::style
8252    )]
8253    const _: () = {
8254        use alloy::sol_types as alloy_sol_types;
8255        {
8256            #[doc(hidden)]
8257            #[allow(dead_code)]
8258            type UnderlyingSolTuple<'a> = ();
8259            #[doc(hidden)]
8260            type UnderlyingRustTuple<'a> = ();
8261            #[cfg(test)]
8262            #[allow(dead_code, unreachable_patterns)]
8263            fn _type_assertion(
8264                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8265            ) {
8266                match _t {
8267                    alloy_sol_types::private::AssertTypeEq::<
8268                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8269                    >(_) => {}
8270                }
8271            }
8272            #[automatically_derived]
8273            #[doc(hidden)]
8274            impl ::core::convert::From<currentEpochCall> for UnderlyingRustTuple<'_> {
8275                fn from(value: currentEpochCall) -> Self {
8276                    ()
8277                }
8278            }
8279            #[automatically_derived]
8280            #[doc(hidden)]
8281            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochCall {
8282                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8283                    Self
8284                }
8285            }
8286        }
8287        {
8288            #[doc(hidden)]
8289            #[allow(dead_code)]
8290            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8291            #[doc(hidden)]
8292            type UnderlyingRustTuple<'a> = (u64,);
8293            #[cfg(test)]
8294            #[allow(dead_code, unreachable_patterns)]
8295            fn _type_assertion(
8296                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8297            ) {
8298                match _t {
8299                    alloy_sol_types::private::AssertTypeEq::<
8300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8301                    >(_) => {}
8302                }
8303            }
8304            #[automatically_derived]
8305            #[doc(hidden)]
8306            impl ::core::convert::From<currentEpochReturn> for UnderlyingRustTuple<'_> {
8307                fn from(value: currentEpochReturn) -> Self {
8308                    (value._0,)
8309                }
8310            }
8311            #[automatically_derived]
8312            #[doc(hidden)]
8313            impl ::core::convert::From<UnderlyingRustTuple<'_>> for currentEpochReturn {
8314                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8315                    Self { _0: tuple.0 }
8316                }
8317            }
8318        }
8319        #[automatically_derived]
8320        impl alloy_sol_types::SolCall for currentEpochCall {
8321            type Parameters<'a> = ();
8322            type Token<'a> = <Self::Parameters<
8323                'a,
8324            > as alloy_sol_types::SolType>::Token<'a>;
8325            type Return = u64;
8326            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8327            type ReturnToken<'a> = <Self::ReturnTuple<
8328                'a,
8329            > as alloy_sol_types::SolType>::Token<'a>;
8330            const SIGNATURE: &'static str = "currentEpoch()";
8331            const SELECTOR: [u8; 4] = [118u8, 103u8, 24u8, 8u8];
8332            #[inline]
8333            fn new<'a>(
8334                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8335            ) -> Self {
8336                tuple.into()
8337            }
8338            #[inline]
8339            fn tokenize(&self) -> Self::Token<'_> {
8340                ()
8341            }
8342            #[inline]
8343            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8344                (
8345                    <alloy::sol_types::sol_data::Uint<
8346                        64,
8347                    > as alloy_sol_types::SolType>::tokenize(ret),
8348                )
8349            }
8350            #[inline]
8351            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8352                <Self::ReturnTuple<
8353                    '_,
8354                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8355                    .map(|r| {
8356                        let r: currentEpochReturn = r.into();
8357                        r._0
8358                    })
8359            }
8360            #[inline]
8361            fn abi_decode_returns_validate(
8362                data: &[u8],
8363            ) -> alloy_sol_types::Result<Self::Return> {
8364                <Self::ReturnTuple<
8365                    '_,
8366                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8367                    .map(|r| {
8368                        let r: currentEpochReturn = r.into();
8369                        r._0
8370                    })
8371            }
8372        }
8373    };
8374    #[derive(serde::Serialize, serde::Deserialize)]
8375    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8376    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
8377```solidity
8378function disablePermissionedProverMode() external;
8379```*/
8380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8381    #[derive(Clone)]
8382    pub struct disablePermissionedProverModeCall;
8383    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
8384    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8385    #[derive(Clone)]
8386    pub struct disablePermissionedProverModeReturn {}
8387    #[allow(
8388        non_camel_case_types,
8389        non_snake_case,
8390        clippy::pub_underscore_fields,
8391        clippy::style
8392    )]
8393    const _: () = {
8394        use alloy::sol_types as alloy_sol_types;
8395        {
8396            #[doc(hidden)]
8397            #[allow(dead_code)]
8398            type UnderlyingSolTuple<'a> = ();
8399            #[doc(hidden)]
8400            type UnderlyingRustTuple<'a> = ();
8401            #[cfg(test)]
8402            #[allow(dead_code, unreachable_patterns)]
8403            fn _type_assertion(
8404                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8405            ) {
8406                match _t {
8407                    alloy_sol_types::private::AssertTypeEq::<
8408                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8409                    >(_) => {}
8410                }
8411            }
8412            #[automatically_derived]
8413            #[doc(hidden)]
8414            impl ::core::convert::From<disablePermissionedProverModeCall>
8415            for UnderlyingRustTuple<'_> {
8416                fn from(value: disablePermissionedProverModeCall) -> Self {
8417                    ()
8418                }
8419            }
8420            #[automatically_derived]
8421            #[doc(hidden)]
8422            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8423            for disablePermissionedProverModeCall {
8424                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8425                    Self
8426                }
8427            }
8428        }
8429        {
8430            #[doc(hidden)]
8431            #[allow(dead_code)]
8432            type UnderlyingSolTuple<'a> = ();
8433            #[doc(hidden)]
8434            type UnderlyingRustTuple<'a> = ();
8435            #[cfg(test)]
8436            #[allow(dead_code, unreachable_patterns)]
8437            fn _type_assertion(
8438                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8439            ) {
8440                match _t {
8441                    alloy_sol_types::private::AssertTypeEq::<
8442                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8443                    >(_) => {}
8444                }
8445            }
8446            #[automatically_derived]
8447            #[doc(hidden)]
8448            impl ::core::convert::From<disablePermissionedProverModeReturn>
8449            for UnderlyingRustTuple<'_> {
8450                fn from(value: disablePermissionedProverModeReturn) -> Self {
8451                    ()
8452                }
8453            }
8454            #[automatically_derived]
8455            #[doc(hidden)]
8456            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8457            for disablePermissionedProverModeReturn {
8458                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8459                    Self {}
8460                }
8461            }
8462        }
8463        impl disablePermissionedProverModeReturn {
8464            fn _tokenize(
8465                &self,
8466            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
8467                '_,
8468            > {
8469                ()
8470            }
8471        }
8472        #[automatically_derived]
8473        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
8474            type Parameters<'a> = ();
8475            type Token<'a> = <Self::Parameters<
8476                'a,
8477            > as alloy_sol_types::SolType>::Token<'a>;
8478            type Return = disablePermissionedProverModeReturn;
8479            type ReturnTuple<'a> = ();
8480            type ReturnToken<'a> = <Self::ReturnTuple<
8481                'a,
8482            > as alloy_sol_types::SolType>::Token<'a>;
8483            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
8484            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
8485            #[inline]
8486            fn new<'a>(
8487                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8488            ) -> Self {
8489                tuple.into()
8490            }
8491            #[inline]
8492            fn tokenize(&self) -> Self::Token<'_> {
8493                ()
8494            }
8495            #[inline]
8496            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8497                disablePermissionedProverModeReturn::_tokenize(ret)
8498            }
8499            #[inline]
8500            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8501                <Self::ReturnTuple<
8502                    '_,
8503                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8504                    .map(Into::into)
8505            }
8506            #[inline]
8507            fn abi_decode_returns_validate(
8508                data: &[u8],
8509            ) -> alloy_sol_types::Result<Self::Return> {
8510                <Self::ReturnTuple<
8511                    '_,
8512                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8513                    .map(Into::into)
8514            }
8515        }
8516    };
8517    #[derive(serde::Serialize, serde::Deserialize)]
8518    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8519    /**Function with signature `epochFromBlockNumber(uint64,uint64)` and selector `0x90c14390`.
8520```solidity
8521function epochFromBlockNumber(uint64 _blockNum, uint64 _blocksPerEpoch) external pure returns (uint64);
8522```*/
8523    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8524    #[derive(Clone)]
8525    pub struct epochFromBlockNumberCall {
8526        #[allow(missing_docs)]
8527        pub _blockNum: u64,
8528        #[allow(missing_docs)]
8529        pub _blocksPerEpoch: u64,
8530    }
8531    #[derive(serde::Serialize, serde::Deserialize)]
8532    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8533    ///Container type for the return parameters of the [`epochFromBlockNumber(uint64,uint64)`](epochFromBlockNumberCall) function.
8534    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8535    #[derive(Clone)]
8536    pub struct epochFromBlockNumberReturn {
8537        #[allow(missing_docs)]
8538        pub _0: u64,
8539    }
8540    #[allow(
8541        non_camel_case_types,
8542        non_snake_case,
8543        clippy::pub_underscore_fields,
8544        clippy::style
8545    )]
8546    const _: () = {
8547        use alloy::sol_types as alloy_sol_types;
8548        {
8549            #[doc(hidden)]
8550            #[allow(dead_code)]
8551            type UnderlyingSolTuple<'a> = (
8552                alloy::sol_types::sol_data::Uint<64>,
8553                alloy::sol_types::sol_data::Uint<64>,
8554            );
8555            #[doc(hidden)]
8556            type UnderlyingRustTuple<'a> = (u64, u64);
8557            #[cfg(test)]
8558            #[allow(dead_code, unreachable_patterns)]
8559            fn _type_assertion(
8560                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8561            ) {
8562                match _t {
8563                    alloy_sol_types::private::AssertTypeEq::<
8564                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8565                    >(_) => {}
8566                }
8567            }
8568            #[automatically_derived]
8569            #[doc(hidden)]
8570            impl ::core::convert::From<epochFromBlockNumberCall>
8571            for UnderlyingRustTuple<'_> {
8572                fn from(value: epochFromBlockNumberCall) -> Self {
8573                    (value._blockNum, value._blocksPerEpoch)
8574                }
8575            }
8576            #[automatically_derived]
8577            #[doc(hidden)]
8578            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8579            for epochFromBlockNumberCall {
8580                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8581                    Self {
8582                        _blockNum: tuple.0,
8583                        _blocksPerEpoch: tuple.1,
8584                    }
8585                }
8586            }
8587        }
8588        {
8589            #[doc(hidden)]
8590            #[allow(dead_code)]
8591            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8592            #[doc(hidden)]
8593            type UnderlyingRustTuple<'a> = (u64,);
8594            #[cfg(test)]
8595            #[allow(dead_code, unreachable_patterns)]
8596            fn _type_assertion(
8597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8598            ) {
8599                match _t {
8600                    alloy_sol_types::private::AssertTypeEq::<
8601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8602                    >(_) => {}
8603                }
8604            }
8605            #[automatically_derived]
8606            #[doc(hidden)]
8607            impl ::core::convert::From<epochFromBlockNumberReturn>
8608            for UnderlyingRustTuple<'_> {
8609                fn from(value: epochFromBlockNumberReturn) -> Self {
8610                    (value._0,)
8611                }
8612            }
8613            #[automatically_derived]
8614            #[doc(hidden)]
8615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8616            for epochFromBlockNumberReturn {
8617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8618                    Self { _0: tuple.0 }
8619                }
8620            }
8621        }
8622        #[automatically_derived]
8623        impl alloy_sol_types::SolCall for epochFromBlockNumberCall {
8624            type Parameters<'a> = (
8625                alloy::sol_types::sol_data::Uint<64>,
8626                alloy::sol_types::sol_data::Uint<64>,
8627            );
8628            type Token<'a> = <Self::Parameters<
8629                'a,
8630            > as alloy_sol_types::SolType>::Token<'a>;
8631            type Return = u64;
8632            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8633            type ReturnToken<'a> = <Self::ReturnTuple<
8634                'a,
8635            > as alloy_sol_types::SolType>::Token<'a>;
8636            const SIGNATURE: &'static str = "epochFromBlockNumber(uint64,uint64)";
8637            const SELECTOR: [u8; 4] = [144u8, 193u8, 67u8, 144u8];
8638            #[inline]
8639            fn new<'a>(
8640                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8641            ) -> Self {
8642                tuple.into()
8643            }
8644            #[inline]
8645            fn tokenize(&self) -> Self::Token<'_> {
8646                (
8647                    <alloy::sol_types::sol_data::Uint<
8648                        64,
8649                    > as alloy_sol_types::SolType>::tokenize(&self._blockNum),
8650                    <alloy::sol_types::sol_data::Uint<
8651                        64,
8652                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
8653                )
8654            }
8655            #[inline]
8656            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8657                (
8658                    <alloy::sol_types::sol_data::Uint<
8659                        64,
8660                    > as alloy_sol_types::SolType>::tokenize(ret),
8661                )
8662            }
8663            #[inline]
8664            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8665                <Self::ReturnTuple<
8666                    '_,
8667                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8668                    .map(|r| {
8669                        let r: epochFromBlockNumberReturn = r.into();
8670                        r._0
8671                    })
8672            }
8673            #[inline]
8674            fn abi_decode_returns_validate(
8675                data: &[u8],
8676            ) -> alloy_sol_types::Result<Self::Return> {
8677                <Self::ReturnTuple<
8678                    '_,
8679                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8680                    .map(|r| {
8681                        let r: epochFromBlockNumberReturn = r.into();
8682                        r._0
8683                    })
8684            }
8685        }
8686    };
8687    #[derive(serde::Serialize, serde::Deserialize)]
8688    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8689    /**Function with signature `epochStartBlock()` and selector `0x3ed55b7b`.
8690```solidity
8691function epochStartBlock() external view returns (uint64);
8692```*/
8693    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8694    #[derive(Clone)]
8695    pub struct epochStartBlockCall;
8696    #[derive(serde::Serialize, serde::Deserialize)]
8697    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8698    ///Container type for the return parameters of the [`epochStartBlock()`](epochStartBlockCall) function.
8699    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8700    #[derive(Clone)]
8701    pub struct epochStartBlockReturn {
8702        #[allow(missing_docs)]
8703        pub _0: u64,
8704    }
8705    #[allow(
8706        non_camel_case_types,
8707        non_snake_case,
8708        clippy::pub_underscore_fields,
8709        clippy::style
8710    )]
8711    const _: () = {
8712        use alloy::sol_types as alloy_sol_types;
8713        {
8714            #[doc(hidden)]
8715            #[allow(dead_code)]
8716            type UnderlyingSolTuple<'a> = ();
8717            #[doc(hidden)]
8718            type UnderlyingRustTuple<'a> = ();
8719            #[cfg(test)]
8720            #[allow(dead_code, unreachable_patterns)]
8721            fn _type_assertion(
8722                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8723            ) {
8724                match _t {
8725                    alloy_sol_types::private::AssertTypeEq::<
8726                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8727                    >(_) => {}
8728                }
8729            }
8730            #[automatically_derived]
8731            #[doc(hidden)]
8732            impl ::core::convert::From<epochStartBlockCall> for UnderlyingRustTuple<'_> {
8733                fn from(value: epochStartBlockCall) -> Self {
8734                    ()
8735                }
8736            }
8737            #[automatically_derived]
8738            #[doc(hidden)]
8739            impl ::core::convert::From<UnderlyingRustTuple<'_>> for epochStartBlockCall {
8740                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8741                    Self
8742                }
8743            }
8744        }
8745        {
8746            #[doc(hidden)]
8747            #[allow(dead_code)]
8748            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8749            #[doc(hidden)]
8750            type UnderlyingRustTuple<'a> = (u64,);
8751            #[cfg(test)]
8752            #[allow(dead_code, unreachable_patterns)]
8753            fn _type_assertion(
8754                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8755            ) {
8756                match _t {
8757                    alloy_sol_types::private::AssertTypeEq::<
8758                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8759                    >(_) => {}
8760                }
8761            }
8762            #[automatically_derived]
8763            #[doc(hidden)]
8764            impl ::core::convert::From<epochStartBlockReturn>
8765            for UnderlyingRustTuple<'_> {
8766                fn from(value: epochStartBlockReturn) -> Self {
8767                    (value._0,)
8768                }
8769            }
8770            #[automatically_derived]
8771            #[doc(hidden)]
8772            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8773            for epochStartBlockReturn {
8774                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8775                    Self { _0: tuple.0 }
8776                }
8777            }
8778        }
8779        #[automatically_derived]
8780        impl alloy_sol_types::SolCall for epochStartBlockCall {
8781            type Parameters<'a> = ();
8782            type Token<'a> = <Self::Parameters<
8783                'a,
8784            > as alloy_sol_types::SolType>::Token<'a>;
8785            type Return = u64;
8786            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
8787            type ReturnToken<'a> = <Self::ReturnTuple<
8788                'a,
8789            > as alloy_sol_types::SolType>::Token<'a>;
8790            const SIGNATURE: &'static str = "epochStartBlock()";
8791            const SELECTOR: [u8; 4] = [62u8, 213u8, 91u8, 123u8];
8792            #[inline]
8793            fn new<'a>(
8794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8795            ) -> Self {
8796                tuple.into()
8797            }
8798            #[inline]
8799            fn tokenize(&self) -> Self::Token<'_> {
8800                ()
8801            }
8802            #[inline]
8803            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8804                (
8805                    <alloy::sol_types::sol_data::Uint<
8806                        64,
8807                    > as alloy_sol_types::SolType>::tokenize(ret),
8808                )
8809            }
8810            #[inline]
8811            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8812                <Self::ReturnTuple<
8813                    '_,
8814                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8815                    .map(|r| {
8816                        let r: epochStartBlockReturn = r.into();
8817                        r._0
8818                    })
8819            }
8820            #[inline]
8821            fn abi_decode_returns_validate(
8822                data: &[u8],
8823            ) -> alloy_sol_types::Result<Self::Return> {
8824                <Self::ReturnTuple<
8825                    '_,
8826                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8827                    .map(|r| {
8828                        let r: epochStartBlockReturn = r.into();
8829                        r._0
8830                    })
8831            }
8832        }
8833    };
8834    #[derive(serde::Serialize, serde::Deserialize)]
8835    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8836    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
8837```solidity
8838function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8839```*/
8840    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8841    #[derive(Clone)]
8842    pub struct finalizedStateCall;
8843    #[derive(serde::Serialize, serde::Deserialize)]
8844    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8845    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
8846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8847    #[derive(Clone)]
8848    pub struct finalizedStateReturn {
8849        #[allow(missing_docs)]
8850        pub viewNum: u64,
8851        #[allow(missing_docs)]
8852        pub blockHeight: u64,
8853        #[allow(missing_docs)]
8854        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8855    }
8856    #[allow(
8857        non_camel_case_types,
8858        non_snake_case,
8859        clippy::pub_underscore_fields,
8860        clippy::style
8861    )]
8862    const _: () = {
8863        use alloy::sol_types as alloy_sol_types;
8864        {
8865            #[doc(hidden)]
8866            #[allow(dead_code)]
8867            type UnderlyingSolTuple<'a> = ();
8868            #[doc(hidden)]
8869            type UnderlyingRustTuple<'a> = ();
8870            #[cfg(test)]
8871            #[allow(dead_code, unreachable_patterns)]
8872            fn _type_assertion(
8873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8874            ) {
8875                match _t {
8876                    alloy_sol_types::private::AssertTypeEq::<
8877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8878                    >(_) => {}
8879                }
8880            }
8881            #[automatically_derived]
8882            #[doc(hidden)]
8883            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
8884                fn from(value: finalizedStateCall) -> Self {
8885                    ()
8886                }
8887            }
8888            #[automatically_derived]
8889            #[doc(hidden)]
8890            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
8891                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8892                    Self
8893                }
8894            }
8895        }
8896        {
8897            #[doc(hidden)]
8898            #[allow(dead_code)]
8899            type UnderlyingSolTuple<'a> = (
8900                alloy::sol_types::sol_data::Uint<64>,
8901                alloy::sol_types::sol_data::Uint<64>,
8902                BN254::ScalarField,
8903            );
8904            #[doc(hidden)]
8905            type UnderlyingRustTuple<'a> = (
8906                u64,
8907                u64,
8908                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8909            );
8910            #[cfg(test)]
8911            #[allow(dead_code, unreachable_patterns)]
8912            fn _type_assertion(
8913                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8914            ) {
8915                match _t {
8916                    alloy_sol_types::private::AssertTypeEq::<
8917                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8918                    >(_) => {}
8919                }
8920            }
8921            #[automatically_derived]
8922            #[doc(hidden)]
8923            impl ::core::convert::From<finalizedStateReturn>
8924            for UnderlyingRustTuple<'_> {
8925                fn from(value: finalizedStateReturn) -> Self {
8926                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8927                }
8928            }
8929            #[automatically_derived]
8930            #[doc(hidden)]
8931            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8932            for finalizedStateReturn {
8933                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8934                    Self {
8935                        viewNum: tuple.0,
8936                        blockHeight: tuple.1,
8937                        blockCommRoot: tuple.2,
8938                    }
8939                }
8940            }
8941        }
8942        impl finalizedStateReturn {
8943            fn _tokenize(
8944                &self,
8945            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8946                (
8947                    <alloy::sol_types::sol_data::Uint<
8948                        64,
8949                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8950                    <alloy::sol_types::sol_data::Uint<
8951                        64,
8952                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8953                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8954                        &self.blockCommRoot,
8955                    ),
8956                )
8957            }
8958        }
8959        #[automatically_derived]
8960        impl alloy_sol_types::SolCall for finalizedStateCall {
8961            type Parameters<'a> = ();
8962            type Token<'a> = <Self::Parameters<
8963                'a,
8964            > as alloy_sol_types::SolType>::Token<'a>;
8965            type Return = finalizedStateReturn;
8966            type ReturnTuple<'a> = (
8967                alloy::sol_types::sol_data::Uint<64>,
8968                alloy::sol_types::sol_data::Uint<64>,
8969                BN254::ScalarField,
8970            );
8971            type ReturnToken<'a> = <Self::ReturnTuple<
8972                'a,
8973            > as alloy_sol_types::SolType>::Token<'a>;
8974            const SIGNATURE: &'static str = "finalizedState()";
8975            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
8976            #[inline]
8977            fn new<'a>(
8978                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8979            ) -> Self {
8980                tuple.into()
8981            }
8982            #[inline]
8983            fn tokenize(&self) -> Self::Token<'_> {
8984                ()
8985            }
8986            #[inline]
8987            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8988                finalizedStateReturn::_tokenize(ret)
8989            }
8990            #[inline]
8991            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8992                <Self::ReturnTuple<
8993                    '_,
8994                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8995                    .map(Into::into)
8996            }
8997            #[inline]
8998            fn abi_decode_returns_validate(
8999                data: &[u8],
9000            ) -> alloy_sol_types::Result<Self::Return> {
9001                <Self::ReturnTuple<
9002                    '_,
9003                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9004                    .map(Into::into)
9005            }
9006        }
9007    };
9008    #[derive(serde::Serialize, serde::Deserialize)]
9009    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9010    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
9011```solidity
9012function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
9013```*/
9014    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9015    #[derive(Clone)]
9016    pub struct genesisStakeTableStateCall;
9017    #[derive(serde::Serialize, serde::Deserialize)]
9018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9019    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
9020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9021    #[derive(Clone)]
9022    pub struct genesisStakeTableStateReturn {
9023        #[allow(missing_docs)]
9024        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9025        #[allow(missing_docs)]
9026        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9027        #[allow(missing_docs)]
9028        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9029        #[allow(missing_docs)]
9030        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9031    }
9032    #[allow(
9033        non_camel_case_types,
9034        non_snake_case,
9035        clippy::pub_underscore_fields,
9036        clippy::style
9037    )]
9038    const _: () = {
9039        use alloy::sol_types as alloy_sol_types;
9040        {
9041            #[doc(hidden)]
9042            #[allow(dead_code)]
9043            type UnderlyingSolTuple<'a> = ();
9044            #[doc(hidden)]
9045            type UnderlyingRustTuple<'a> = ();
9046            #[cfg(test)]
9047            #[allow(dead_code, unreachable_patterns)]
9048            fn _type_assertion(
9049                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9050            ) {
9051                match _t {
9052                    alloy_sol_types::private::AssertTypeEq::<
9053                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9054                    >(_) => {}
9055                }
9056            }
9057            #[automatically_derived]
9058            #[doc(hidden)]
9059            impl ::core::convert::From<genesisStakeTableStateCall>
9060            for UnderlyingRustTuple<'_> {
9061                fn from(value: genesisStakeTableStateCall) -> Self {
9062                    ()
9063                }
9064            }
9065            #[automatically_derived]
9066            #[doc(hidden)]
9067            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9068            for genesisStakeTableStateCall {
9069                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9070                    Self
9071                }
9072            }
9073        }
9074        {
9075            #[doc(hidden)]
9076            #[allow(dead_code)]
9077            type UnderlyingSolTuple<'a> = (
9078                alloy::sol_types::sol_data::Uint<256>,
9079                BN254::ScalarField,
9080                BN254::ScalarField,
9081                BN254::ScalarField,
9082            );
9083            #[doc(hidden)]
9084            type UnderlyingRustTuple<'a> = (
9085                alloy::sol_types::private::primitives::aliases::U256,
9086                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9087                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9088                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9089            );
9090            #[cfg(test)]
9091            #[allow(dead_code, unreachable_patterns)]
9092            fn _type_assertion(
9093                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9094            ) {
9095                match _t {
9096                    alloy_sol_types::private::AssertTypeEq::<
9097                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9098                    >(_) => {}
9099                }
9100            }
9101            #[automatically_derived]
9102            #[doc(hidden)]
9103            impl ::core::convert::From<genesisStakeTableStateReturn>
9104            for UnderlyingRustTuple<'_> {
9105                fn from(value: genesisStakeTableStateReturn) -> Self {
9106                    (
9107                        value.threshold,
9108                        value.blsKeyComm,
9109                        value.schnorrKeyComm,
9110                        value.amountComm,
9111                    )
9112                }
9113            }
9114            #[automatically_derived]
9115            #[doc(hidden)]
9116            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9117            for genesisStakeTableStateReturn {
9118                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9119                    Self {
9120                        threshold: tuple.0,
9121                        blsKeyComm: tuple.1,
9122                        schnorrKeyComm: tuple.2,
9123                        amountComm: tuple.3,
9124                    }
9125                }
9126            }
9127        }
9128        impl genesisStakeTableStateReturn {
9129            fn _tokenize(
9130                &self,
9131            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
9132                '_,
9133            > {
9134                (
9135                    <alloy::sol_types::sol_data::Uint<
9136                        256,
9137                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9138                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9139                        &self.blsKeyComm,
9140                    ),
9141                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9142                        &self.schnorrKeyComm,
9143                    ),
9144                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9145                        &self.amountComm,
9146                    ),
9147                )
9148            }
9149        }
9150        #[automatically_derived]
9151        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
9152            type Parameters<'a> = ();
9153            type Token<'a> = <Self::Parameters<
9154                'a,
9155            > as alloy_sol_types::SolType>::Token<'a>;
9156            type Return = genesisStakeTableStateReturn;
9157            type ReturnTuple<'a> = (
9158                alloy::sol_types::sol_data::Uint<256>,
9159                BN254::ScalarField,
9160                BN254::ScalarField,
9161                BN254::ScalarField,
9162            );
9163            type ReturnToken<'a> = <Self::ReturnTuple<
9164                'a,
9165            > as alloy_sol_types::SolType>::Token<'a>;
9166            const SIGNATURE: &'static str = "genesisStakeTableState()";
9167            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
9168            #[inline]
9169            fn new<'a>(
9170                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9171            ) -> Self {
9172                tuple.into()
9173            }
9174            #[inline]
9175            fn tokenize(&self) -> Self::Token<'_> {
9176                ()
9177            }
9178            #[inline]
9179            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9180                genesisStakeTableStateReturn::_tokenize(ret)
9181            }
9182            #[inline]
9183            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9184                <Self::ReturnTuple<
9185                    '_,
9186                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9187                    .map(Into::into)
9188            }
9189            #[inline]
9190            fn abi_decode_returns_validate(
9191                data: &[u8],
9192            ) -> alloy_sol_types::Result<Self::Return> {
9193                <Self::ReturnTuple<
9194                    '_,
9195                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9196                    .map(Into::into)
9197            }
9198        }
9199    };
9200    #[derive(serde::Serialize, serde::Deserialize)]
9201    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9202    /**Function with signature `genesisState()` and selector `0xd24d933d`.
9203```solidity
9204function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
9205```*/
9206    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9207    #[derive(Clone)]
9208    pub struct genesisStateCall;
9209    #[derive(serde::Serialize, serde::Deserialize)]
9210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9211    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
9212    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9213    #[derive(Clone)]
9214    pub struct genesisStateReturn {
9215        #[allow(missing_docs)]
9216        pub viewNum: u64,
9217        #[allow(missing_docs)]
9218        pub blockHeight: u64,
9219        #[allow(missing_docs)]
9220        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9221    }
9222    #[allow(
9223        non_camel_case_types,
9224        non_snake_case,
9225        clippy::pub_underscore_fields,
9226        clippy::style
9227    )]
9228    const _: () = {
9229        use alloy::sol_types as alloy_sol_types;
9230        {
9231            #[doc(hidden)]
9232            #[allow(dead_code)]
9233            type UnderlyingSolTuple<'a> = ();
9234            #[doc(hidden)]
9235            type UnderlyingRustTuple<'a> = ();
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<genesisStateCall> for UnderlyingRustTuple<'_> {
9250                fn from(value: genesisStateCall) -> Self {
9251                    ()
9252                }
9253            }
9254            #[automatically_derived]
9255            #[doc(hidden)]
9256            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
9257                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9258                    Self
9259                }
9260            }
9261        }
9262        {
9263            #[doc(hidden)]
9264            #[allow(dead_code)]
9265            type UnderlyingSolTuple<'a> = (
9266                alloy::sol_types::sol_data::Uint<64>,
9267                alloy::sol_types::sol_data::Uint<64>,
9268                BN254::ScalarField,
9269            );
9270            #[doc(hidden)]
9271            type UnderlyingRustTuple<'a> = (
9272                u64,
9273                u64,
9274                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9275            );
9276            #[cfg(test)]
9277            #[allow(dead_code, unreachable_patterns)]
9278            fn _type_assertion(
9279                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9280            ) {
9281                match _t {
9282                    alloy_sol_types::private::AssertTypeEq::<
9283                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9284                    >(_) => {}
9285                }
9286            }
9287            #[automatically_derived]
9288            #[doc(hidden)]
9289            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
9290                fn from(value: genesisStateReturn) -> Self {
9291                    (value.viewNum, value.blockHeight, value.blockCommRoot)
9292                }
9293            }
9294            #[automatically_derived]
9295            #[doc(hidden)]
9296            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
9297                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9298                    Self {
9299                        viewNum: tuple.0,
9300                        blockHeight: tuple.1,
9301                        blockCommRoot: tuple.2,
9302                    }
9303                }
9304            }
9305        }
9306        impl genesisStateReturn {
9307            fn _tokenize(
9308                &self,
9309            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9310                (
9311                    <alloy::sol_types::sol_data::Uint<
9312                        64,
9313                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
9314                    <alloy::sol_types::sol_data::Uint<
9315                        64,
9316                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
9317                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9318                        &self.blockCommRoot,
9319                    ),
9320                )
9321            }
9322        }
9323        #[automatically_derived]
9324        impl alloy_sol_types::SolCall for genesisStateCall {
9325            type Parameters<'a> = ();
9326            type Token<'a> = <Self::Parameters<
9327                'a,
9328            > as alloy_sol_types::SolType>::Token<'a>;
9329            type Return = genesisStateReturn;
9330            type ReturnTuple<'a> = (
9331                alloy::sol_types::sol_data::Uint<64>,
9332                alloy::sol_types::sol_data::Uint<64>,
9333                BN254::ScalarField,
9334            );
9335            type ReturnToken<'a> = <Self::ReturnTuple<
9336                'a,
9337            > as alloy_sol_types::SolType>::Token<'a>;
9338            const SIGNATURE: &'static str = "genesisState()";
9339            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
9340            #[inline]
9341            fn new<'a>(
9342                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9343            ) -> Self {
9344                tuple.into()
9345            }
9346            #[inline]
9347            fn tokenize(&self) -> Self::Token<'_> {
9348                ()
9349            }
9350            #[inline]
9351            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9352                genesisStateReturn::_tokenize(ret)
9353            }
9354            #[inline]
9355            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9356                <Self::ReturnTuple<
9357                    '_,
9358                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9359                    .map(Into::into)
9360            }
9361            #[inline]
9362            fn abi_decode_returns_validate(
9363                data: &[u8],
9364            ) -> alloy_sol_types::Result<Self::Return> {
9365                <Self::ReturnTuple<
9366                    '_,
9367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9368                    .map(Into::into)
9369            }
9370        }
9371    };
9372    #[derive(serde::Serialize, serde::Deserialize)]
9373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9374    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
9375```solidity
9376function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
9377```*/
9378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9379    #[derive(Clone)]
9380    pub struct getHotShotCommitmentCall {
9381        #[allow(missing_docs)]
9382        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
9383    }
9384    #[derive(serde::Serialize, serde::Deserialize)]
9385    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9386    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
9387    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9388    #[derive(Clone)]
9389    pub struct getHotShotCommitmentReturn {
9390        #[allow(missing_docs)]
9391        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9392        #[allow(missing_docs)]
9393        pub hotshotBlockHeight: u64,
9394    }
9395    #[allow(
9396        non_camel_case_types,
9397        non_snake_case,
9398        clippy::pub_underscore_fields,
9399        clippy::style
9400    )]
9401    const _: () = {
9402        use alloy::sol_types as alloy_sol_types;
9403        {
9404            #[doc(hidden)]
9405            #[allow(dead_code)]
9406            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9407            #[doc(hidden)]
9408            type UnderlyingRustTuple<'a> = (
9409                alloy::sol_types::private::primitives::aliases::U256,
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<getHotShotCommitmentCall>
9425            for UnderlyingRustTuple<'_> {
9426                fn from(value: getHotShotCommitmentCall) -> Self {
9427                    (value.hotShotBlockHeight,)
9428                }
9429            }
9430            #[automatically_derived]
9431            #[doc(hidden)]
9432            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9433            for getHotShotCommitmentCall {
9434                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9435                    Self {
9436                        hotShotBlockHeight: tuple.0,
9437                    }
9438                }
9439            }
9440        }
9441        {
9442            #[doc(hidden)]
9443            #[allow(dead_code)]
9444            type UnderlyingSolTuple<'a> = (
9445                BN254::ScalarField,
9446                alloy::sol_types::sol_data::Uint<64>,
9447            );
9448            #[doc(hidden)]
9449            type UnderlyingRustTuple<'a> = (
9450                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9451                u64,
9452            );
9453            #[cfg(test)]
9454            #[allow(dead_code, unreachable_patterns)]
9455            fn _type_assertion(
9456                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9457            ) {
9458                match _t {
9459                    alloy_sol_types::private::AssertTypeEq::<
9460                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9461                    >(_) => {}
9462                }
9463            }
9464            #[automatically_derived]
9465            #[doc(hidden)]
9466            impl ::core::convert::From<getHotShotCommitmentReturn>
9467            for UnderlyingRustTuple<'_> {
9468                fn from(value: getHotShotCommitmentReturn) -> Self {
9469                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
9470                }
9471            }
9472            #[automatically_derived]
9473            #[doc(hidden)]
9474            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9475            for getHotShotCommitmentReturn {
9476                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9477                    Self {
9478                        hotShotBlockCommRoot: tuple.0,
9479                        hotshotBlockHeight: tuple.1,
9480                    }
9481                }
9482            }
9483        }
9484        impl getHotShotCommitmentReturn {
9485            fn _tokenize(
9486                &self,
9487            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
9488                '_,
9489            > {
9490                (
9491                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
9492                        &self.hotShotBlockCommRoot,
9493                    ),
9494                    <alloy::sol_types::sol_data::Uint<
9495                        64,
9496                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
9497                )
9498            }
9499        }
9500        #[automatically_derived]
9501        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
9502            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9503            type Token<'a> = <Self::Parameters<
9504                'a,
9505            > as alloy_sol_types::SolType>::Token<'a>;
9506            type Return = getHotShotCommitmentReturn;
9507            type ReturnTuple<'a> = (
9508                BN254::ScalarField,
9509                alloy::sol_types::sol_data::Uint<64>,
9510            );
9511            type ReturnToken<'a> = <Self::ReturnTuple<
9512                'a,
9513            > as alloy_sol_types::SolType>::Token<'a>;
9514            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
9515            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
9516            #[inline]
9517            fn new<'a>(
9518                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9519            ) -> Self {
9520                tuple.into()
9521            }
9522            #[inline]
9523            fn tokenize(&self) -> Self::Token<'_> {
9524                (
9525                    <alloy::sol_types::sol_data::Uint<
9526                        256,
9527                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
9528                )
9529            }
9530            #[inline]
9531            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9532                getHotShotCommitmentReturn::_tokenize(ret)
9533            }
9534            #[inline]
9535            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9536                <Self::ReturnTuple<
9537                    '_,
9538                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9539                    .map(Into::into)
9540            }
9541            #[inline]
9542            fn abi_decode_returns_validate(
9543                data: &[u8],
9544            ) -> alloy_sol_types::Result<Self::Return> {
9545                <Self::ReturnTuple<
9546                    '_,
9547                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9548                    .map(Into::into)
9549            }
9550        }
9551    };
9552    #[derive(serde::Serialize, serde::Deserialize)]
9553    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9554    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
9555```solidity
9556function getStateHistoryCount() external view returns (uint256);
9557```*/
9558    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9559    #[derive(Clone)]
9560    pub struct getStateHistoryCountCall;
9561    #[derive(serde::Serialize, serde::Deserialize)]
9562    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9563    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
9564    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9565    #[derive(Clone)]
9566    pub struct getStateHistoryCountReturn {
9567        #[allow(missing_docs)]
9568        pub _0: alloy::sol_types::private::primitives::aliases::U256,
9569    }
9570    #[allow(
9571        non_camel_case_types,
9572        non_snake_case,
9573        clippy::pub_underscore_fields,
9574        clippy::style
9575    )]
9576    const _: () = {
9577        use alloy::sol_types as alloy_sol_types;
9578        {
9579            #[doc(hidden)]
9580            #[allow(dead_code)]
9581            type UnderlyingSolTuple<'a> = ();
9582            #[doc(hidden)]
9583            type UnderlyingRustTuple<'a> = ();
9584            #[cfg(test)]
9585            #[allow(dead_code, unreachable_patterns)]
9586            fn _type_assertion(
9587                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9588            ) {
9589                match _t {
9590                    alloy_sol_types::private::AssertTypeEq::<
9591                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9592                    >(_) => {}
9593                }
9594            }
9595            #[automatically_derived]
9596            #[doc(hidden)]
9597            impl ::core::convert::From<getStateHistoryCountCall>
9598            for UnderlyingRustTuple<'_> {
9599                fn from(value: getStateHistoryCountCall) -> Self {
9600                    ()
9601                }
9602            }
9603            #[automatically_derived]
9604            #[doc(hidden)]
9605            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9606            for getStateHistoryCountCall {
9607                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9608                    Self
9609                }
9610            }
9611        }
9612        {
9613            #[doc(hidden)]
9614            #[allow(dead_code)]
9615            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9616            #[doc(hidden)]
9617            type UnderlyingRustTuple<'a> = (
9618                alloy::sol_types::private::primitives::aliases::U256,
9619            );
9620            #[cfg(test)]
9621            #[allow(dead_code, unreachable_patterns)]
9622            fn _type_assertion(
9623                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9624            ) {
9625                match _t {
9626                    alloy_sol_types::private::AssertTypeEq::<
9627                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9628                    >(_) => {}
9629                }
9630            }
9631            #[automatically_derived]
9632            #[doc(hidden)]
9633            impl ::core::convert::From<getStateHistoryCountReturn>
9634            for UnderlyingRustTuple<'_> {
9635                fn from(value: getStateHistoryCountReturn) -> Self {
9636                    (value._0,)
9637                }
9638            }
9639            #[automatically_derived]
9640            #[doc(hidden)]
9641            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9642            for getStateHistoryCountReturn {
9643                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9644                    Self { _0: tuple.0 }
9645                }
9646            }
9647        }
9648        #[automatically_derived]
9649        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
9650            type Parameters<'a> = ();
9651            type Token<'a> = <Self::Parameters<
9652                'a,
9653            > as alloy_sol_types::SolType>::Token<'a>;
9654            type Return = alloy::sol_types::private::primitives::aliases::U256;
9655            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9656            type ReturnToken<'a> = <Self::ReturnTuple<
9657                'a,
9658            > as alloy_sol_types::SolType>::Token<'a>;
9659            const SIGNATURE: &'static str = "getStateHistoryCount()";
9660            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
9661            #[inline]
9662            fn new<'a>(
9663                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9664            ) -> Self {
9665                tuple.into()
9666            }
9667            #[inline]
9668            fn tokenize(&self) -> Self::Token<'_> {
9669                ()
9670            }
9671            #[inline]
9672            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9673                (
9674                    <alloy::sol_types::sol_data::Uint<
9675                        256,
9676                    > as alloy_sol_types::SolType>::tokenize(ret),
9677                )
9678            }
9679            #[inline]
9680            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9681                <Self::ReturnTuple<
9682                    '_,
9683                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9684                    .map(|r| {
9685                        let r: getStateHistoryCountReturn = r.into();
9686                        r._0
9687                    })
9688            }
9689            #[inline]
9690            fn abi_decode_returns_validate(
9691                data: &[u8],
9692            ) -> alloy_sol_types::Result<Self::Return> {
9693                <Self::ReturnTuple<
9694                    '_,
9695                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9696                    .map(|r| {
9697                        let r: getStateHistoryCountReturn = r.into();
9698                        r._0
9699                    })
9700            }
9701        }
9702    };
9703    #[derive(serde::Serialize, serde::Deserialize)]
9704    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9705    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
9706```solidity
9707function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
9708```*/
9709    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9710    #[derive(Clone)]
9711    pub struct getVersionCall;
9712    #[derive(serde::Serialize, serde::Deserialize)]
9713    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9714    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
9715    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9716    #[derive(Clone)]
9717    pub struct getVersionReturn {
9718        #[allow(missing_docs)]
9719        pub majorVersion: u8,
9720        #[allow(missing_docs)]
9721        pub minorVersion: u8,
9722        #[allow(missing_docs)]
9723        pub patchVersion: u8,
9724    }
9725    #[allow(
9726        non_camel_case_types,
9727        non_snake_case,
9728        clippy::pub_underscore_fields,
9729        clippy::style
9730    )]
9731    const _: () = {
9732        use alloy::sol_types as alloy_sol_types;
9733        {
9734            #[doc(hidden)]
9735            #[allow(dead_code)]
9736            type UnderlyingSolTuple<'a> = ();
9737            #[doc(hidden)]
9738            type UnderlyingRustTuple<'a> = ();
9739            #[cfg(test)]
9740            #[allow(dead_code, unreachable_patterns)]
9741            fn _type_assertion(
9742                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9743            ) {
9744                match _t {
9745                    alloy_sol_types::private::AssertTypeEq::<
9746                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9747                    >(_) => {}
9748                }
9749            }
9750            #[automatically_derived]
9751            #[doc(hidden)]
9752            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
9753                fn from(value: getVersionCall) -> Self {
9754                    ()
9755                }
9756            }
9757            #[automatically_derived]
9758            #[doc(hidden)]
9759            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
9760                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9761                    Self
9762                }
9763            }
9764        }
9765        {
9766            #[doc(hidden)]
9767            #[allow(dead_code)]
9768            type UnderlyingSolTuple<'a> = (
9769                alloy::sol_types::sol_data::Uint<8>,
9770                alloy::sol_types::sol_data::Uint<8>,
9771                alloy::sol_types::sol_data::Uint<8>,
9772            );
9773            #[doc(hidden)]
9774            type UnderlyingRustTuple<'a> = (u8, u8, u8);
9775            #[cfg(test)]
9776            #[allow(dead_code, unreachable_patterns)]
9777            fn _type_assertion(
9778                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9779            ) {
9780                match _t {
9781                    alloy_sol_types::private::AssertTypeEq::<
9782                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9783                    >(_) => {}
9784                }
9785            }
9786            #[automatically_derived]
9787            #[doc(hidden)]
9788            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
9789                fn from(value: getVersionReturn) -> Self {
9790                    (value.majorVersion, value.minorVersion, value.patchVersion)
9791                }
9792            }
9793            #[automatically_derived]
9794            #[doc(hidden)]
9795            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
9796                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9797                    Self {
9798                        majorVersion: tuple.0,
9799                        minorVersion: tuple.1,
9800                        patchVersion: tuple.2,
9801                    }
9802                }
9803            }
9804        }
9805        impl getVersionReturn {
9806            fn _tokenize(
9807                &self,
9808            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9809                (
9810                    <alloy::sol_types::sol_data::Uint<
9811                        8,
9812                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
9813                    <alloy::sol_types::sol_data::Uint<
9814                        8,
9815                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
9816                    <alloy::sol_types::sol_data::Uint<
9817                        8,
9818                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
9819                )
9820            }
9821        }
9822        #[automatically_derived]
9823        impl alloy_sol_types::SolCall for getVersionCall {
9824            type Parameters<'a> = ();
9825            type Token<'a> = <Self::Parameters<
9826                'a,
9827            > as alloy_sol_types::SolType>::Token<'a>;
9828            type Return = getVersionReturn;
9829            type ReturnTuple<'a> = (
9830                alloy::sol_types::sol_data::Uint<8>,
9831                alloy::sol_types::sol_data::Uint<8>,
9832                alloy::sol_types::sol_data::Uint<8>,
9833            );
9834            type ReturnToken<'a> = <Self::ReturnTuple<
9835                'a,
9836            > as alloy_sol_types::SolType>::Token<'a>;
9837            const SIGNATURE: &'static str = "getVersion()";
9838            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
9839            #[inline]
9840            fn new<'a>(
9841                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9842            ) -> Self {
9843                tuple.into()
9844            }
9845            #[inline]
9846            fn tokenize(&self) -> Self::Token<'_> {
9847                ()
9848            }
9849            #[inline]
9850            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9851                getVersionReturn::_tokenize(ret)
9852            }
9853            #[inline]
9854            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9855                <Self::ReturnTuple<
9856                    '_,
9857                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9858                    .map(Into::into)
9859            }
9860            #[inline]
9861            fn abi_decode_returns_validate(
9862                data: &[u8],
9863            ) -> alloy_sol_types::Result<Self::Return> {
9864                <Self::ReturnTuple<
9865                    '_,
9866                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9867                    .map(Into::into)
9868            }
9869        }
9870    };
9871    #[derive(serde::Serialize, serde::Deserialize)]
9872    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9873    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
9874```solidity
9875function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
9876```*/
9877    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9878    #[derive(Clone)]
9879    pub struct initializeCall {
9880        #[allow(missing_docs)]
9881        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9882        #[allow(missing_docs)]
9883        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9884        #[allow(missing_docs)]
9885        pub _stateHistoryRetentionPeriod: u32,
9886        #[allow(missing_docs)]
9887        pub owner: alloy::sol_types::private::Address,
9888    }
9889    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
9890    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9891    #[derive(Clone)]
9892    pub struct initializeReturn {}
9893    #[allow(
9894        non_camel_case_types,
9895        non_snake_case,
9896        clippy::pub_underscore_fields,
9897        clippy::style
9898    )]
9899    const _: () = {
9900        use alloy::sol_types as alloy_sol_types;
9901        {
9902            #[doc(hidden)]
9903            #[allow(dead_code)]
9904            type UnderlyingSolTuple<'a> = (
9905                LightClient::LightClientState,
9906                LightClient::StakeTableState,
9907                alloy::sol_types::sol_data::Uint<32>,
9908                alloy::sol_types::sol_data::Address,
9909            );
9910            #[doc(hidden)]
9911            type UnderlyingRustTuple<'a> = (
9912                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9913                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
9914                u32,
9915                alloy::sol_types::private::Address,
9916            );
9917            #[cfg(test)]
9918            #[allow(dead_code, unreachable_patterns)]
9919            fn _type_assertion(
9920                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9921            ) {
9922                match _t {
9923                    alloy_sol_types::private::AssertTypeEq::<
9924                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9925                    >(_) => {}
9926                }
9927            }
9928            #[automatically_derived]
9929            #[doc(hidden)]
9930            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
9931                fn from(value: initializeCall) -> Self {
9932                    (
9933                        value._genesis,
9934                        value._genesisStakeTableState,
9935                        value._stateHistoryRetentionPeriod,
9936                        value.owner,
9937                    )
9938                }
9939            }
9940            #[automatically_derived]
9941            #[doc(hidden)]
9942            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
9943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9944                    Self {
9945                        _genesis: tuple.0,
9946                        _genesisStakeTableState: tuple.1,
9947                        _stateHistoryRetentionPeriod: tuple.2,
9948                        owner: tuple.3,
9949                    }
9950                }
9951            }
9952        }
9953        {
9954            #[doc(hidden)]
9955            #[allow(dead_code)]
9956            type UnderlyingSolTuple<'a> = ();
9957            #[doc(hidden)]
9958            type UnderlyingRustTuple<'a> = ();
9959            #[cfg(test)]
9960            #[allow(dead_code, unreachable_patterns)]
9961            fn _type_assertion(
9962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9963            ) {
9964                match _t {
9965                    alloy_sol_types::private::AssertTypeEq::<
9966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9967                    >(_) => {}
9968                }
9969            }
9970            #[automatically_derived]
9971            #[doc(hidden)]
9972            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
9973                fn from(value: initializeReturn) -> Self {
9974                    ()
9975                }
9976            }
9977            #[automatically_derived]
9978            #[doc(hidden)]
9979            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
9980                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9981                    Self {}
9982                }
9983            }
9984        }
9985        impl initializeReturn {
9986            fn _tokenize(
9987                &self,
9988            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9989                ()
9990            }
9991        }
9992        #[automatically_derived]
9993        impl alloy_sol_types::SolCall for initializeCall {
9994            type Parameters<'a> = (
9995                LightClient::LightClientState,
9996                LightClient::StakeTableState,
9997                alloy::sol_types::sol_data::Uint<32>,
9998                alloy::sol_types::sol_data::Address,
9999            );
10000            type Token<'a> = <Self::Parameters<
10001                'a,
10002            > as alloy_sol_types::SolType>::Token<'a>;
10003            type Return = initializeReturn;
10004            type ReturnTuple<'a> = ();
10005            type ReturnToken<'a> = <Self::ReturnTuple<
10006                'a,
10007            > as alloy_sol_types::SolType>::Token<'a>;
10008            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
10009            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
10010            #[inline]
10011            fn new<'a>(
10012                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10013            ) -> Self {
10014                tuple.into()
10015            }
10016            #[inline]
10017            fn tokenize(&self) -> Self::Token<'_> {
10018                (
10019                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10020                        &self._genesis,
10021                    ),
10022                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
10023                        &self._genesisStakeTableState,
10024                    ),
10025                    <alloy::sol_types::sol_data::Uint<
10026                        32,
10027                    > as alloy_sol_types::SolType>::tokenize(
10028                        &self._stateHistoryRetentionPeriod,
10029                    ),
10030                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10031                        &self.owner,
10032                    ),
10033                )
10034            }
10035            #[inline]
10036            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10037                initializeReturn::_tokenize(ret)
10038            }
10039            #[inline]
10040            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10041                <Self::ReturnTuple<
10042                    '_,
10043                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10044                    .map(Into::into)
10045            }
10046            #[inline]
10047            fn abi_decode_returns_validate(
10048                data: &[u8],
10049            ) -> alloy_sol_types::Result<Self::Return> {
10050                <Self::ReturnTuple<
10051                    '_,
10052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10053                    .map(Into::into)
10054            }
10055        }
10056    };
10057    #[derive(serde::Serialize, serde::Deserialize)]
10058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10059    /**Function with signature `initializeV2(uint64,uint64)` and selector `0xb33bc491`.
10060```solidity
10061function initializeV2(uint64 _blocksPerEpoch, uint64 _epochStartBlock) external;
10062```*/
10063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10064    #[derive(Clone)]
10065    pub struct initializeV2Call {
10066        #[allow(missing_docs)]
10067        pub _blocksPerEpoch: u64,
10068        #[allow(missing_docs)]
10069        pub _epochStartBlock: u64,
10070    }
10071    ///Container type for the return parameters of the [`initializeV2(uint64,uint64)`](initializeV2Call) function.
10072    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10073    #[derive(Clone)]
10074    pub struct initializeV2Return {}
10075    #[allow(
10076        non_camel_case_types,
10077        non_snake_case,
10078        clippy::pub_underscore_fields,
10079        clippy::style
10080    )]
10081    const _: () = {
10082        use alloy::sol_types as alloy_sol_types;
10083        {
10084            #[doc(hidden)]
10085            #[allow(dead_code)]
10086            type UnderlyingSolTuple<'a> = (
10087                alloy::sol_types::sol_data::Uint<64>,
10088                alloy::sol_types::sol_data::Uint<64>,
10089            );
10090            #[doc(hidden)]
10091            type UnderlyingRustTuple<'a> = (u64, u64);
10092            #[cfg(test)]
10093            #[allow(dead_code, unreachable_patterns)]
10094            fn _type_assertion(
10095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10096            ) {
10097                match _t {
10098                    alloy_sol_types::private::AssertTypeEq::<
10099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10100                    >(_) => {}
10101                }
10102            }
10103            #[automatically_derived]
10104            #[doc(hidden)]
10105            impl ::core::convert::From<initializeV2Call> for UnderlyingRustTuple<'_> {
10106                fn from(value: initializeV2Call) -> Self {
10107                    (value._blocksPerEpoch, value._epochStartBlock)
10108                }
10109            }
10110            #[automatically_derived]
10111            #[doc(hidden)]
10112            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Call {
10113                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10114                    Self {
10115                        _blocksPerEpoch: tuple.0,
10116                        _epochStartBlock: tuple.1,
10117                    }
10118                }
10119            }
10120        }
10121        {
10122            #[doc(hidden)]
10123            #[allow(dead_code)]
10124            type UnderlyingSolTuple<'a> = ();
10125            #[doc(hidden)]
10126            type UnderlyingRustTuple<'a> = ();
10127            #[cfg(test)]
10128            #[allow(dead_code, unreachable_patterns)]
10129            fn _type_assertion(
10130                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10131            ) {
10132                match _t {
10133                    alloy_sol_types::private::AssertTypeEq::<
10134                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10135                    >(_) => {}
10136                }
10137            }
10138            #[automatically_derived]
10139            #[doc(hidden)]
10140            impl ::core::convert::From<initializeV2Return> for UnderlyingRustTuple<'_> {
10141                fn from(value: initializeV2Return) -> Self {
10142                    ()
10143                }
10144            }
10145            #[automatically_derived]
10146            #[doc(hidden)]
10147            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeV2Return {
10148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10149                    Self {}
10150                }
10151            }
10152        }
10153        impl initializeV2Return {
10154            fn _tokenize(
10155                &self,
10156            ) -> <initializeV2Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10157                ()
10158            }
10159        }
10160        #[automatically_derived]
10161        impl alloy_sol_types::SolCall for initializeV2Call {
10162            type Parameters<'a> = (
10163                alloy::sol_types::sol_data::Uint<64>,
10164                alloy::sol_types::sol_data::Uint<64>,
10165            );
10166            type Token<'a> = <Self::Parameters<
10167                'a,
10168            > as alloy_sol_types::SolType>::Token<'a>;
10169            type Return = initializeV2Return;
10170            type ReturnTuple<'a> = ();
10171            type ReturnToken<'a> = <Self::ReturnTuple<
10172                'a,
10173            > as alloy_sol_types::SolType>::Token<'a>;
10174            const SIGNATURE: &'static str = "initializeV2(uint64,uint64)";
10175            const SELECTOR: [u8; 4] = [179u8, 59u8, 196u8, 145u8];
10176            #[inline]
10177            fn new<'a>(
10178                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10179            ) -> Self {
10180                tuple.into()
10181            }
10182            #[inline]
10183            fn tokenize(&self) -> Self::Token<'_> {
10184                (
10185                    <alloy::sol_types::sol_data::Uint<
10186                        64,
10187                    > as alloy_sol_types::SolType>::tokenize(&self._blocksPerEpoch),
10188                    <alloy::sol_types::sol_data::Uint<
10189                        64,
10190                    > as alloy_sol_types::SolType>::tokenize(&self._epochStartBlock),
10191                )
10192            }
10193            #[inline]
10194            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10195                initializeV2Return::_tokenize(ret)
10196            }
10197            #[inline]
10198            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10199                <Self::ReturnTuple<
10200                    '_,
10201                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10202                    .map(Into::into)
10203            }
10204            #[inline]
10205            fn abi_decode_returns_validate(
10206                data: &[u8],
10207            ) -> alloy_sol_types::Result<Self::Return> {
10208                <Self::ReturnTuple<
10209                    '_,
10210                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10211                    .map(Into::into)
10212            }
10213        }
10214    };
10215    #[derive(serde::Serialize, serde::Deserialize)]
10216    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10217    /**Function with signature `isEpochRoot(uint64)` and selector `0x25297427`.
10218```solidity
10219function isEpochRoot(uint64 blockHeight) external view returns (bool);
10220```*/
10221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10222    #[derive(Clone)]
10223    pub struct isEpochRootCall {
10224        #[allow(missing_docs)]
10225        pub blockHeight: u64,
10226    }
10227    #[derive(serde::Serialize, serde::Deserialize)]
10228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10229    ///Container type for the return parameters of the [`isEpochRoot(uint64)`](isEpochRootCall) function.
10230    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10231    #[derive(Clone)]
10232    pub struct isEpochRootReturn {
10233        #[allow(missing_docs)]
10234        pub _0: bool,
10235    }
10236    #[allow(
10237        non_camel_case_types,
10238        non_snake_case,
10239        clippy::pub_underscore_fields,
10240        clippy::style
10241    )]
10242    const _: () = {
10243        use alloy::sol_types as alloy_sol_types;
10244        {
10245            #[doc(hidden)]
10246            #[allow(dead_code)]
10247            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10248            #[doc(hidden)]
10249            type UnderlyingRustTuple<'a> = (u64,);
10250            #[cfg(test)]
10251            #[allow(dead_code, unreachable_patterns)]
10252            fn _type_assertion(
10253                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10254            ) {
10255                match _t {
10256                    alloy_sol_types::private::AssertTypeEq::<
10257                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10258                    >(_) => {}
10259                }
10260            }
10261            #[automatically_derived]
10262            #[doc(hidden)]
10263            impl ::core::convert::From<isEpochRootCall> for UnderlyingRustTuple<'_> {
10264                fn from(value: isEpochRootCall) -> Self {
10265                    (value.blockHeight,)
10266                }
10267            }
10268            #[automatically_derived]
10269            #[doc(hidden)]
10270            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootCall {
10271                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10272                    Self { blockHeight: tuple.0 }
10273                }
10274            }
10275        }
10276        {
10277            #[doc(hidden)]
10278            #[allow(dead_code)]
10279            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10280            #[doc(hidden)]
10281            type UnderlyingRustTuple<'a> = (bool,);
10282            #[cfg(test)]
10283            #[allow(dead_code, unreachable_patterns)]
10284            fn _type_assertion(
10285                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10286            ) {
10287                match _t {
10288                    alloy_sol_types::private::AssertTypeEq::<
10289                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10290                    >(_) => {}
10291                }
10292            }
10293            #[automatically_derived]
10294            #[doc(hidden)]
10295            impl ::core::convert::From<isEpochRootReturn> for UnderlyingRustTuple<'_> {
10296                fn from(value: isEpochRootReturn) -> Self {
10297                    (value._0,)
10298                }
10299            }
10300            #[automatically_derived]
10301            #[doc(hidden)]
10302            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isEpochRootReturn {
10303                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10304                    Self { _0: tuple.0 }
10305                }
10306            }
10307        }
10308        #[automatically_derived]
10309        impl alloy_sol_types::SolCall for isEpochRootCall {
10310            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10311            type Token<'a> = <Self::Parameters<
10312                'a,
10313            > as alloy_sol_types::SolType>::Token<'a>;
10314            type Return = bool;
10315            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10316            type ReturnToken<'a> = <Self::ReturnTuple<
10317                'a,
10318            > as alloy_sol_types::SolType>::Token<'a>;
10319            const SIGNATURE: &'static str = "isEpochRoot(uint64)";
10320            const SELECTOR: [u8; 4] = [37u8, 41u8, 116u8, 39u8];
10321            #[inline]
10322            fn new<'a>(
10323                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10324            ) -> Self {
10325                tuple.into()
10326            }
10327            #[inline]
10328            fn tokenize(&self) -> Self::Token<'_> {
10329                (
10330                    <alloy::sol_types::sol_data::Uint<
10331                        64,
10332                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10333                )
10334            }
10335            #[inline]
10336            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10337                (
10338                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10339                        ret,
10340                    ),
10341                )
10342            }
10343            #[inline]
10344            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10345                <Self::ReturnTuple<
10346                    '_,
10347                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10348                    .map(|r| {
10349                        let r: isEpochRootReturn = r.into();
10350                        r._0
10351                    })
10352            }
10353            #[inline]
10354            fn abi_decode_returns_validate(
10355                data: &[u8],
10356            ) -> alloy_sol_types::Result<Self::Return> {
10357                <Self::ReturnTuple<
10358                    '_,
10359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10360                    .map(|r| {
10361                        let r: isEpochRootReturn = r.into();
10362                        r._0
10363                    })
10364            }
10365        }
10366    };
10367    #[derive(serde::Serialize, serde::Deserialize)]
10368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10369    /**Function with signature `isGtEpochRoot(uint64)` and selector `0x300c89dd`.
10370```solidity
10371function isGtEpochRoot(uint64 blockHeight) external view returns (bool);
10372```*/
10373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10374    #[derive(Clone)]
10375    pub struct isGtEpochRootCall {
10376        #[allow(missing_docs)]
10377        pub blockHeight: u64,
10378    }
10379    #[derive(serde::Serialize, serde::Deserialize)]
10380    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10381    ///Container type for the return parameters of the [`isGtEpochRoot(uint64)`](isGtEpochRootCall) function.
10382    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10383    #[derive(Clone)]
10384    pub struct isGtEpochRootReturn {
10385        #[allow(missing_docs)]
10386        pub _0: bool,
10387    }
10388    #[allow(
10389        non_camel_case_types,
10390        non_snake_case,
10391        clippy::pub_underscore_fields,
10392        clippy::style
10393    )]
10394    const _: () = {
10395        use alloy::sol_types as alloy_sol_types;
10396        {
10397            #[doc(hidden)]
10398            #[allow(dead_code)]
10399            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10400            #[doc(hidden)]
10401            type UnderlyingRustTuple<'a> = (u64,);
10402            #[cfg(test)]
10403            #[allow(dead_code, unreachable_patterns)]
10404            fn _type_assertion(
10405                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10406            ) {
10407                match _t {
10408                    alloy_sol_types::private::AssertTypeEq::<
10409                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10410                    >(_) => {}
10411                }
10412            }
10413            #[automatically_derived]
10414            #[doc(hidden)]
10415            impl ::core::convert::From<isGtEpochRootCall> for UnderlyingRustTuple<'_> {
10416                fn from(value: isGtEpochRootCall) -> Self {
10417                    (value.blockHeight,)
10418                }
10419            }
10420            #[automatically_derived]
10421            #[doc(hidden)]
10422            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootCall {
10423                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10424                    Self { blockHeight: tuple.0 }
10425                }
10426            }
10427        }
10428        {
10429            #[doc(hidden)]
10430            #[allow(dead_code)]
10431            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10432            #[doc(hidden)]
10433            type UnderlyingRustTuple<'a> = (bool,);
10434            #[cfg(test)]
10435            #[allow(dead_code, unreachable_patterns)]
10436            fn _type_assertion(
10437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10438            ) {
10439                match _t {
10440                    alloy_sol_types::private::AssertTypeEq::<
10441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10442                    >(_) => {}
10443                }
10444            }
10445            #[automatically_derived]
10446            #[doc(hidden)]
10447            impl ::core::convert::From<isGtEpochRootReturn> for UnderlyingRustTuple<'_> {
10448                fn from(value: isGtEpochRootReturn) -> Self {
10449                    (value._0,)
10450                }
10451            }
10452            #[automatically_derived]
10453            #[doc(hidden)]
10454            impl ::core::convert::From<UnderlyingRustTuple<'_>> for isGtEpochRootReturn {
10455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10456                    Self { _0: tuple.0 }
10457                }
10458            }
10459        }
10460        #[automatically_derived]
10461        impl alloy_sol_types::SolCall for isGtEpochRootCall {
10462            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10463            type Token<'a> = <Self::Parameters<
10464                'a,
10465            > as alloy_sol_types::SolType>::Token<'a>;
10466            type Return = bool;
10467            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10468            type ReturnToken<'a> = <Self::ReturnTuple<
10469                'a,
10470            > as alloy_sol_types::SolType>::Token<'a>;
10471            const SIGNATURE: &'static str = "isGtEpochRoot(uint64)";
10472            const SELECTOR: [u8; 4] = [48u8, 12u8, 137u8, 221u8];
10473            #[inline]
10474            fn new<'a>(
10475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10476            ) -> Self {
10477                tuple.into()
10478            }
10479            #[inline]
10480            fn tokenize(&self) -> Self::Token<'_> {
10481                (
10482                    <alloy::sol_types::sol_data::Uint<
10483                        64,
10484                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
10485                )
10486            }
10487            #[inline]
10488            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10489                (
10490                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10491                        ret,
10492                    ),
10493                )
10494            }
10495            #[inline]
10496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10497                <Self::ReturnTuple<
10498                    '_,
10499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10500                    .map(|r| {
10501                        let r: isGtEpochRootReturn = r.into();
10502                        r._0
10503                    })
10504            }
10505            #[inline]
10506            fn abi_decode_returns_validate(
10507                data: &[u8],
10508            ) -> alloy_sol_types::Result<Self::Return> {
10509                <Self::ReturnTuple<
10510                    '_,
10511                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10512                    .map(|r| {
10513                        let r: isGtEpochRootReturn = r.into();
10514                        r._0
10515                    })
10516            }
10517        }
10518    };
10519    #[derive(serde::Serialize, serde::Deserialize)]
10520    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10521    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
10522```solidity
10523function isPermissionedProverEnabled() external view returns (bool);
10524```*/
10525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10526    #[derive(Clone)]
10527    pub struct isPermissionedProverEnabledCall;
10528    #[derive(serde::Serialize, serde::Deserialize)]
10529    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10530    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
10531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10532    #[derive(Clone)]
10533    pub struct isPermissionedProverEnabledReturn {
10534        #[allow(missing_docs)]
10535        pub _0: bool,
10536    }
10537    #[allow(
10538        non_camel_case_types,
10539        non_snake_case,
10540        clippy::pub_underscore_fields,
10541        clippy::style
10542    )]
10543    const _: () = {
10544        use alloy::sol_types as alloy_sol_types;
10545        {
10546            #[doc(hidden)]
10547            #[allow(dead_code)]
10548            type UnderlyingSolTuple<'a> = ();
10549            #[doc(hidden)]
10550            type UnderlyingRustTuple<'a> = ();
10551            #[cfg(test)]
10552            #[allow(dead_code, unreachable_patterns)]
10553            fn _type_assertion(
10554                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10555            ) {
10556                match _t {
10557                    alloy_sol_types::private::AssertTypeEq::<
10558                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10559                    >(_) => {}
10560                }
10561            }
10562            #[automatically_derived]
10563            #[doc(hidden)]
10564            impl ::core::convert::From<isPermissionedProverEnabledCall>
10565            for UnderlyingRustTuple<'_> {
10566                fn from(value: isPermissionedProverEnabledCall) -> Self {
10567                    ()
10568                }
10569            }
10570            #[automatically_derived]
10571            #[doc(hidden)]
10572            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10573            for isPermissionedProverEnabledCall {
10574                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10575                    Self
10576                }
10577            }
10578        }
10579        {
10580            #[doc(hidden)]
10581            #[allow(dead_code)]
10582            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10583            #[doc(hidden)]
10584            type UnderlyingRustTuple<'a> = (bool,);
10585            #[cfg(test)]
10586            #[allow(dead_code, unreachable_patterns)]
10587            fn _type_assertion(
10588                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10589            ) {
10590                match _t {
10591                    alloy_sol_types::private::AssertTypeEq::<
10592                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10593                    >(_) => {}
10594                }
10595            }
10596            #[automatically_derived]
10597            #[doc(hidden)]
10598            impl ::core::convert::From<isPermissionedProverEnabledReturn>
10599            for UnderlyingRustTuple<'_> {
10600                fn from(value: isPermissionedProverEnabledReturn) -> Self {
10601                    (value._0,)
10602                }
10603            }
10604            #[automatically_derived]
10605            #[doc(hidden)]
10606            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10607            for isPermissionedProverEnabledReturn {
10608                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10609                    Self { _0: tuple.0 }
10610                }
10611            }
10612        }
10613        #[automatically_derived]
10614        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
10615            type Parameters<'a> = ();
10616            type Token<'a> = <Self::Parameters<
10617                'a,
10618            > as alloy_sol_types::SolType>::Token<'a>;
10619            type Return = bool;
10620            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10621            type ReturnToken<'a> = <Self::ReturnTuple<
10622                'a,
10623            > as alloy_sol_types::SolType>::Token<'a>;
10624            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
10625            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
10626            #[inline]
10627            fn new<'a>(
10628                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10629            ) -> Self {
10630                tuple.into()
10631            }
10632            #[inline]
10633            fn tokenize(&self) -> Self::Token<'_> {
10634                ()
10635            }
10636            #[inline]
10637            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10638                (
10639                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10640                        ret,
10641                    ),
10642                )
10643            }
10644            #[inline]
10645            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10646                <Self::ReturnTuple<
10647                    '_,
10648                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10649                    .map(|r| {
10650                        let r: isPermissionedProverEnabledReturn = r.into();
10651                        r._0
10652                    })
10653            }
10654            #[inline]
10655            fn abi_decode_returns_validate(
10656                data: &[u8],
10657            ) -> alloy_sol_types::Result<Self::Return> {
10658                <Self::ReturnTuple<
10659                    '_,
10660                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10661                    .map(|r| {
10662                        let r: isPermissionedProverEnabledReturn = r.into();
10663                        r._0
10664                    })
10665            }
10666        }
10667    };
10668    #[derive(serde::Serialize, serde::Deserialize)]
10669    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10670    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
10671```solidity
10672function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
10673```*/
10674    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10675    #[derive(Clone)]
10676    pub struct lagOverEscapeHatchThresholdCall {
10677        #[allow(missing_docs)]
10678        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
10679        #[allow(missing_docs)]
10680        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
10681    }
10682    #[derive(serde::Serialize, serde::Deserialize)]
10683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10684    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
10685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10686    #[derive(Clone)]
10687    pub struct lagOverEscapeHatchThresholdReturn {
10688        #[allow(missing_docs)]
10689        pub _0: bool,
10690    }
10691    #[allow(
10692        non_camel_case_types,
10693        non_snake_case,
10694        clippy::pub_underscore_fields,
10695        clippy::style
10696    )]
10697    const _: () = {
10698        use alloy::sol_types as alloy_sol_types;
10699        {
10700            #[doc(hidden)]
10701            #[allow(dead_code)]
10702            type UnderlyingSolTuple<'a> = (
10703                alloy::sol_types::sol_data::Uint<256>,
10704                alloy::sol_types::sol_data::Uint<256>,
10705            );
10706            #[doc(hidden)]
10707            type UnderlyingRustTuple<'a> = (
10708                alloy::sol_types::private::primitives::aliases::U256,
10709                alloy::sol_types::private::primitives::aliases::U256,
10710            );
10711            #[cfg(test)]
10712            #[allow(dead_code, unreachable_patterns)]
10713            fn _type_assertion(
10714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10715            ) {
10716                match _t {
10717                    alloy_sol_types::private::AssertTypeEq::<
10718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10719                    >(_) => {}
10720                }
10721            }
10722            #[automatically_derived]
10723            #[doc(hidden)]
10724            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
10725            for UnderlyingRustTuple<'_> {
10726                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
10727                    (value.blockNumber, value.blockThreshold)
10728                }
10729            }
10730            #[automatically_derived]
10731            #[doc(hidden)]
10732            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10733            for lagOverEscapeHatchThresholdCall {
10734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10735                    Self {
10736                        blockNumber: tuple.0,
10737                        blockThreshold: tuple.1,
10738                    }
10739                }
10740            }
10741        }
10742        {
10743            #[doc(hidden)]
10744            #[allow(dead_code)]
10745            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10746            #[doc(hidden)]
10747            type UnderlyingRustTuple<'a> = (bool,);
10748            #[cfg(test)]
10749            #[allow(dead_code, unreachable_patterns)]
10750            fn _type_assertion(
10751                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10752            ) {
10753                match _t {
10754                    alloy_sol_types::private::AssertTypeEq::<
10755                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10756                    >(_) => {}
10757                }
10758            }
10759            #[automatically_derived]
10760            #[doc(hidden)]
10761            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
10762            for UnderlyingRustTuple<'_> {
10763                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
10764                    (value._0,)
10765                }
10766            }
10767            #[automatically_derived]
10768            #[doc(hidden)]
10769            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10770            for lagOverEscapeHatchThresholdReturn {
10771                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10772                    Self { _0: tuple.0 }
10773                }
10774            }
10775        }
10776        #[automatically_derived]
10777        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
10778            type Parameters<'a> = (
10779                alloy::sol_types::sol_data::Uint<256>,
10780                alloy::sol_types::sol_data::Uint<256>,
10781            );
10782            type Token<'a> = <Self::Parameters<
10783                'a,
10784            > as alloy_sol_types::SolType>::Token<'a>;
10785            type Return = bool;
10786            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
10787            type ReturnToken<'a> = <Self::ReturnTuple<
10788                'a,
10789            > as alloy_sol_types::SolType>::Token<'a>;
10790            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
10791            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
10792            #[inline]
10793            fn new<'a>(
10794                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10795            ) -> Self {
10796                tuple.into()
10797            }
10798            #[inline]
10799            fn tokenize(&self) -> Self::Token<'_> {
10800                (
10801                    <alloy::sol_types::sol_data::Uint<
10802                        256,
10803                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
10804                    <alloy::sol_types::sol_data::Uint<
10805                        256,
10806                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
10807                )
10808            }
10809            #[inline]
10810            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10811                (
10812                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
10813                        ret,
10814                    ),
10815                )
10816            }
10817            #[inline]
10818            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10819                <Self::ReturnTuple<
10820                    '_,
10821                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10822                    .map(|r| {
10823                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10824                        r._0
10825                    })
10826            }
10827            #[inline]
10828            fn abi_decode_returns_validate(
10829                data: &[u8],
10830            ) -> alloy_sol_types::Result<Self::Return> {
10831                <Self::ReturnTuple<
10832                    '_,
10833                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10834                    .map(|r| {
10835                        let r: lagOverEscapeHatchThresholdReturn = r.into();
10836                        r._0
10837                    })
10838            }
10839        }
10840    };
10841    #[derive(serde::Serialize, serde::Deserialize)]
10842    #[derive()]
10843    /**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`.
10844```solidity
10845function newFinalizedState(LightClient.LightClientState memory, IPlonkVerifier.PlonkProof memory) external pure;
10846```*/
10847    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10848    #[derive(Clone)]
10849    pub struct newFinalizedState_0Call {
10850        #[allow(missing_docs)]
10851        pub _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10852        #[allow(missing_docs)]
10853        pub _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10854    }
10855    ///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.
10856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10857    #[derive(Clone)]
10858    pub struct newFinalizedState_0Return {}
10859    #[allow(
10860        non_camel_case_types,
10861        non_snake_case,
10862        clippy::pub_underscore_fields,
10863        clippy::style
10864    )]
10865    const _: () = {
10866        use alloy::sol_types as alloy_sol_types;
10867        {
10868            #[doc(hidden)]
10869            #[allow(dead_code)]
10870            type UnderlyingSolTuple<'a> = (
10871                LightClient::LightClientState,
10872                IPlonkVerifier::PlonkProof,
10873            );
10874            #[doc(hidden)]
10875            type UnderlyingRustTuple<'a> = (
10876                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10877                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
10878            );
10879            #[cfg(test)]
10880            #[allow(dead_code, unreachable_patterns)]
10881            fn _type_assertion(
10882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10883            ) {
10884                match _t {
10885                    alloy_sol_types::private::AssertTypeEq::<
10886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10887                    >(_) => {}
10888                }
10889            }
10890            #[automatically_derived]
10891            #[doc(hidden)]
10892            impl ::core::convert::From<newFinalizedState_0Call>
10893            for UnderlyingRustTuple<'_> {
10894                fn from(value: newFinalizedState_0Call) -> Self {
10895                    (value._0, value._1)
10896                }
10897            }
10898            #[automatically_derived]
10899            #[doc(hidden)]
10900            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10901            for newFinalizedState_0Call {
10902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10903                    Self { _0: tuple.0, _1: tuple.1 }
10904                }
10905            }
10906        }
10907        {
10908            #[doc(hidden)]
10909            #[allow(dead_code)]
10910            type UnderlyingSolTuple<'a> = ();
10911            #[doc(hidden)]
10912            type UnderlyingRustTuple<'a> = ();
10913            #[cfg(test)]
10914            #[allow(dead_code, unreachable_patterns)]
10915            fn _type_assertion(
10916                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10917            ) {
10918                match _t {
10919                    alloy_sol_types::private::AssertTypeEq::<
10920                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10921                    >(_) => {}
10922                }
10923            }
10924            #[automatically_derived]
10925            #[doc(hidden)]
10926            impl ::core::convert::From<newFinalizedState_0Return>
10927            for UnderlyingRustTuple<'_> {
10928                fn from(value: newFinalizedState_0Return) -> Self {
10929                    ()
10930                }
10931            }
10932            #[automatically_derived]
10933            #[doc(hidden)]
10934            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10935            for newFinalizedState_0Return {
10936                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10937                    Self {}
10938                }
10939            }
10940        }
10941        impl newFinalizedState_0Return {
10942            fn _tokenize(
10943                &self,
10944            ) -> <newFinalizedState_0Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
10945                ()
10946            }
10947        }
10948        #[automatically_derived]
10949        impl alloy_sol_types::SolCall for newFinalizedState_0Call {
10950            type Parameters<'a> = (
10951                LightClient::LightClientState,
10952                IPlonkVerifier::PlonkProof,
10953            );
10954            type Token<'a> = <Self::Parameters<
10955                'a,
10956            > as alloy_sol_types::SolType>::Token<'a>;
10957            type Return = newFinalizedState_0Return;
10958            type ReturnTuple<'a> = ();
10959            type ReturnToken<'a> = <Self::ReturnTuple<
10960                'a,
10961            > as alloy_sol_types::SolType>::Token<'a>;
10962            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))";
10963            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
10964            #[inline]
10965            fn new<'a>(
10966                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10967            ) -> Self {
10968                tuple.into()
10969            }
10970            #[inline]
10971            fn tokenize(&self) -> Self::Token<'_> {
10972                (
10973                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10974                        &self._0,
10975                    ),
10976                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
10977                        &self._1,
10978                    ),
10979                )
10980            }
10981            #[inline]
10982            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10983                newFinalizedState_0Return::_tokenize(ret)
10984            }
10985            #[inline]
10986            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10987                <Self::ReturnTuple<
10988                    '_,
10989                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10990                    .map(Into::into)
10991            }
10992            #[inline]
10993            fn abi_decode_returns_validate(
10994                data: &[u8],
10995            ) -> alloy_sol_types::Result<Self::Return> {
10996                <Self::ReturnTuple<
10997                    '_,
10998                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10999                    .map(Into::into)
11000            }
11001        }
11002    };
11003    #[derive(serde::Serialize, serde::Deserialize)]
11004    #[derive()]
11005    /**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`.
11006```solidity
11007function newFinalizedState(LightClient.LightClientState memory newState, LightClient.StakeTableState memory nextStakeTable, IPlonkVerifier.PlonkProof memory proof) external;
11008```*/
11009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11010    #[derive(Clone)]
11011    pub struct newFinalizedState_1Call {
11012        #[allow(missing_docs)]
11013        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11014        #[allow(missing_docs)]
11015        pub nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11016        #[allow(missing_docs)]
11017        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11018    }
11019    ///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.
11020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11021    #[derive(Clone)]
11022    pub struct newFinalizedState_1Return {}
11023    #[allow(
11024        non_camel_case_types,
11025        non_snake_case,
11026        clippy::pub_underscore_fields,
11027        clippy::style
11028    )]
11029    const _: () = {
11030        use alloy::sol_types as alloy_sol_types;
11031        {
11032            #[doc(hidden)]
11033            #[allow(dead_code)]
11034            type UnderlyingSolTuple<'a> = (
11035                LightClient::LightClientState,
11036                LightClient::StakeTableState,
11037                IPlonkVerifier::PlonkProof,
11038            );
11039            #[doc(hidden)]
11040            type UnderlyingRustTuple<'a> = (
11041                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
11042                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
11043                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
11044            );
11045            #[cfg(test)]
11046            #[allow(dead_code, unreachable_patterns)]
11047            fn _type_assertion(
11048                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11049            ) {
11050                match _t {
11051                    alloy_sol_types::private::AssertTypeEq::<
11052                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11053                    >(_) => {}
11054                }
11055            }
11056            #[automatically_derived]
11057            #[doc(hidden)]
11058            impl ::core::convert::From<newFinalizedState_1Call>
11059            for UnderlyingRustTuple<'_> {
11060                fn from(value: newFinalizedState_1Call) -> Self {
11061                    (value.newState, value.nextStakeTable, value.proof)
11062                }
11063            }
11064            #[automatically_derived]
11065            #[doc(hidden)]
11066            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11067            for newFinalizedState_1Call {
11068                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11069                    Self {
11070                        newState: tuple.0,
11071                        nextStakeTable: tuple.1,
11072                        proof: tuple.2,
11073                    }
11074                }
11075            }
11076        }
11077        {
11078            #[doc(hidden)]
11079            #[allow(dead_code)]
11080            type UnderlyingSolTuple<'a> = ();
11081            #[doc(hidden)]
11082            type UnderlyingRustTuple<'a> = ();
11083            #[cfg(test)]
11084            #[allow(dead_code, unreachable_patterns)]
11085            fn _type_assertion(
11086                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11087            ) {
11088                match _t {
11089                    alloy_sol_types::private::AssertTypeEq::<
11090                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11091                    >(_) => {}
11092                }
11093            }
11094            #[automatically_derived]
11095            #[doc(hidden)]
11096            impl ::core::convert::From<newFinalizedState_1Return>
11097            for UnderlyingRustTuple<'_> {
11098                fn from(value: newFinalizedState_1Return) -> Self {
11099                    ()
11100                }
11101            }
11102            #[automatically_derived]
11103            #[doc(hidden)]
11104            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11105            for newFinalizedState_1Return {
11106                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11107                    Self {}
11108                }
11109            }
11110        }
11111        impl newFinalizedState_1Return {
11112            fn _tokenize(
11113                &self,
11114            ) -> <newFinalizedState_1Call as alloy_sol_types::SolCall>::ReturnToken<'_> {
11115                ()
11116            }
11117        }
11118        #[automatically_derived]
11119        impl alloy_sol_types::SolCall for newFinalizedState_1Call {
11120            type Parameters<'a> = (
11121                LightClient::LightClientState,
11122                LightClient::StakeTableState,
11123                IPlonkVerifier::PlonkProof,
11124            );
11125            type Token<'a> = <Self::Parameters<
11126                'a,
11127            > as alloy_sol_types::SolType>::Token<'a>;
11128            type Return = newFinalizedState_1Return;
11129            type ReturnTuple<'a> = ();
11130            type ReturnToken<'a> = <Self::ReturnTuple<
11131                'a,
11132            > as alloy_sol_types::SolType>::Token<'a>;
11133            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))";
11134            const SELECTOR: [u8; 4] = [117u8, 124u8, 55u8, 173u8];
11135            #[inline]
11136            fn new<'a>(
11137                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11138            ) -> Self {
11139                tuple.into()
11140            }
11141            #[inline]
11142            fn tokenize(&self) -> Self::Token<'_> {
11143                (
11144                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
11145                        &self.newState,
11146                    ),
11147                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
11148                        &self.nextStakeTable,
11149                    ),
11150                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
11151                        &self.proof,
11152                    ),
11153                )
11154            }
11155            #[inline]
11156            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11157                newFinalizedState_1Return::_tokenize(ret)
11158            }
11159            #[inline]
11160            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11161                <Self::ReturnTuple<
11162                    '_,
11163                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11164                    .map(Into::into)
11165            }
11166            #[inline]
11167            fn abi_decode_returns_validate(
11168                data: &[u8],
11169            ) -> alloy_sol_types::Result<Self::Return> {
11170                <Self::ReturnTuple<
11171                    '_,
11172                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11173                    .map(Into::into)
11174            }
11175        }
11176    };
11177    #[derive(serde::Serialize, serde::Deserialize)]
11178    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11179    /**Function with signature `owner()` and selector `0x8da5cb5b`.
11180```solidity
11181function owner() external view returns (address);
11182```*/
11183    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11184    #[derive(Clone)]
11185    pub struct ownerCall;
11186    #[derive(serde::Serialize, serde::Deserialize)]
11187    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11188    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
11189    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11190    #[derive(Clone)]
11191    pub struct ownerReturn {
11192        #[allow(missing_docs)]
11193        pub _0: alloy::sol_types::private::Address,
11194    }
11195    #[allow(
11196        non_camel_case_types,
11197        non_snake_case,
11198        clippy::pub_underscore_fields,
11199        clippy::style
11200    )]
11201    const _: () = {
11202        use alloy::sol_types as alloy_sol_types;
11203        {
11204            #[doc(hidden)]
11205            #[allow(dead_code)]
11206            type UnderlyingSolTuple<'a> = ();
11207            #[doc(hidden)]
11208            type UnderlyingRustTuple<'a> = ();
11209            #[cfg(test)]
11210            #[allow(dead_code, unreachable_patterns)]
11211            fn _type_assertion(
11212                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11213            ) {
11214                match _t {
11215                    alloy_sol_types::private::AssertTypeEq::<
11216                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11217                    >(_) => {}
11218                }
11219            }
11220            #[automatically_derived]
11221            #[doc(hidden)]
11222            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
11223                fn from(value: ownerCall) -> Self {
11224                    ()
11225                }
11226            }
11227            #[automatically_derived]
11228            #[doc(hidden)]
11229            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
11230                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11231                    Self
11232                }
11233            }
11234        }
11235        {
11236            #[doc(hidden)]
11237            #[allow(dead_code)]
11238            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11239            #[doc(hidden)]
11240            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11241            #[cfg(test)]
11242            #[allow(dead_code, unreachable_patterns)]
11243            fn _type_assertion(
11244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11245            ) {
11246                match _t {
11247                    alloy_sol_types::private::AssertTypeEq::<
11248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11249                    >(_) => {}
11250                }
11251            }
11252            #[automatically_derived]
11253            #[doc(hidden)]
11254            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
11255                fn from(value: ownerReturn) -> Self {
11256                    (value._0,)
11257                }
11258            }
11259            #[automatically_derived]
11260            #[doc(hidden)]
11261            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
11262                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11263                    Self { _0: tuple.0 }
11264                }
11265            }
11266        }
11267        #[automatically_derived]
11268        impl alloy_sol_types::SolCall for ownerCall {
11269            type Parameters<'a> = ();
11270            type Token<'a> = <Self::Parameters<
11271                'a,
11272            > as alloy_sol_types::SolType>::Token<'a>;
11273            type Return = alloy::sol_types::private::Address;
11274            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11275            type ReturnToken<'a> = <Self::ReturnTuple<
11276                'a,
11277            > as alloy_sol_types::SolType>::Token<'a>;
11278            const SIGNATURE: &'static str = "owner()";
11279            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
11280            #[inline]
11281            fn new<'a>(
11282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11283            ) -> Self {
11284                tuple.into()
11285            }
11286            #[inline]
11287            fn tokenize(&self) -> Self::Token<'_> {
11288                ()
11289            }
11290            #[inline]
11291            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11292                (
11293                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11294                        ret,
11295                    ),
11296                )
11297            }
11298            #[inline]
11299            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11300                <Self::ReturnTuple<
11301                    '_,
11302                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11303                    .map(|r| {
11304                        let r: ownerReturn = r.into();
11305                        r._0
11306                    })
11307            }
11308            #[inline]
11309            fn abi_decode_returns_validate(
11310                data: &[u8],
11311            ) -> alloy_sol_types::Result<Self::Return> {
11312                <Self::ReturnTuple<
11313                    '_,
11314                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11315                    .map(|r| {
11316                        let r: ownerReturn = r.into();
11317                        r._0
11318                    })
11319            }
11320        }
11321    };
11322    #[derive(serde::Serialize, serde::Deserialize)]
11323    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11324    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
11325```solidity
11326function permissionedProver() external view returns (address);
11327```*/
11328    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11329    #[derive(Clone)]
11330    pub struct permissionedProverCall;
11331    #[derive(serde::Serialize, serde::Deserialize)]
11332    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11333    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
11334    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11335    #[derive(Clone)]
11336    pub struct permissionedProverReturn {
11337        #[allow(missing_docs)]
11338        pub _0: alloy::sol_types::private::Address,
11339    }
11340    #[allow(
11341        non_camel_case_types,
11342        non_snake_case,
11343        clippy::pub_underscore_fields,
11344        clippy::style
11345    )]
11346    const _: () = {
11347        use alloy::sol_types as alloy_sol_types;
11348        {
11349            #[doc(hidden)]
11350            #[allow(dead_code)]
11351            type UnderlyingSolTuple<'a> = ();
11352            #[doc(hidden)]
11353            type UnderlyingRustTuple<'a> = ();
11354            #[cfg(test)]
11355            #[allow(dead_code, unreachable_patterns)]
11356            fn _type_assertion(
11357                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11358            ) {
11359                match _t {
11360                    alloy_sol_types::private::AssertTypeEq::<
11361                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11362                    >(_) => {}
11363                }
11364            }
11365            #[automatically_derived]
11366            #[doc(hidden)]
11367            impl ::core::convert::From<permissionedProverCall>
11368            for UnderlyingRustTuple<'_> {
11369                fn from(value: permissionedProverCall) -> Self {
11370                    ()
11371                }
11372            }
11373            #[automatically_derived]
11374            #[doc(hidden)]
11375            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11376            for permissionedProverCall {
11377                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11378                    Self
11379                }
11380            }
11381        }
11382        {
11383            #[doc(hidden)]
11384            #[allow(dead_code)]
11385            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11386            #[doc(hidden)]
11387            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11388            #[cfg(test)]
11389            #[allow(dead_code, unreachable_patterns)]
11390            fn _type_assertion(
11391                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11392            ) {
11393                match _t {
11394                    alloy_sol_types::private::AssertTypeEq::<
11395                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11396                    >(_) => {}
11397                }
11398            }
11399            #[automatically_derived]
11400            #[doc(hidden)]
11401            impl ::core::convert::From<permissionedProverReturn>
11402            for UnderlyingRustTuple<'_> {
11403                fn from(value: permissionedProverReturn) -> Self {
11404                    (value._0,)
11405                }
11406            }
11407            #[automatically_derived]
11408            #[doc(hidden)]
11409            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11410            for permissionedProverReturn {
11411                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11412                    Self { _0: tuple.0 }
11413                }
11414            }
11415        }
11416        #[automatically_derived]
11417        impl alloy_sol_types::SolCall for permissionedProverCall {
11418            type Parameters<'a> = ();
11419            type Token<'a> = <Self::Parameters<
11420                'a,
11421            > as alloy_sol_types::SolType>::Token<'a>;
11422            type Return = alloy::sol_types::private::Address;
11423            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
11424            type ReturnToken<'a> = <Self::ReturnTuple<
11425                'a,
11426            > as alloy_sol_types::SolType>::Token<'a>;
11427            const SIGNATURE: &'static str = "permissionedProver()";
11428            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
11429            #[inline]
11430            fn new<'a>(
11431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11432            ) -> Self {
11433                tuple.into()
11434            }
11435            #[inline]
11436            fn tokenize(&self) -> Self::Token<'_> {
11437                ()
11438            }
11439            #[inline]
11440            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11441                (
11442                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11443                        ret,
11444                    ),
11445                )
11446            }
11447            #[inline]
11448            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11449                <Self::ReturnTuple<
11450                    '_,
11451                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11452                    .map(|r| {
11453                        let r: permissionedProverReturn = r.into();
11454                        r._0
11455                    })
11456            }
11457            #[inline]
11458            fn abi_decode_returns_validate(
11459                data: &[u8],
11460            ) -> alloy_sol_types::Result<Self::Return> {
11461                <Self::ReturnTuple<
11462                    '_,
11463                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11464                    .map(|r| {
11465                        let r: permissionedProverReturn = r.into();
11466                        r._0
11467                    })
11468            }
11469        }
11470    };
11471    #[derive(serde::Serialize, serde::Deserialize)]
11472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11473    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
11474```solidity
11475function proxiableUUID() external view returns (bytes32);
11476```*/
11477    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11478    #[derive(Clone)]
11479    pub struct proxiableUUIDCall;
11480    #[derive(serde::Serialize, serde::Deserialize)]
11481    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11482    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
11483    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11484    #[derive(Clone)]
11485    pub struct proxiableUUIDReturn {
11486        #[allow(missing_docs)]
11487        pub _0: alloy::sol_types::private::FixedBytes<32>,
11488    }
11489    #[allow(
11490        non_camel_case_types,
11491        non_snake_case,
11492        clippy::pub_underscore_fields,
11493        clippy::style
11494    )]
11495    const _: () = {
11496        use alloy::sol_types as alloy_sol_types;
11497        {
11498            #[doc(hidden)]
11499            #[allow(dead_code)]
11500            type UnderlyingSolTuple<'a> = ();
11501            #[doc(hidden)]
11502            type UnderlyingRustTuple<'a> = ();
11503            #[cfg(test)]
11504            #[allow(dead_code, unreachable_patterns)]
11505            fn _type_assertion(
11506                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11507            ) {
11508                match _t {
11509                    alloy_sol_types::private::AssertTypeEq::<
11510                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11511                    >(_) => {}
11512                }
11513            }
11514            #[automatically_derived]
11515            #[doc(hidden)]
11516            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
11517                fn from(value: proxiableUUIDCall) -> Self {
11518                    ()
11519                }
11520            }
11521            #[automatically_derived]
11522            #[doc(hidden)]
11523            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
11524                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11525                    Self
11526                }
11527            }
11528        }
11529        {
11530            #[doc(hidden)]
11531            #[allow(dead_code)]
11532            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11533            #[doc(hidden)]
11534            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
11535            #[cfg(test)]
11536            #[allow(dead_code, unreachable_patterns)]
11537            fn _type_assertion(
11538                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11539            ) {
11540                match _t {
11541                    alloy_sol_types::private::AssertTypeEq::<
11542                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11543                    >(_) => {}
11544                }
11545            }
11546            #[automatically_derived]
11547            #[doc(hidden)]
11548            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
11549                fn from(value: proxiableUUIDReturn) -> Self {
11550                    (value._0,)
11551                }
11552            }
11553            #[automatically_derived]
11554            #[doc(hidden)]
11555            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
11556                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11557                    Self { _0: tuple.0 }
11558                }
11559            }
11560        }
11561        #[automatically_derived]
11562        impl alloy_sol_types::SolCall for proxiableUUIDCall {
11563            type Parameters<'a> = ();
11564            type Token<'a> = <Self::Parameters<
11565                'a,
11566            > as alloy_sol_types::SolType>::Token<'a>;
11567            type Return = alloy::sol_types::private::FixedBytes<32>;
11568            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
11569            type ReturnToken<'a> = <Self::ReturnTuple<
11570                'a,
11571            > as alloy_sol_types::SolType>::Token<'a>;
11572            const SIGNATURE: &'static str = "proxiableUUID()";
11573            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
11574            #[inline]
11575            fn new<'a>(
11576                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11577            ) -> Self {
11578                tuple.into()
11579            }
11580            #[inline]
11581            fn tokenize(&self) -> Self::Token<'_> {
11582                ()
11583            }
11584            #[inline]
11585            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11586                (
11587                    <alloy::sol_types::sol_data::FixedBytes<
11588                        32,
11589                    > as alloy_sol_types::SolType>::tokenize(ret),
11590                )
11591            }
11592            #[inline]
11593            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11594                <Self::ReturnTuple<
11595                    '_,
11596                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11597                    .map(|r| {
11598                        let r: proxiableUUIDReturn = r.into();
11599                        r._0
11600                    })
11601            }
11602            #[inline]
11603            fn abi_decode_returns_validate(
11604                data: &[u8],
11605            ) -> alloy_sol_types::Result<Self::Return> {
11606                <Self::ReturnTuple<
11607                    '_,
11608                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11609                    .map(|r| {
11610                        let r: proxiableUUIDReturn = r.into();
11611                        r._0
11612                    })
11613            }
11614        }
11615    };
11616    #[derive(serde::Serialize, serde::Deserialize)]
11617    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11618    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
11619```solidity
11620function renounceOwnership() external;
11621```*/
11622    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11623    #[derive(Clone)]
11624    pub struct renounceOwnershipCall;
11625    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
11626    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11627    #[derive(Clone)]
11628    pub struct renounceOwnershipReturn {}
11629    #[allow(
11630        non_camel_case_types,
11631        non_snake_case,
11632        clippy::pub_underscore_fields,
11633        clippy::style
11634    )]
11635    const _: () = {
11636        use alloy::sol_types as alloy_sol_types;
11637        {
11638            #[doc(hidden)]
11639            #[allow(dead_code)]
11640            type UnderlyingSolTuple<'a> = ();
11641            #[doc(hidden)]
11642            type UnderlyingRustTuple<'a> = ();
11643            #[cfg(test)]
11644            #[allow(dead_code, unreachable_patterns)]
11645            fn _type_assertion(
11646                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11647            ) {
11648                match _t {
11649                    alloy_sol_types::private::AssertTypeEq::<
11650                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11651                    >(_) => {}
11652                }
11653            }
11654            #[automatically_derived]
11655            #[doc(hidden)]
11656            impl ::core::convert::From<renounceOwnershipCall>
11657            for UnderlyingRustTuple<'_> {
11658                fn from(value: renounceOwnershipCall) -> Self {
11659                    ()
11660                }
11661            }
11662            #[automatically_derived]
11663            #[doc(hidden)]
11664            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11665            for renounceOwnershipCall {
11666                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11667                    Self
11668                }
11669            }
11670        }
11671        {
11672            #[doc(hidden)]
11673            #[allow(dead_code)]
11674            type UnderlyingSolTuple<'a> = ();
11675            #[doc(hidden)]
11676            type UnderlyingRustTuple<'a> = ();
11677            #[cfg(test)]
11678            #[allow(dead_code, unreachable_patterns)]
11679            fn _type_assertion(
11680                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11681            ) {
11682                match _t {
11683                    alloy_sol_types::private::AssertTypeEq::<
11684                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11685                    >(_) => {}
11686                }
11687            }
11688            #[automatically_derived]
11689            #[doc(hidden)]
11690            impl ::core::convert::From<renounceOwnershipReturn>
11691            for UnderlyingRustTuple<'_> {
11692                fn from(value: renounceOwnershipReturn) -> Self {
11693                    ()
11694                }
11695            }
11696            #[automatically_derived]
11697            #[doc(hidden)]
11698            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11699            for renounceOwnershipReturn {
11700                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11701                    Self {}
11702                }
11703            }
11704        }
11705        impl renounceOwnershipReturn {
11706            fn _tokenize(
11707                &self,
11708            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11709                ()
11710            }
11711        }
11712        #[automatically_derived]
11713        impl alloy_sol_types::SolCall for renounceOwnershipCall {
11714            type Parameters<'a> = ();
11715            type Token<'a> = <Self::Parameters<
11716                'a,
11717            > as alloy_sol_types::SolType>::Token<'a>;
11718            type Return = renounceOwnershipReturn;
11719            type ReturnTuple<'a> = ();
11720            type ReturnToken<'a> = <Self::ReturnTuple<
11721                'a,
11722            > as alloy_sol_types::SolType>::Token<'a>;
11723            const SIGNATURE: &'static str = "renounceOwnership()";
11724            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
11725            #[inline]
11726            fn new<'a>(
11727                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11728            ) -> Self {
11729                tuple.into()
11730            }
11731            #[inline]
11732            fn tokenize(&self) -> Self::Token<'_> {
11733                ()
11734            }
11735            #[inline]
11736            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11737                renounceOwnershipReturn::_tokenize(ret)
11738            }
11739            #[inline]
11740            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11741                <Self::ReturnTuple<
11742                    '_,
11743                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11744                    .map(Into::into)
11745            }
11746            #[inline]
11747            fn abi_decode_returns_validate(
11748                data: &[u8],
11749            ) -> alloy_sol_types::Result<Self::Return> {
11750                <Self::ReturnTuple<
11751                    '_,
11752                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11753                    .map(Into::into)
11754            }
11755        }
11756    };
11757    #[derive(serde::Serialize, serde::Deserialize)]
11758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11759    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
11760```solidity
11761function setPermissionedProver(address prover) external;
11762```*/
11763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11764    #[derive(Clone)]
11765    pub struct setPermissionedProverCall {
11766        #[allow(missing_docs)]
11767        pub prover: alloy::sol_types::private::Address,
11768    }
11769    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
11770    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11771    #[derive(Clone)]
11772    pub struct setPermissionedProverReturn {}
11773    #[allow(
11774        non_camel_case_types,
11775        non_snake_case,
11776        clippy::pub_underscore_fields,
11777        clippy::style
11778    )]
11779    const _: () = {
11780        use alloy::sol_types as alloy_sol_types;
11781        {
11782            #[doc(hidden)]
11783            #[allow(dead_code)]
11784            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11785            #[doc(hidden)]
11786            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11787            #[cfg(test)]
11788            #[allow(dead_code, unreachable_patterns)]
11789            fn _type_assertion(
11790                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11791            ) {
11792                match _t {
11793                    alloy_sol_types::private::AssertTypeEq::<
11794                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11795                    >(_) => {}
11796                }
11797            }
11798            #[automatically_derived]
11799            #[doc(hidden)]
11800            impl ::core::convert::From<setPermissionedProverCall>
11801            for UnderlyingRustTuple<'_> {
11802                fn from(value: setPermissionedProverCall) -> Self {
11803                    (value.prover,)
11804                }
11805            }
11806            #[automatically_derived]
11807            #[doc(hidden)]
11808            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11809            for setPermissionedProverCall {
11810                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11811                    Self { prover: tuple.0 }
11812                }
11813            }
11814        }
11815        {
11816            #[doc(hidden)]
11817            #[allow(dead_code)]
11818            type UnderlyingSolTuple<'a> = ();
11819            #[doc(hidden)]
11820            type UnderlyingRustTuple<'a> = ();
11821            #[cfg(test)]
11822            #[allow(dead_code, unreachable_patterns)]
11823            fn _type_assertion(
11824                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11825            ) {
11826                match _t {
11827                    alloy_sol_types::private::AssertTypeEq::<
11828                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11829                    >(_) => {}
11830                }
11831            }
11832            #[automatically_derived]
11833            #[doc(hidden)]
11834            impl ::core::convert::From<setPermissionedProverReturn>
11835            for UnderlyingRustTuple<'_> {
11836                fn from(value: setPermissionedProverReturn) -> Self {
11837                    ()
11838                }
11839            }
11840            #[automatically_derived]
11841            #[doc(hidden)]
11842            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11843            for setPermissionedProverReturn {
11844                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11845                    Self {}
11846                }
11847            }
11848        }
11849        impl setPermissionedProverReturn {
11850            fn _tokenize(
11851                &self,
11852            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
11853                '_,
11854            > {
11855                ()
11856            }
11857        }
11858        #[automatically_derived]
11859        impl alloy_sol_types::SolCall for setPermissionedProverCall {
11860            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11861            type Token<'a> = <Self::Parameters<
11862                'a,
11863            > as alloy_sol_types::SolType>::Token<'a>;
11864            type Return = setPermissionedProverReturn;
11865            type ReturnTuple<'a> = ();
11866            type ReturnToken<'a> = <Self::ReturnTuple<
11867                'a,
11868            > as alloy_sol_types::SolType>::Token<'a>;
11869            const SIGNATURE: &'static str = "setPermissionedProver(address)";
11870            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
11871            #[inline]
11872            fn new<'a>(
11873                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11874            ) -> Self {
11875                tuple.into()
11876            }
11877            #[inline]
11878            fn tokenize(&self) -> Self::Token<'_> {
11879                (
11880                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11881                        &self.prover,
11882                    ),
11883                )
11884            }
11885            #[inline]
11886            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11887                setPermissionedProverReturn::_tokenize(ret)
11888            }
11889            #[inline]
11890            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11891                <Self::ReturnTuple<
11892                    '_,
11893                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11894                    .map(Into::into)
11895            }
11896            #[inline]
11897            fn abi_decode_returns_validate(
11898                data: &[u8],
11899            ) -> alloy_sol_types::Result<Self::Return> {
11900                <Self::ReturnTuple<
11901                    '_,
11902                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11903                    .map(Into::into)
11904            }
11905        }
11906    };
11907    #[derive(serde::Serialize, serde::Deserialize)]
11908    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11909    /**Function with signature `setStateHistoryRetentionPeriod(uint32)` and selector `0x433dba9f`.
11910```solidity
11911function setStateHistoryRetentionPeriod(uint32 historySeconds) external;
11912```*/
11913    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11914    #[derive(Clone)]
11915    pub struct setStateHistoryRetentionPeriodCall {
11916        #[allow(missing_docs)]
11917        pub historySeconds: u32,
11918    }
11919    ///Container type for the return parameters of the [`setStateHistoryRetentionPeriod(uint32)`](setStateHistoryRetentionPeriodCall) function.
11920    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11921    #[derive(Clone)]
11922    pub struct setStateHistoryRetentionPeriodReturn {}
11923    #[allow(
11924        non_camel_case_types,
11925        non_snake_case,
11926        clippy::pub_underscore_fields,
11927        clippy::style
11928    )]
11929    const _: () = {
11930        use alloy::sol_types as alloy_sol_types;
11931        {
11932            #[doc(hidden)]
11933            #[allow(dead_code)]
11934            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11935            #[doc(hidden)]
11936            type UnderlyingRustTuple<'a> = (u32,);
11937            #[cfg(test)]
11938            #[allow(dead_code, unreachable_patterns)]
11939            fn _type_assertion(
11940                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11941            ) {
11942                match _t {
11943                    alloy_sol_types::private::AssertTypeEq::<
11944                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11945                    >(_) => {}
11946                }
11947            }
11948            #[automatically_derived]
11949            #[doc(hidden)]
11950            impl ::core::convert::From<setStateHistoryRetentionPeriodCall>
11951            for UnderlyingRustTuple<'_> {
11952                fn from(value: setStateHistoryRetentionPeriodCall) -> Self {
11953                    (value.historySeconds,)
11954                }
11955            }
11956            #[automatically_derived]
11957            #[doc(hidden)]
11958            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11959            for setStateHistoryRetentionPeriodCall {
11960                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11961                    Self { historySeconds: tuple.0 }
11962                }
11963            }
11964        }
11965        {
11966            #[doc(hidden)]
11967            #[allow(dead_code)]
11968            type UnderlyingSolTuple<'a> = ();
11969            #[doc(hidden)]
11970            type UnderlyingRustTuple<'a> = ();
11971            #[cfg(test)]
11972            #[allow(dead_code, unreachable_patterns)]
11973            fn _type_assertion(
11974                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11975            ) {
11976                match _t {
11977                    alloy_sol_types::private::AssertTypeEq::<
11978                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11979                    >(_) => {}
11980                }
11981            }
11982            #[automatically_derived]
11983            #[doc(hidden)]
11984            impl ::core::convert::From<setStateHistoryRetentionPeriodReturn>
11985            for UnderlyingRustTuple<'_> {
11986                fn from(value: setStateHistoryRetentionPeriodReturn) -> Self {
11987                    ()
11988                }
11989            }
11990            #[automatically_derived]
11991            #[doc(hidden)]
11992            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11993            for setStateHistoryRetentionPeriodReturn {
11994                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11995                    Self {}
11996                }
11997            }
11998        }
11999        impl setStateHistoryRetentionPeriodReturn {
12000            fn _tokenize(
12001                &self,
12002            ) -> <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12003                '_,
12004            > {
12005                ()
12006            }
12007        }
12008        #[automatically_derived]
12009        impl alloy_sol_types::SolCall for setStateHistoryRetentionPeriodCall {
12010            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12011            type Token<'a> = <Self::Parameters<
12012                'a,
12013            > as alloy_sol_types::SolType>::Token<'a>;
12014            type Return = setStateHistoryRetentionPeriodReturn;
12015            type ReturnTuple<'a> = ();
12016            type ReturnToken<'a> = <Self::ReturnTuple<
12017                'a,
12018            > as alloy_sol_types::SolType>::Token<'a>;
12019            const SIGNATURE: &'static str = "setStateHistoryRetentionPeriod(uint32)";
12020            const SELECTOR: [u8; 4] = [67u8, 61u8, 186u8, 159u8];
12021            #[inline]
12022            fn new<'a>(
12023                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12024            ) -> Self {
12025                tuple.into()
12026            }
12027            #[inline]
12028            fn tokenize(&self) -> Self::Token<'_> {
12029                (
12030                    <alloy::sol_types::sol_data::Uint<
12031                        32,
12032                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12033                )
12034            }
12035            #[inline]
12036            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12037                setStateHistoryRetentionPeriodReturn::_tokenize(ret)
12038            }
12039            #[inline]
12040            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12041                <Self::ReturnTuple<
12042                    '_,
12043                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12044                    .map(Into::into)
12045            }
12046            #[inline]
12047            fn abi_decode_returns_validate(
12048                data: &[u8],
12049            ) -> alloy_sol_types::Result<Self::Return> {
12050                <Self::ReturnTuple<
12051                    '_,
12052                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12053                    .map(Into::into)
12054            }
12055        }
12056    };
12057    #[derive(serde::Serialize, serde::Deserialize)]
12058    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12059    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
12060```solidity
12061function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
12062```*/
12063    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12064    #[derive(Clone)]
12065    pub struct setstateHistoryRetentionPeriodCall {
12066        #[allow(missing_docs)]
12067        pub historySeconds: u32,
12068    }
12069    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
12070    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12071    #[derive(Clone)]
12072    pub struct setstateHistoryRetentionPeriodReturn {}
12073    #[allow(
12074        non_camel_case_types,
12075        non_snake_case,
12076        clippy::pub_underscore_fields,
12077        clippy::style
12078    )]
12079    const _: () = {
12080        use alloy::sol_types as alloy_sol_types;
12081        {
12082            #[doc(hidden)]
12083            #[allow(dead_code)]
12084            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12085            #[doc(hidden)]
12086            type UnderlyingRustTuple<'a> = (u32,);
12087            #[cfg(test)]
12088            #[allow(dead_code, unreachable_patterns)]
12089            fn _type_assertion(
12090                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12091            ) {
12092                match _t {
12093                    alloy_sol_types::private::AssertTypeEq::<
12094                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12095                    >(_) => {}
12096                }
12097            }
12098            #[automatically_derived]
12099            #[doc(hidden)]
12100            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
12101            for UnderlyingRustTuple<'_> {
12102                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
12103                    (value.historySeconds,)
12104                }
12105            }
12106            #[automatically_derived]
12107            #[doc(hidden)]
12108            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12109            for setstateHistoryRetentionPeriodCall {
12110                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12111                    Self { historySeconds: tuple.0 }
12112                }
12113            }
12114        }
12115        {
12116            #[doc(hidden)]
12117            #[allow(dead_code)]
12118            type UnderlyingSolTuple<'a> = ();
12119            #[doc(hidden)]
12120            type UnderlyingRustTuple<'a> = ();
12121            #[cfg(test)]
12122            #[allow(dead_code, unreachable_patterns)]
12123            fn _type_assertion(
12124                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12125            ) {
12126                match _t {
12127                    alloy_sol_types::private::AssertTypeEq::<
12128                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12129                    >(_) => {}
12130                }
12131            }
12132            #[automatically_derived]
12133            #[doc(hidden)]
12134            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
12135            for UnderlyingRustTuple<'_> {
12136                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
12137                    ()
12138                }
12139            }
12140            #[automatically_derived]
12141            #[doc(hidden)]
12142            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12143            for setstateHistoryRetentionPeriodReturn {
12144                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12145                    Self {}
12146                }
12147            }
12148        }
12149        impl setstateHistoryRetentionPeriodReturn {
12150            fn _tokenize(
12151                &self,
12152            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
12153                '_,
12154            > {
12155                ()
12156            }
12157        }
12158        #[automatically_derived]
12159        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
12160            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12161            type Token<'a> = <Self::Parameters<
12162                'a,
12163            > as alloy_sol_types::SolType>::Token<'a>;
12164            type Return = setstateHistoryRetentionPeriodReturn;
12165            type ReturnTuple<'a> = ();
12166            type ReturnToken<'a> = <Self::ReturnTuple<
12167                'a,
12168            > as alloy_sol_types::SolType>::Token<'a>;
12169            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
12170            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
12171            #[inline]
12172            fn new<'a>(
12173                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12174            ) -> Self {
12175                tuple.into()
12176            }
12177            #[inline]
12178            fn tokenize(&self) -> Self::Token<'_> {
12179                (
12180                    <alloy::sol_types::sol_data::Uint<
12181                        32,
12182                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
12183                )
12184            }
12185            #[inline]
12186            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12187                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
12188            }
12189            #[inline]
12190            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12191                <Self::ReturnTuple<
12192                    '_,
12193                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12194                    .map(Into::into)
12195            }
12196            #[inline]
12197            fn abi_decode_returns_validate(
12198                data: &[u8],
12199            ) -> alloy_sol_types::Result<Self::Return> {
12200                <Self::ReturnTuple<
12201                    '_,
12202                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12203                    .map(Into::into)
12204            }
12205        }
12206    };
12207    #[derive(serde::Serialize, serde::Deserialize)]
12208    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12209    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
12210```solidity
12211function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
12212```*/
12213    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12214    #[derive(Clone)]
12215    pub struct stateHistoryCommitmentsCall(
12216        pub alloy::sol_types::private::primitives::aliases::U256,
12217    );
12218    #[derive(serde::Serialize, serde::Deserialize)]
12219    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12220    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
12221    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12222    #[derive(Clone)]
12223    pub struct stateHistoryCommitmentsReturn {
12224        #[allow(missing_docs)]
12225        pub l1BlockHeight: u64,
12226        #[allow(missing_docs)]
12227        pub l1BlockTimestamp: u64,
12228        #[allow(missing_docs)]
12229        pub hotShotBlockHeight: u64,
12230        #[allow(missing_docs)]
12231        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12232    }
12233    #[allow(
12234        non_camel_case_types,
12235        non_snake_case,
12236        clippy::pub_underscore_fields,
12237        clippy::style
12238    )]
12239    const _: () = {
12240        use alloy::sol_types as alloy_sol_types;
12241        {
12242            #[doc(hidden)]
12243            #[allow(dead_code)]
12244            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12245            #[doc(hidden)]
12246            type UnderlyingRustTuple<'a> = (
12247                alloy::sol_types::private::primitives::aliases::U256,
12248            );
12249            #[cfg(test)]
12250            #[allow(dead_code, unreachable_patterns)]
12251            fn _type_assertion(
12252                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12253            ) {
12254                match _t {
12255                    alloy_sol_types::private::AssertTypeEq::<
12256                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12257                    >(_) => {}
12258                }
12259            }
12260            #[automatically_derived]
12261            #[doc(hidden)]
12262            impl ::core::convert::From<stateHistoryCommitmentsCall>
12263            for UnderlyingRustTuple<'_> {
12264                fn from(value: stateHistoryCommitmentsCall) -> Self {
12265                    (value.0,)
12266                }
12267            }
12268            #[automatically_derived]
12269            #[doc(hidden)]
12270            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12271            for stateHistoryCommitmentsCall {
12272                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12273                    Self(tuple.0)
12274                }
12275            }
12276        }
12277        {
12278            #[doc(hidden)]
12279            #[allow(dead_code)]
12280            type UnderlyingSolTuple<'a> = (
12281                alloy::sol_types::sol_data::Uint<64>,
12282                alloy::sol_types::sol_data::Uint<64>,
12283                alloy::sol_types::sol_data::Uint<64>,
12284                BN254::ScalarField,
12285            );
12286            #[doc(hidden)]
12287            type UnderlyingRustTuple<'a> = (
12288                u64,
12289                u64,
12290                u64,
12291                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
12292            );
12293            #[cfg(test)]
12294            #[allow(dead_code, unreachable_patterns)]
12295            fn _type_assertion(
12296                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12297            ) {
12298                match _t {
12299                    alloy_sol_types::private::AssertTypeEq::<
12300                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12301                    >(_) => {}
12302                }
12303            }
12304            #[automatically_derived]
12305            #[doc(hidden)]
12306            impl ::core::convert::From<stateHistoryCommitmentsReturn>
12307            for UnderlyingRustTuple<'_> {
12308                fn from(value: stateHistoryCommitmentsReturn) -> Self {
12309                    (
12310                        value.l1BlockHeight,
12311                        value.l1BlockTimestamp,
12312                        value.hotShotBlockHeight,
12313                        value.hotShotBlockCommRoot,
12314                    )
12315                }
12316            }
12317            #[automatically_derived]
12318            #[doc(hidden)]
12319            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12320            for stateHistoryCommitmentsReturn {
12321                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12322                    Self {
12323                        l1BlockHeight: tuple.0,
12324                        l1BlockTimestamp: tuple.1,
12325                        hotShotBlockHeight: tuple.2,
12326                        hotShotBlockCommRoot: tuple.3,
12327                    }
12328                }
12329            }
12330        }
12331        impl stateHistoryCommitmentsReturn {
12332            fn _tokenize(
12333                &self,
12334            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
12335                '_,
12336            > {
12337                (
12338                    <alloy::sol_types::sol_data::Uint<
12339                        64,
12340                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
12341                    <alloy::sol_types::sol_data::Uint<
12342                        64,
12343                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
12344                    <alloy::sol_types::sol_data::Uint<
12345                        64,
12346                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
12347                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
12348                        &self.hotShotBlockCommRoot,
12349                    ),
12350                )
12351            }
12352        }
12353        #[automatically_derived]
12354        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
12355            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
12356            type Token<'a> = <Self::Parameters<
12357                'a,
12358            > as alloy_sol_types::SolType>::Token<'a>;
12359            type Return = stateHistoryCommitmentsReturn;
12360            type ReturnTuple<'a> = (
12361                alloy::sol_types::sol_data::Uint<64>,
12362                alloy::sol_types::sol_data::Uint<64>,
12363                alloy::sol_types::sol_data::Uint<64>,
12364                BN254::ScalarField,
12365            );
12366            type ReturnToken<'a> = <Self::ReturnTuple<
12367                'a,
12368            > as alloy_sol_types::SolType>::Token<'a>;
12369            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
12370            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
12371            #[inline]
12372            fn new<'a>(
12373                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12374            ) -> Self {
12375                tuple.into()
12376            }
12377            #[inline]
12378            fn tokenize(&self) -> Self::Token<'_> {
12379                (
12380                    <alloy::sol_types::sol_data::Uint<
12381                        256,
12382                    > as alloy_sol_types::SolType>::tokenize(&self.0),
12383                )
12384            }
12385            #[inline]
12386            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12387                stateHistoryCommitmentsReturn::_tokenize(ret)
12388            }
12389            #[inline]
12390            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12391                <Self::ReturnTuple<
12392                    '_,
12393                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12394                    .map(Into::into)
12395            }
12396            #[inline]
12397            fn abi_decode_returns_validate(
12398                data: &[u8],
12399            ) -> alloy_sol_types::Result<Self::Return> {
12400                <Self::ReturnTuple<
12401                    '_,
12402                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12403                    .map(Into::into)
12404            }
12405        }
12406    };
12407    #[derive(serde::Serialize, serde::Deserialize)]
12408    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12409    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
12410```solidity
12411function stateHistoryFirstIndex() external view returns (uint64);
12412```*/
12413    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12414    #[derive(Clone)]
12415    pub struct stateHistoryFirstIndexCall;
12416    #[derive(serde::Serialize, serde::Deserialize)]
12417    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12418    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
12419    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12420    #[derive(Clone)]
12421    pub struct stateHistoryFirstIndexReturn {
12422        #[allow(missing_docs)]
12423        pub _0: u64,
12424    }
12425    #[allow(
12426        non_camel_case_types,
12427        non_snake_case,
12428        clippy::pub_underscore_fields,
12429        clippy::style
12430    )]
12431    const _: () = {
12432        use alloy::sol_types as alloy_sol_types;
12433        {
12434            #[doc(hidden)]
12435            #[allow(dead_code)]
12436            type UnderlyingSolTuple<'a> = ();
12437            #[doc(hidden)]
12438            type UnderlyingRustTuple<'a> = ();
12439            #[cfg(test)]
12440            #[allow(dead_code, unreachable_patterns)]
12441            fn _type_assertion(
12442                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12443            ) {
12444                match _t {
12445                    alloy_sol_types::private::AssertTypeEq::<
12446                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12447                    >(_) => {}
12448                }
12449            }
12450            #[automatically_derived]
12451            #[doc(hidden)]
12452            impl ::core::convert::From<stateHistoryFirstIndexCall>
12453            for UnderlyingRustTuple<'_> {
12454                fn from(value: stateHistoryFirstIndexCall) -> Self {
12455                    ()
12456                }
12457            }
12458            #[automatically_derived]
12459            #[doc(hidden)]
12460            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12461            for stateHistoryFirstIndexCall {
12462                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12463                    Self
12464                }
12465            }
12466        }
12467        {
12468            #[doc(hidden)]
12469            #[allow(dead_code)]
12470            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12471            #[doc(hidden)]
12472            type UnderlyingRustTuple<'a> = (u64,);
12473            #[cfg(test)]
12474            #[allow(dead_code, unreachable_patterns)]
12475            fn _type_assertion(
12476                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12477            ) {
12478                match _t {
12479                    alloy_sol_types::private::AssertTypeEq::<
12480                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12481                    >(_) => {}
12482                }
12483            }
12484            #[automatically_derived]
12485            #[doc(hidden)]
12486            impl ::core::convert::From<stateHistoryFirstIndexReturn>
12487            for UnderlyingRustTuple<'_> {
12488                fn from(value: stateHistoryFirstIndexReturn) -> Self {
12489                    (value._0,)
12490                }
12491            }
12492            #[automatically_derived]
12493            #[doc(hidden)]
12494            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12495            for stateHistoryFirstIndexReturn {
12496                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12497                    Self { _0: tuple.0 }
12498                }
12499            }
12500        }
12501        #[automatically_derived]
12502        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
12503            type Parameters<'a> = ();
12504            type Token<'a> = <Self::Parameters<
12505                'a,
12506            > as alloy_sol_types::SolType>::Token<'a>;
12507            type Return = u64;
12508            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12509            type ReturnToken<'a> = <Self::ReturnTuple<
12510                'a,
12511            > as alloy_sol_types::SolType>::Token<'a>;
12512            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
12513            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
12514            #[inline]
12515            fn new<'a>(
12516                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12517            ) -> Self {
12518                tuple.into()
12519            }
12520            #[inline]
12521            fn tokenize(&self) -> Self::Token<'_> {
12522                ()
12523            }
12524            #[inline]
12525            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12526                (
12527                    <alloy::sol_types::sol_data::Uint<
12528                        64,
12529                    > as alloy_sol_types::SolType>::tokenize(ret),
12530                )
12531            }
12532            #[inline]
12533            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12534                <Self::ReturnTuple<
12535                    '_,
12536                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12537                    .map(|r| {
12538                        let r: stateHistoryFirstIndexReturn = r.into();
12539                        r._0
12540                    })
12541            }
12542            #[inline]
12543            fn abi_decode_returns_validate(
12544                data: &[u8],
12545            ) -> alloy_sol_types::Result<Self::Return> {
12546                <Self::ReturnTuple<
12547                    '_,
12548                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12549                    .map(|r| {
12550                        let r: stateHistoryFirstIndexReturn = r.into();
12551                        r._0
12552                    })
12553            }
12554        }
12555    };
12556    #[derive(serde::Serialize, serde::Deserialize)]
12557    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12558    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
12559```solidity
12560function stateHistoryRetentionPeriod() external view returns (uint32);
12561```*/
12562    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12563    #[derive(Clone)]
12564    pub struct stateHistoryRetentionPeriodCall;
12565    #[derive(serde::Serialize, serde::Deserialize)]
12566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12567    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
12568    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12569    #[derive(Clone)]
12570    pub struct stateHistoryRetentionPeriodReturn {
12571        #[allow(missing_docs)]
12572        pub _0: u32,
12573    }
12574    #[allow(
12575        non_camel_case_types,
12576        non_snake_case,
12577        clippy::pub_underscore_fields,
12578        clippy::style
12579    )]
12580    const _: () = {
12581        use alloy::sol_types as alloy_sol_types;
12582        {
12583            #[doc(hidden)]
12584            #[allow(dead_code)]
12585            type UnderlyingSolTuple<'a> = ();
12586            #[doc(hidden)]
12587            type UnderlyingRustTuple<'a> = ();
12588            #[cfg(test)]
12589            #[allow(dead_code, unreachable_patterns)]
12590            fn _type_assertion(
12591                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12592            ) {
12593                match _t {
12594                    alloy_sol_types::private::AssertTypeEq::<
12595                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12596                    >(_) => {}
12597                }
12598            }
12599            #[automatically_derived]
12600            #[doc(hidden)]
12601            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
12602            for UnderlyingRustTuple<'_> {
12603                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
12604                    ()
12605                }
12606            }
12607            #[automatically_derived]
12608            #[doc(hidden)]
12609            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12610            for stateHistoryRetentionPeriodCall {
12611                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12612                    Self
12613                }
12614            }
12615        }
12616        {
12617            #[doc(hidden)]
12618            #[allow(dead_code)]
12619            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12620            #[doc(hidden)]
12621            type UnderlyingRustTuple<'a> = (u32,);
12622            #[cfg(test)]
12623            #[allow(dead_code, unreachable_patterns)]
12624            fn _type_assertion(
12625                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12626            ) {
12627                match _t {
12628                    alloy_sol_types::private::AssertTypeEq::<
12629                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12630                    >(_) => {}
12631                }
12632            }
12633            #[automatically_derived]
12634            #[doc(hidden)]
12635            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
12636            for UnderlyingRustTuple<'_> {
12637                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
12638                    (value._0,)
12639                }
12640            }
12641            #[automatically_derived]
12642            #[doc(hidden)]
12643            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12644            for stateHistoryRetentionPeriodReturn {
12645                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12646                    Self { _0: tuple.0 }
12647                }
12648            }
12649        }
12650        #[automatically_derived]
12651        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
12652            type Parameters<'a> = ();
12653            type Token<'a> = <Self::Parameters<
12654                'a,
12655            > as alloy_sol_types::SolType>::Token<'a>;
12656            type Return = u32;
12657            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
12658            type ReturnToken<'a> = <Self::ReturnTuple<
12659                'a,
12660            > as alloy_sol_types::SolType>::Token<'a>;
12661            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
12662            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
12663            #[inline]
12664            fn new<'a>(
12665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12666            ) -> Self {
12667                tuple.into()
12668            }
12669            #[inline]
12670            fn tokenize(&self) -> Self::Token<'_> {
12671                ()
12672            }
12673            #[inline]
12674            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12675                (
12676                    <alloy::sol_types::sol_data::Uint<
12677                        32,
12678                    > as alloy_sol_types::SolType>::tokenize(ret),
12679                )
12680            }
12681            #[inline]
12682            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12683                <Self::ReturnTuple<
12684                    '_,
12685                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12686                    .map(|r| {
12687                        let r: stateHistoryRetentionPeriodReturn = r.into();
12688                        r._0
12689                    })
12690            }
12691            #[inline]
12692            fn abi_decode_returns_validate(
12693                data: &[u8],
12694            ) -> alloy_sol_types::Result<Self::Return> {
12695                <Self::ReturnTuple<
12696                    '_,
12697                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12698                    .map(|r| {
12699                        let r: stateHistoryRetentionPeriodReturn = r.into();
12700                        r._0
12701                    })
12702            }
12703        }
12704    };
12705    #[derive(serde::Serialize, serde::Deserialize)]
12706    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12707    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
12708```solidity
12709function transferOwnership(address newOwner) external;
12710```*/
12711    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12712    #[derive(Clone)]
12713    pub struct transferOwnershipCall {
12714        #[allow(missing_docs)]
12715        pub newOwner: alloy::sol_types::private::Address,
12716    }
12717    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
12718    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12719    #[derive(Clone)]
12720    pub struct transferOwnershipReturn {}
12721    #[allow(
12722        non_camel_case_types,
12723        non_snake_case,
12724        clippy::pub_underscore_fields,
12725        clippy::style
12726    )]
12727    const _: () = {
12728        use alloy::sol_types as alloy_sol_types;
12729        {
12730            #[doc(hidden)]
12731            #[allow(dead_code)]
12732            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
12733            #[doc(hidden)]
12734            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
12735            #[cfg(test)]
12736            #[allow(dead_code, unreachable_patterns)]
12737            fn _type_assertion(
12738                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12739            ) {
12740                match _t {
12741                    alloy_sol_types::private::AssertTypeEq::<
12742                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12743                    >(_) => {}
12744                }
12745            }
12746            #[automatically_derived]
12747            #[doc(hidden)]
12748            impl ::core::convert::From<transferOwnershipCall>
12749            for UnderlyingRustTuple<'_> {
12750                fn from(value: transferOwnershipCall) -> Self {
12751                    (value.newOwner,)
12752                }
12753            }
12754            #[automatically_derived]
12755            #[doc(hidden)]
12756            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12757            for transferOwnershipCall {
12758                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12759                    Self { newOwner: tuple.0 }
12760                }
12761            }
12762        }
12763        {
12764            #[doc(hidden)]
12765            #[allow(dead_code)]
12766            type UnderlyingSolTuple<'a> = ();
12767            #[doc(hidden)]
12768            type UnderlyingRustTuple<'a> = ();
12769            #[cfg(test)]
12770            #[allow(dead_code, unreachable_patterns)]
12771            fn _type_assertion(
12772                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12773            ) {
12774                match _t {
12775                    alloy_sol_types::private::AssertTypeEq::<
12776                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12777                    >(_) => {}
12778                }
12779            }
12780            #[automatically_derived]
12781            #[doc(hidden)]
12782            impl ::core::convert::From<transferOwnershipReturn>
12783            for UnderlyingRustTuple<'_> {
12784                fn from(value: transferOwnershipReturn) -> Self {
12785                    ()
12786                }
12787            }
12788            #[automatically_derived]
12789            #[doc(hidden)]
12790            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12791            for transferOwnershipReturn {
12792                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12793                    Self {}
12794                }
12795            }
12796        }
12797        impl transferOwnershipReturn {
12798            fn _tokenize(
12799                &self,
12800            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
12801                ()
12802            }
12803        }
12804        #[automatically_derived]
12805        impl alloy_sol_types::SolCall for transferOwnershipCall {
12806            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
12807            type Token<'a> = <Self::Parameters<
12808                'a,
12809            > as alloy_sol_types::SolType>::Token<'a>;
12810            type Return = transferOwnershipReturn;
12811            type ReturnTuple<'a> = ();
12812            type ReturnToken<'a> = <Self::ReturnTuple<
12813                'a,
12814            > as alloy_sol_types::SolType>::Token<'a>;
12815            const SIGNATURE: &'static str = "transferOwnership(address)";
12816            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
12817            #[inline]
12818            fn new<'a>(
12819                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12820            ) -> Self {
12821                tuple.into()
12822            }
12823            #[inline]
12824            fn tokenize(&self) -> Self::Token<'_> {
12825                (
12826                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
12827                        &self.newOwner,
12828                    ),
12829                )
12830            }
12831            #[inline]
12832            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12833                transferOwnershipReturn::_tokenize(ret)
12834            }
12835            #[inline]
12836            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12837                <Self::ReturnTuple<
12838                    '_,
12839                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12840                    .map(Into::into)
12841            }
12842            #[inline]
12843            fn abi_decode_returns_validate(
12844                data: &[u8],
12845            ) -> alloy_sol_types::Result<Self::Return> {
12846                <Self::ReturnTuple<
12847                    '_,
12848                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
12849                    .map(Into::into)
12850            }
12851        }
12852    };
12853    #[derive(serde::Serialize, serde::Deserialize)]
12854    #[derive(Default, Debug, PartialEq, Eq, Hash)]
12855    /**Function with signature `updateEpochStartBlock(uint64)` and selector `0x167ac618`.
12856```solidity
12857function updateEpochStartBlock(uint64 newEpochStartBlock) external;
12858```*/
12859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12860    #[derive(Clone)]
12861    pub struct updateEpochStartBlockCall {
12862        #[allow(missing_docs)]
12863        pub newEpochStartBlock: u64,
12864    }
12865    ///Container type for the return parameters of the [`updateEpochStartBlock(uint64)`](updateEpochStartBlockCall) function.
12866    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
12867    #[derive(Clone)]
12868    pub struct updateEpochStartBlockReturn {}
12869    #[allow(
12870        non_camel_case_types,
12871        non_snake_case,
12872        clippy::pub_underscore_fields,
12873        clippy::style
12874    )]
12875    const _: () = {
12876        use alloy::sol_types as alloy_sol_types;
12877        {
12878            #[doc(hidden)]
12879            #[allow(dead_code)]
12880            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12881            #[doc(hidden)]
12882            type UnderlyingRustTuple<'a> = (u64,);
12883            #[cfg(test)]
12884            #[allow(dead_code, unreachable_patterns)]
12885            fn _type_assertion(
12886                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12887            ) {
12888                match _t {
12889                    alloy_sol_types::private::AssertTypeEq::<
12890                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12891                    >(_) => {}
12892                }
12893            }
12894            #[automatically_derived]
12895            #[doc(hidden)]
12896            impl ::core::convert::From<updateEpochStartBlockCall>
12897            for UnderlyingRustTuple<'_> {
12898                fn from(value: updateEpochStartBlockCall) -> Self {
12899                    (value.newEpochStartBlock,)
12900                }
12901            }
12902            #[automatically_derived]
12903            #[doc(hidden)]
12904            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12905            for updateEpochStartBlockCall {
12906                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12907                    Self {
12908                        newEpochStartBlock: tuple.0,
12909                    }
12910                }
12911            }
12912        }
12913        {
12914            #[doc(hidden)]
12915            #[allow(dead_code)]
12916            type UnderlyingSolTuple<'a> = ();
12917            #[doc(hidden)]
12918            type UnderlyingRustTuple<'a> = ();
12919            #[cfg(test)]
12920            #[allow(dead_code, unreachable_patterns)]
12921            fn _type_assertion(
12922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
12923            ) {
12924                match _t {
12925                    alloy_sol_types::private::AssertTypeEq::<
12926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
12927                    >(_) => {}
12928                }
12929            }
12930            #[automatically_derived]
12931            #[doc(hidden)]
12932            impl ::core::convert::From<updateEpochStartBlockReturn>
12933            for UnderlyingRustTuple<'_> {
12934                fn from(value: updateEpochStartBlockReturn) -> Self {
12935                    ()
12936                }
12937            }
12938            #[automatically_derived]
12939            #[doc(hidden)]
12940            impl ::core::convert::From<UnderlyingRustTuple<'_>>
12941            for updateEpochStartBlockReturn {
12942                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
12943                    Self {}
12944                }
12945            }
12946        }
12947        impl updateEpochStartBlockReturn {
12948            fn _tokenize(
12949                &self,
12950            ) -> <updateEpochStartBlockCall as alloy_sol_types::SolCall>::ReturnToken<
12951                '_,
12952            > {
12953                ()
12954            }
12955        }
12956        #[automatically_derived]
12957        impl alloy_sol_types::SolCall for updateEpochStartBlockCall {
12958            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<64>,);
12959            type Token<'a> = <Self::Parameters<
12960                'a,
12961            > as alloy_sol_types::SolType>::Token<'a>;
12962            type Return = updateEpochStartBlockReturn;
12963            type ReturnTuple<'a> = ();
12964            type ReturnToken<'a> = <Self::ReturnTuple<
12965                'a,
12966            > as alloy_sol_types::SolType>::Token<'a>;
12967            const SIGNATURE: &'static str = "updateEpochStartBlock(uint64)";
12968            const SELECTOR: [u8; 4] = [22u8, 122u8, 198u8, 24u8];
12969            #[inline]
12970            fn new<'a>(
12971                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
12972            ) -> Self {
12973                tuple.into()
12974            }
12975            #[inline]
12976            fn tokenize(&self) -> Self::Token<'_> {
12977                (
12978                    <alloy::sol_types::sol_data::Uint<
12979                        64,
12980                    > as alloy_sol_types::SolType>::tokenize(&self.newEpochStartBlock),
12981                )
12982            }
12983            #[inline]
12984            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
12985                updateEpochStartBlockReturn::_tokenize(ret)
12986            }
12987            #[inline]
12988            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
12989                <Self::ReturnTuple<
12990                    '_,
12991                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
12992                    .map(Into::into)
12993            }
12994            #[inline]
12995            fn abi_decode_returns_validate(
12996                data: &[u8],
12997            ) -> alloy_sol_types::Result<Self::Return> {
12998                <Self::ReturnTuple<
12999                    '_,
13000                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13001                    .map(Into::into)
13002            }
13003        }
13004    };
13005    #[derive(serde::Serialize, serde::Deserialize)]
13006    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13007    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
13008```solidity
13009function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
13010```*/
13011    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13012    #[derive(Clone)]
13013    pub struct upgradeToAndCallCall {
13014        #[allow(missing_docs)]
13015        pub newImplementation: alloy::sol_types::private::Address,
13016        #[allow(missing_docs)]
13017        pub data: alloy::sol_types::private::Bytes,
13018    }
13019    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
13020    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13021    #[derive(Clone)]
13022    pub struct upgradeToAndCallReturn {}
13023    #[allow(
13024        non_camel_case_types,
13025        non_snake_case,
13026        clippy::pub_underscore_fields,
13027        clippy::style
13028    )]
13029    const _: () = {
13030        use alloy::sol_types as alloy_sol_types;
13031        {
13032            #[doc(hidden)]
13033            #[allow(dead_code)]
13034            type UnderlyingSolTuple<'a> = (
13035                alloy::sol_types::sol_data::Address,
13036                alloy::sol_types::sol_data::Bytes,
13037            );
13038            #[doc(hidden)]
13039            type UnderlyingRustTuple<'a> = (
13040                alloy::sol_types::private::Address,
13041                alloy::sol_types::private::Bytes,
13042            );
13043            #[cfg(test)]
13044            #[allow(dead_code, unreachable_patterns)]
13045            fn _type_assertion(
13046                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13047            ) {
13048                match _t {
13049                    alloy_sol_types::private::AssertTypeEq::<
13050                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13051                    >(_) => {}
13052                }
13053            }
13054            #[automatically_derived]
13055            #[doc(hidden)]
13056            impl ::core::convert::From<upgradeToAndCallCall>
13057            for UnderlyingRustTuple<'_> {
13058                fn from(value: upgradeToAndCallCall) -> Self {
13059                    (value.newImplementation, value.data)
13060                }
13061            }
13062            #[automatically_derived]
13063            #[doc(hidden)]
13064            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13065            for upgradeToAndCallCall {
13066                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13067                    Self {
13068                        newImplementation: tuple.0,
13069                        data: tuple.1,
13070                    }
13071                }
13072            }
13073        }
13074        {
13075            #[doc(hidden)]
13076            #[allow(dead_code)]
13077            type UnderlyingSolTuple<'a> = ();
13078            #[doc(hidden)]
13079            type UnderlyingRustTuple<'a> = ();
13080            #[cfg(test)]
13081            #[allow(dead_code, unreachable_patterns)]
13082            fn _type_assertion(
13083                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13084            ) {
13085                match _t {
13086                    alloy_sol_types::private::AssertTypeEq::<
13087                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13088                    >(_) => {}
13089                }
13090            }
13091            #[automatically_derived]
13092            #[doc(hidden)]
13093            impl ::core::convert::From<upgradeToAndCallReturn>
13094            for UnderlyingRustTuple<'_> {
13095                fn from(value: upgradeToAndCallReturn) -> Self {
13096                    ()
13097                }
13098            }
13099            #[automatically_derived]
13100            #[doc(hidden)]
13101            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13102            for upgradeToAndCallReturn {
13103                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13104                    Self {}
13105                }
13106            }
13107        }
13108        impl upgradeToAndCallReturn {
13109            fn _tokenize(
13110                &self,
13111            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
13112                ()
13113            }
13114        }
13115        #[automatically_derived]
13116        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
13117            type Parameters<'a> = (
13118                alloy::sol_types::sol_data::Address,
13119                alloy::sol_types::sol_data::Bytes,
13120            );
13121            type Token<'a> = <Self::Parameters<
13122                'a,
13123            > as alloy_sol_types::SolType>::Token<'a>;
13124            type Return = upgradeToAndCallReturn;
13125            type ReturnTuple<'a> = ();
13126            type ReturnToken<'a> = <Self::ReturnTuple<
13127                'a,
13128            > as alloy_sol_types::SolType>::Token<'a>;
13129            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
13130            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
13131            #[inline]
13132            fn new<'a>(
13133                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13134            ) -> Self {
13135                tuple.into()
13136            }
13137            #[inline]
13138            fn tokenize(&self) -> Self::Token<'_> {
13139                (
13140                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
13141                        &self.newImplementation,
13142                    ),
13143                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
13144                        &self.data,
13145                    ),
13146                )
13147            }
13148            #[inline]
13149            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13150                upgradeToAndCallReturn::_tokenize(ret)
13151            }
13152            #[inline]
13153            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13154                <Self::ReturnTuple<
13155                    '_,
13156                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13157                    .map(Into::into)
13158            }
13159            #[inline]
13160            fn abi_decode_returns_validate(
13161                data: &[u8],
13162            ) -> alloy_sol_types::Result<Self::Return> {
13163                <Self::ReturnTuple<
13164                    '_,
13165                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13166                    .map(Into::into)
13167            }
13168        }
13169    };
13170    #[derive(serde::Serialize, serde::Deserialize)]
13171    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13172    /**Function with signature `votingStakeTableState()` and selector `0x0625e19b`.
13173```solidity
13174function votingStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
13175```*/
13176    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13177    #[derive(Clone)]
13178    pub struct votingStakeTableStateCall;
13179    #[derive(serde::Serialize, serde::Deserialize)]
13180    #[derive(Default, Debug, PartialEq, Eq, Hash)]
13181    ///Container type for the return parameters of the [`votingStakeTableState()`](votingStakeTableStateCall) function.
13182    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
13183    #[derive(Clone)]
13184    pub struct votingStakeTableStateReturn {
13185        #[allow(missing_docs)]
13186        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
13187        #[allow(missing_docs)]
13188        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13189        #[allow(missing_docs)]
13190        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13191        #[allow(missing_docs)]
13192        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13193    }
13194    #[allow(
13195        non_camel_case_types,
13196        non_snake_case,
13197        clippy::pub_underscore_fields,
13198        clippy::style
13199    )]
13200    const _: () = {
13201        use alloy::sol_types as alloy_sol_types;
13202        {
13203            #[doc(hidden)]
13204            #[allow(dead_code)]
13205            type UnderlyingSolTuple<'a> = ();
13206            #[doc(hidden)]
13207            type UnderlyingRustTuple<'a> = ();
13208            #[cfg(test)]
13209            #[allow(dead_code, unreachable_patterns)]
13210            fn _type_assertion(
13211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13212            ) {
13213                match _t {
13214                    alloy_sol_types::private::AssertTypeEq::<
13215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13216                    >(_) => {}
13217                }
13218            }
13219            #[automatically_derived]
13220            #[doc(hidden)]
13221            impl ::core::convert::From<votingStakeTableStateCall>
13222            for UnderlyingRustTuple<'_> {
13223                fn from(value: votingStakeTableStateCall) -> Self {
13224                    ()
13225                }
13226            }
13227            #[automatically_derived]
13228            #[doc(hidden)]
13229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13230            for votingStakeTableStateCall {
13231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13232                    Self
13233                }
13234            }
13235        }
13236        {
13237            #[doc(hidden)]
13238            #[allow(dead_code)]
13239            type UnderlyingSolTuple<'a> = (
13240                alloy::sol_types::sol_data::Uint<256>,
13241                BN254::ScalarField,
13242                BN254::ScalarField,
13243                BN254::ScalarField,
13244            );
13245            #[doc(hidden)]
13246            type UnderlyingRustTuple<'a> = (
13247                alloy::sol_types::private::primitives::aliases::U256,
13248                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13249                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13250                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
13251            );
13252            #[cfg(test)]
13253            #[allow(dead_code, unreachable_patterns)]
13254            fn _type_assertion(
13255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
13256            ) {
13257                match _t {
13258                    alloy_sol_types::private::AssertTypeEq::<
13259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
13260                    >(_) => {}
13261                }
13262            }
13263            #[automatically_derived]
13264            #[doc(hidden)]
13265            impl ::core::convert::From<votingStakeTableStateReturn>
13266            for UnderlyingRustTuple<'_> {
13267                fn from(value: votingStakeTableStateReturn) -> Self {
13268                    (
13269                        value.threshold,
13270                        value.blsKeyComm,
13271                        value.schnorrKeyComm,
13272                        value.amountComm,
13273                    )
13274                }
13275            }
13276            #[automatically_derived]
13277            #[doc(hidden)]
13278            impl ::core::convert::From<UnderlyingRustTuple<'_>>
13279            for votingStakeTableStateReturn {
13280                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
13281                    Self {
13282                        threshold: tuple.0,
13283                        blsKeyComm: tuple.1,
13284                        schnorrKeyComm: tuple.2,
13285                        amountComm: tuple.3,
13286                    }
13287                }
13288            }
13289        }
13290        impl votingStakeTableStateReturn {
13291            fn _tokenize(
13292                &self,
13293            ) -> <votingStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
13294                '_,
13295            > {
13296                (
13297                    <alloy::sol_types::sol_data::Uint<
13298                        256,
13299                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
13300                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13301                        &self.blsKeyComm,
13302                    ),
13303                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13304                        &self.schnorrKeyComm,
13305                    ),
13306                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
13307                        &self.amountComm,
13308                    ),
13309                )
13310            }
13311        }
13312        #[automatically_derived]
13313        impl alloy_sol_types::SolCall for votingStakeTableStateCall {
13314            type Parameters<'a> = ();
13315            type Token<'a> = <Self::Parameters<
13316                'a,
13317            > as alloy_sol_types::SolType>::Token<'a>;
13318            type Return = votingStakeTableStateReturn;
13319            type ReturnTuple<'a> = (
13320                alloy::sol_types::sol_data::Uint<256>,
13321                BN254::ScalarField,
13322                BN254::ScalarField,
13323                BN254::ScalarField,
13324            );
13325            type ReturnToken<'a> = <Self::ReturnTuple<
13326                'a,
13327            > as alloy_sol_types::SolType>::Token<'a>;
13328            const SIGNATURE: &'static str = "votingStakeTableState()";
13329            const SELECTOR: [u8; 4] = [6u8, 37u8, 225u8, 155u8];
13330            #[inline]
13331            fn new<'a>(
13332                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
13333            ) -> Self {
13334                tuple.into()
13335            }
13336            #[inline]
13337            fn tokenize(&self) -> Self::Token<'_> {
13338                ()
13339            }
13340            #[inline]
13341            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
13342                votingStakeTableStateReturn::_tokenize(ret)
13343            }
13344            #[inline]
13345            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
13346                <Self::ReturnTuple<
13347                    '_,
13348                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
13349                    .map(Into::into)
13350            }
13351            #[inline]
13352            fn abi_decode_returns_validate(
13353                data: &[u8],
13354            ) -> alloy_sol_types::Result<Self::Return> {
13355                <Self::ReturnTuple<
13356                    '_,
13357                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
13358                    .map(Into::into)
13359            }
13360        }
13361    };
13362    ///Container for all the [`LightClientV2`](self) function calls.
13363    #[derive(Clone)]
13364    #[derive(serde::Serialize, serde::Deserialize)]
13365    #[derive()]
13366    pub enum LightClientV2Calls {
13367        #[allow(missing_docs)]
13368        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
13369        #[allow(missing_docs)]
13370        _getVk(_getVkCall),
13371        #[allow(missing_docs)]
13372        blocksPerEpoch(blocksPerEpochCall),
13373        #[allow(missing_docs)]
13374        currentBlockNumber(currentBlockNumberCall),
13375        #[allow(missing_docs)]
13376        currentEpoch(currentEpochCall),
13377        #[allow(missing_docs)]
13378        disablePermissionedProverMode(disablePermissionedProverModeCall),
13379        #[allow(missing_docs)]
13380        epochFromBlockNumber(epochFromBlockNumberCall),
13381        #[allow(missing_docs)]
13382        epochStartBlock(epochStartBlockCall),
13383        #[allow(missing_docs)]
13384        finalizedState(finalizedStateCall),
13385        #[allow(missing_docs)]
13386        genesisStakeTableState(genesisStakeTableStateCall),
13387        #[allow(missing_docs)]
13388        genesisState(genesisStateCall),
13389        #[allow(missing_docs)]
13390        getHotShotCommitment(getHotShotCommitmentCall),
13391        #[allow(missing_docs)]
13392        getStateHistoryCount(getStateHistoryCountCall),
13393        #[allow(missing_docs)]
13394        getVersion(getVersionCall),
13395        #[allow(missing_docs)]
13396        initialize(initializeCall),
13397        #[allow(missing_docs)]
13398        initializeV2(initializeV2Call),
13399        #[allow(missing_docs)]
13400        isEpochRoot(isEpochRootCall),
13401        #[allow(missing_docs)]
13402        isGtEpochRoot(isGtEpochRootCall),
13403        #[allow(missing_docs)]
13404        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
13405        #[allow(missing_docs)]
13406        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
13407        #[allow(missing_docs)]
13408        newFinalizedState_0(newFinalizedState_0Call),
13409        #[allow(missing_docs)]
13410        newFinalizedState_1(newFinalizedState_1Call),
13411        #[allow(missing_docs)]
13412        owner(ownerCall),
13413        #[allow(missing_docs)]
13414        permissionedProver(permissionedProverCall),
13415        #[allow(missing_docs)]
13416        proxiableUUID(proxiableUUIDCall),
13417        #[allow(missing_docs)]
13418        renounceOwnership(renounceOwnershipCall),
13419        #[allow(missing_docs)]
13420        setPermissionedProver(setPermissionedProverCall),
13421        #[allow(missing_docs)]
13422        setStateHistoryRetentionPeriod(setStateHistoryRetentionPeriodCall),
13423        #[allow(missing_docs)]
13424        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
13425        #[allow(missing_docs)]
13426        stateHistoryCommitments(stateHistoryCommitmentsCall),
13427        #[allow(missing_docs)]
13428        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
13429        #[allow(missing_docs)]
13430        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
13431        #[allow(missing_docs)]
13432        transferOwnership(transferOwnershipCall),
13433        #[allow(missing_docs)]
13434        updateEpochStartBlock(updateEpochStartBlockCall),
13435        #[allow(missing_docs)]
13436        upgradeToAndCall(upgradeToAndCallCall),
13437        #[allow(missing_docs)]
13438        votingStakeTableState(votingStakeTableStateCall),
13439    }
13440    impl LightClientV2Calls {
13441        /// All the selectors of this enum.
13442        ///
13443        /// Note that the selectors might not be in the same order as the variants.
13444        /// No guarantees are made about the order of the selectors.
13445        ///
13446        /// Prefer using `SolInterface` methods instead.
13447        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13448            [1u8, 63u8, 165u8, 252u8],
13449            [2u8, 181u8, 146u8, 243u8],
13450            [6u8, 37u8, 225u8, 155u8],
13451            [13u8, 142u8, 110u8, 44u8],
13452            [18u8, 23u8, 60u8, 44u8],
13453            [22u8, 122u8, 198u8, 24u8],
13454            [32u8, 99u8, 212u8, 247u8],
13455            [37u8, 41u8, 116u8, 39u8],
13456            [47u8, 121u8, 136u8, 157u8],
13457            [48u8, 12u8, 137u8, 221u8],
13458            [49u8, 61u8, 247u8, 177u8],
13459            [55u8, 142u8, 194u8, 59u8],
13460            [62u8, 213u8, 91u8, 123u8],
13461            [66u8, 109u8, 49u8, 148u8],
13462            [67u8, 61u8, 186u8, 159u8],
13463            [79u8, 30u8, 242u8, 134u8],
13464            [82u8, 209u8, 144u8, 45u8],
13465            [105u8, 204u8, 106u8, 4u8],
13466            [113u8, 80u8, 24u8, 166u8],
13467            [117u8, 124u8, 55u8, 173u8],
13468            [118u8, 103u8, 24u8, 8u8],
13469            [130u8, 110u8, 65u8, 252u8],
13470            [133u8, 132u8, 210u8, 63u8],
13471            [141u8, 165u8, 203u8, 91u8],
13472            [144u8, 193u8, 67u8, 144u8],
13473            [150u8, 193u8, 202u8, 97u8],
13474            [155u8, 170u8, 60u8, 201u8],
13475            [159u8, 219u8, 84u8, 167u8],
13476            [173u8, 60u8, 177u8, 204u8],
13477            [179u8, 59u8, 196u8, 145u8],
13478            [194u8, 59u8, 158u8, 158u8],
13479            [210u8, 77u8, 147u8, 61u8],
13480            [224u8, 48u8, 51u8, 1u8],
13481            [240u8, 104u8, 32u8, 84u8],
13482            [242u8, 253u8, 227u8, 139u8],
13483            [249u8, 229u8, 13u8, 25u8],
13484        ];
13485        /// The names of the variants in the same order as `SELECTORS`.
13486        pub const VARIANT_NAMES: &'static [&'static str] = &[
13487            ::core::stringify!(setPermissionedProver),
13488            ::core::stringify!(stateHistoryCommitments),
13489            ::core::stringify!(votingStakeTableState),
13490            ::core::stringify!(getVersion),
13491            ::core::stringify!(_getVk),
13492            ::core::stringify!(updateEpochStartBlock),
13493            ::core::stringify!(newFinalizedState_0),
13494            ::core::stringify!(isEpochRoot),
13495            ::core::stringify!(stateHistoryFirstIndex),
13496            ::core::stringify!(isGtEpochRoot),
13497            ::core::stringify!(permissionedProver),
13498            ::core::stringify!(currentBlockNumber),
13499            ::core::stringify!(epochStartBlock),
13500            ::core::stringify!(genesisStakeTableState),
13501            ::core::stringify!(setStateHistoryRetentionPeriod),
13502            ::core::stringify!(upgradeToAndCall),
13503            ::core::stringify!(proxiableUUID),
13504            ::core::stringify!(disablePermissionedProverMode),
13505            ::core::stringify!(renounceOwnership),
13506            ::core::stringify!(newFinalizedState_1),
13507            ::core::stringify!(currentEpoch),
13508            ::core::stringify!(isPermissionedProverEnabled),
13509            ::core::stringify!(getHotShotCommitment),
13510            ::core::stringify!(owner),
13511            ::core::stringify!(epochFromBlockNumber),
13512            ::core::stringify!(setstateHistoryRetentionPeriod),
13513            ::core::stringify!(initialize),
13514            ::core::stringify!(finalizedState),
13515            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
13516            ::core::stringify!(initializeV2),
13517            ::core::stringify!(stateHistoryRetentionPeriod),
13518            ::core::stringify!(genesisState),
13519            ::core::stringify!(lagOverEscapeHatchThreshold),
13520            ::core::stringify!(blocksPerEpoch),
13521            ::core::stringify!(transferOwnership),
13522            ::core::stringify!(getStateHistoryCount),
13523        ];
13524        /// The signatures in the same order as `SELECTORS`.
13525        pub const SIGNATURES: &'static [&'static str] = &[
13526            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
13527            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
13528            <votingStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13529            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
13530            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
13531            <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
13532            <newFinalizedState_0Call as alloy_sol_types::SolCall>::SIGNATURE,
13533            <isEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
13534            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
13535            <isGtEpochRootCall as alloy_sol_types::SolCall>::SIGNATURE,
13536            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
13537            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
13538            <epochStartBlockCall as alloy_sol_types::SolCall>::SIGNATURE,
13539            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13540            <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13541            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
13542            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
13543            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
13544            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
13545            <newFinalizedState_1Call as alloy_sol_types::SolCall>::SIGNATURE,
13546            <currentEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
13547            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
13548            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
13549            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
13550            <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
13551            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13552            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
13553            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13554            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
13555            <initializeV2Call as alloy_sol_types::SolCall>::SIGNATURE,
13556            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
13557            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
13558            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
13559            <blocksPerEpochCall as alloy_sol_types::SolCall>::SIGNATURE,
13560            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
13561            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
13562        ];
13563        /// Returns the signature for the given selector, if known.
13564        #[inline]
13565        pub fn signature_by_selector(
13566            selector: [u8; 4usize],
13567        ) -> ::core::option::Option<&'static str> {
13568            match Self::SELECTORS.binary_search(&selector) {
13569                ::core::result::Result::Ok(idx) => {
13570                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13571                }
13572                ::core::result::Result::Err(_) => ::core::option::Option::None,
13573            }
13574        }
13575        /// Returns the enum variant name for the given selector, if known.
13576        #[inline]
13577        pub fn name_by_selector(
13578            selector: [u8; 4usize],
13579        ) -> ::core::option::Option<&'static str> {
13580            let sig = Self::signature_by_selector(selector)?;
13581            sig.split_once('(').map(|(name, _)| name)
13582        }
13583    }
13584    #[automatically_derived]
13585    impl alloy_sol_types::SolInterface for LightClientV2Calls {
13586        const NAME: &'static str = "LightClientV2Calls";
13587        const MIN_DATA_LENGTH: usize = 0usize;
13588        const COUNT: usize = 36usize;
13589        #[inline]
13590        fn selector(&self) -> [u8; 4] {
13591            match self {
13592                Self::UPGRADE_INTERFACE_VERSION(_) => {
13593                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
13594                }
13595                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
13596                Self::blocksPerEpoch(_) => {
13597                    <blocksPerEpochCall as alloy_sol_types::SolCall>::SELECTOR
13598                }
13599                Self::currentBlockNumber(_) => {
13600                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13601                }
13602                Self::currentEpoch(_) => {
13603                    <currentEpochCall as alloy_sol_types::SolCall>::SELECTOR
13604                }
13605                Self::disablePermissionedProverMode(_) => {
13606                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
13607                }
13608                Self::epochFromBlockNumber(_) => {
13609                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
13610                }
13611                Self::epochStartBlock(_) => {
13612                    <epochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13613                }
13614                Self::finalizedState(_) => {
13615                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
13616                }
13617                Self::genesisStakeTableState(_) => {
13618                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13619                }
13620                Self::genesisState(_) => {
13621                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
13622                }
13623                Self::getHotShotCommitment(_) => {
13624                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
13625                }
13626                Self::getStateHistoryCount(_) => {
13627                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
13628                }
13629                Self::getVersion(_) => {
13630                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
13631                }
13632                Self::initialize(_) => {
13633                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
13634                }
13635                Self::initializeV2(_) => {
13636                    <initializeV2Call as alloy_sol_types::SolCall>::SELECTOR
13637                }
13638                Self::isEpochRoot(_) => {
13639                    <isEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13640                }
13641                Self::isGtEpochRoot(_) => {
13642                    <isGtEpochRootCall as alloy_sol_types::SolCall>::SELECTOR
13643                }
13644                Self::isPermissionedProverEnabled(_) => {
13645                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
13646                }
13647                Self::lagOverEscapeHatchThreshold(_) => {
13648                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
13649                }
13650                Self::newFinalizedState_0(_) => {
13651                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::SELECTOR
13652                }
13653                Self::newFinalizedState_1(_) => {
13654                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::SELECTOR
13655                }
13656                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
13657                Self::permissionedProver(_) => {
13658                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13659                }
13660                Self::proxiableUUID(_) => {
13661                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
13662                }
13663                Self::renounceOwnership(_) => {
13664                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13665                }
13666                Self::setPermissionedProver(_) => {
13667                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
13668                }
13669                Self::setStateHistoryRetentionPeriod(_) => {
13670                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13671                }
13672                Self::setstateHistoryRetentionPeriod(_) => {
13673                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13674                }
13675                Self::stateHistoryCommitments(_) => {
13676                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
13677                }
13678                Self::stateHistoryFirstIndex(_) => {
13679                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
13680                }
13681                Self::stateHistoryRetentionPeriod(_) => {
13682                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
13683                }
13684                Self::transferOwnership(_) => {
13685                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
13686                }
13687                Self::updateEpochStartBlock(_) => {
13688                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::SELECTOR
13689                }
13690                Self::upgradeToAndCall(_) => {
13691                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
13692                }
13693                Self::votingStakeTableState(_) => {
13694                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
13695                }
13696            }
13697        }
13698        #[inline]
13699        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13700            Self::SELECTORS.get(i).copied()
13701        }
13702        #[inline]
13703        fn valid_selector(selector: [u8; 4]) -> bool {
13704            Self::SELECTORS.binary_search(&selector).is_ok()
13705        }
13706        #[inline]
13707        #[allow(non_snake_case)]
13708        fn abi_decode_raw(
13709            selector: [u8; 4],
13710            data: &[u8],
13711        ) -> alloy_sol_types::Result<Self> {
13712            static DECODE_SHIMS: &[fn(
13713                &[u8],
13714            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
13715                {
13716                    fn setPermissionedProver(
13717                        data: &[u8],
13718                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13719                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13720                                data,
13721                            )
13722                            .map(LightClientV2Calls::setPermissionedProver)
13723                    }
13724                    setPermissionedProver
13725                },
13726                {
13727                    fn stateHistoryCommitments(
13728                        data: &[u8],
13729                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13730                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
13731                                data,
13732                            )
13733                            .map(LightClientV2Calls::stateHistoryCommitments)
13734                    }
13735                    stateHistoryCommitments
13736                },
13737                {
13738                    fn votingStakeTableState(
13739                        data: &[u8],
13740                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13741                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13742                                data,
13743                            )
13744                            .map(LightClientV2Calls::votingStakeTableState)
13745                    }
13746                    votingStakeTableState
13747                },
13748                {
13749                    fn getVersion(
13750                        data: &[u8],
13751                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13752                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
13753                                data,
13754                            )
13755                            .map(LightClientV2Calls::getVersion)
13756                    }
13757                    getVersion
13758                },
13759                {
13760                    fn _getVk(
13761                        data: &[u8],
13762                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13763                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13764                            .map(LightClientV2Calls::_getVk)
13765                    }
13766                    _getVk
13767                },
13768                {
13769                    fn updateEpochStartBlock(
13770                        data: &[u8],
13771                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13772                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13773                                data,
13774                            )
13775                            .map(LightClientV2Calls::updateEpochStartBlock)
13776                    }
13777                    updateEpochStartBlock
13778                },
13779                {
13780                    fn newFinalizedState_0(
13781                        data: &[u8],
13782                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13783                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw(
13784                                data,
13785                            )
13786                            .map(LightClientV2Calls::newFinalizedState_0)
13787                    }
13788                    newFinalizedState_0
13789                },
13790                {
13791                    fn isEpochRoot(
13792                        data: &[u8],
13793                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13794                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13795                                data,
13796                            )
13797                            .map(LightClientV2Calls::isEpochRoot)
13798                    }
13799                    isEpochRoot
13800                },
13801                {
13802                    fn stateHistoryFirstIndex(
13803                        data: &[u8],
13804                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13805                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
13806                                data,
13807                            )
13808                            .map(LightClientV2Calls::stateHistoryFirstIndex)
13809                    }
13810                    stateHistoryFirstIndex
13811                },
13812                {
13813                    fn isGtEpochRoot(
13814                        data: &[u8],
13815                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13816                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw(
13817                                data,
13818                            )
13819                            .map(LightClientV2Calls::isGtEpochRoot)
13820                    }
13821                    isGtEpochRoot
13822                },
13823                {
13824                    fn permissionedProver(
13825                        data: &[u8],
13826                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13827                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
13828                                data,
13829                            )
13830                            .map(LightClientV2Calls::permissionedProver)
13831                    }
13832                    permissionedProver
13833                },
13834                {
13835                    fn currentBlockNumber(
13836                        data: &[u8],
13837                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13838                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13839                                data,
13840                            )
13841                            .map(LightClientV2Calls::currentBlockNumber)
13842                    }
13843                    currentBlockNumber
13844                },
13845                {
13846                    fn epochStartBlock(
13847                        data: &[u8],
13848                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13849                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw(
13850                                data,
13851                            )
13852                            .map(LightClientV2Calls::epochStartBlock)
13853                    }
13854                    epochStartBlock
13855                },
13856                {
13857                    fn genesisStakeTableState(
13858                        data: &[u8],
13859                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13860                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
13861                                data,
13862                            )
13863                            .map(LightClientV2Calls::genesisStakeTableState)
13864                    }
13865                    genesisStakeTableState
13866                },
13867                {
13868                    fn setStateHistoryRetentionPeriod(
13869                        data: &[u8],
13870                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13871                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13872                                data,
13873                            )
13874                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
13875                    }
13876                    setStateHistoryRetentionPeriod
13877                },
13878                {
13879                    fn upgradeToAndCall(
13880                        data: &[u8],
13881                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13882                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
13883                                data,
13884                            )
13885                            .map(LightClientV2Calls::upgradeToAndCall)
13886                    }
13887                    upgradeToAndCall
13888                },
13889                {
13890                    fn proxiableUUID(
13891                        data: &[u8],
13892                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13893                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
13894                                data,
13895                            )
13896                            .map(LightClientV2Calls::proxiableUUID)
13897                    }
13898                    proxiableUUID
13899                },
13900                {
13901                    fn disablePermissionedProverMode(
13902                        data: &[u8],
13903                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13904                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
13905                                data,
13906                            )
13907                            .map(LightClientV2Calls::disablePermissionedProverMode)
13908                    }
13909                    disablePermissionedProverMode
13910                },
13911                {
13912                    fn renounceOwnership(
13913                        data: &[u8],
13914                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13915                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
13916                                data,
13917                            )
13918                            .map(LightClientV2Calls::renounceOwnership)
13919                    }
13920                    renounceOwnership
13921                },
13922                {
13923                    fn newFinalizedState_1(
13924                        data: &[u8],
13925                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13926                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw(
13927                                data,
13928                            )
13929                            .map(LightClientV2Calls::newFinalizedState_1)
13930                    }
13931                    newFinalizedState_1
13932                },
13933                {
13934                    fn currentEpoch(
13935                        data: &[u8],
13936                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13937                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
13938                                data,
13939                            )
13940                            .map(LightClientV2Calls::currentEpoch)
13941                    }
13942                    currentEpoch
13943                },
13944                {
13945                    fn isPermissionedProverEnabled(
13946                        data: &[u8],
13947                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13948                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
13949                                data,
13950                            )
13951                            .map(LightClientV2Calls::isPermissionedProverEnabled)
13952                    }
13953                    isPermissionedProverEnabled
13954                },
13955                {
13956                    fn getHotShotCommitment(
13957                        data: &[u8],
13958                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13959                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
13960                                data,
13961                            )
13962                            .map(LightClientV2Calls::getHotShotCommitment)
13963                    }
13964                    getHotShotCommitment
13965                },
13966                {
13967                    fn owner(
13968                        data: &[u8],
13969                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13970                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
13971                            .map(LightClientV2Calls::owner)
13972                    }
13973                    owner
13974                },
13975                {
13976                    fn epochFromBlockNumber(
13977                        data: &[u8],
13978                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13979                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
13980                                data,
13981                            )
13982                            .map(LightClientV2Calls::epochFromBlockNumber)
13983                    }
13984                    epochFromBlockNumber
13985                },
13986                {
13987                    fn setstateHistoryRetentionPeriod(
13988                        data: &[u8],
13989                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
13990                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
13991                                data,
13992                            )
13993                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
13994                    }
13995                    setstateHistoryRetentionPeriod
13996                },
13997                {
13998                    fn initialize(
13999                        data: &[u8],
14000                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14001                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
14002                                data,
14003                            )
14004                            .map(LightClientV2Calls::initialize)
14005                    }
14006                    initialize
14007                },
14008                {
14009                    fn finalizedState(
14010                        data: &[u8],
14011                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14012                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14013                                data,
14014                            )
14015                            .map(LightClientV2Calls::finalizedState)
14016                    }
14017                    finalizedState
14018                },
14019                {
14020                    fn UPGRADE_INTERFACE_VERSION(
14021                        data: &[u8],
14022                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14023                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
14024                                data,
14025                            )
14026                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
14027                    }
14028                    UPGRADE_INTERFACE_VERSION
14029                },
14030                {
14031                    fn initializeV2(
14032                        data: &[u8],
14033                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14034                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw(
14035                                data,
14036                            )
14037                            .map(LightClientV2Calls::initializeV2)
14038                    }
14039                    initializeV2
14040                },
14041                {
14042                    fn stateHistoryRetentionPeriod(
14043                        data: &[u8],
14044                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14045                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
14046                                data,
14047                            )
14048                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
14049                    }
14050                    stateHistoryRetentionPeriod
14051                },
14052                {
14053                    fn genesisState(
14054                        data: &[u8],
14055                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14056                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
14057                                data,
14058                            )
14059                            .map(LightClientV2Calls::genesisState)
14060                    }
14061                    genesisState
14062                },
14063                {
14064                    fn lagOverEscapeHatchThreshold(
14065                        data: &[u8],
14066                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14067                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
14068                                data,
14069                            )
14070                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
14071                    }
14072                    lagOverEscapeHatchThreshold
14073                },
14074                {
14075                    fn blocksPerEpoch(
14076                        data: &[u8],
14077                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14078                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw(
14079                                data,
14080                            )
14081                            .map(LightClientV2Calls::blocksPerEpoch)
14082                    }
14083                    blocksPerEpoch
14084                },
14085                {
14086                    fn transferOwnership(
14087                        data: &[u8],
14088                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14089                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
14090                                data,
14091                            )
14092                            .map(LightClientV2Calls::transferOwnership)
14093                    }
14094                    transferOwnership
14095                },
14096                {
14097                    fn getStateHistoryCount(
14098                        data: &[u8],
14099                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14100                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
14101                                data,
14102                            )
14103                            .map(LightClientV2Calls::getStateHistoryCount)
14104                    }
14105                    getStateHistoryCount
14106                },
14107            ];
14108            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14109                return Err(
14110                    alloy_sol_types::Error::unknown_selector(
14111                        <Self as alloy_sol_types::SolInterface>::NAME,
14112                        selector,
14113                    ),
14114                );
14115            };
14116            DECODE_SHIMS[idx](data)
14117        }
14118        #[inline]
14119        #[allow(non_snake_case)]
14120        fn abi_decode_raw_validate(
14121            selector: [u8; 4],
14122            data: &[u8],
14123        ) -> alloy_sol_types::Result<Self> {
14124            static DECODE_VALIDATE_SHIMS: &[fn(
14125                &[u8],
14126            ) -> alloy_sol_types::Result<LightClientV2Calls>] = &[
14127                {
14128                    fn setPermissionedProver(
14129                        data: &[u8],
14130                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14131                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14132                                data,
14133                            )
14134                            .map(LightClientV2Calls::setPermissionedProver)
14135                    }
14136                    setPermissionedProver
14137                },
14138                {
14139                    fn stateHistoryCommitments(
14140                        data: &[u8],
14141                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14142                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14143                                data,
14144                            )
14145                            .map(LightClientV2Calls::stateHistoryCommitments)
14146                    }
14147                    stateHistoryCommitments
14148                },
14149                {
14150                    fn votingStakeTableState(
14151                        data: &[u8],
14152                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14153                        <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14154                                data,
14155                            )
14156                            .map(LightClientV2Calls::votingStakeTableState)
14157                    }
14158                    votingStakeTableState
14159                },
14160                {
14161                    fn getVersion(
14162                        data: &[u8],
14163                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14164                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14165                                data,
14166                            )
14167                            .map(LightClientV2Calls::getVersion)
14168                    }
14169                    getVersion
14170                },
14171                {
14172                    fn _getVk(
14173                        data: &[u8],
14174                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14175                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14176                                data,
14177                            )
14178                            .map(LightClientV2Calls::_getVk)
14179                    }
14180                    _getVk
14181                },
14182                {
14183                    fn updateEpochStartBlock(
14184                        data: &[u8],
14185                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14186                        <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14187                                data,
14188                            )
14189                            .map(LightClientV2Calls::updateEpochStartBlock)
14190                    }
14191                    updateEpochStartBlock
14192                },
14193                {
14194                    fn newFinalizedState_0(
14195                        data: &[u8],
14196                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14197                        <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14198                                data,
14199                            )
14200                            .map(LightClientV2Calls::newFinalizedState_0)
14201                    }
14202                    newFinalizedState_0
14203                },
14204                {
14205                    fn isEpochRoot(
14206                        data: &[u8],
14207                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14208                        <isEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14209                                data,
14210                            )
14211                            .map(LightClientV2Calls::isEpochRoot)
14212                    }
14213                    isEpochRoot
14214                },
14215                {
14216                    fn stateHistoryFirstIndex(
14217                        data: &[u8],
14218                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14219                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14220                                data,
14221                            )
14222                            .map(LightClientV2Calls::stateHistoryFirstIndex)
14223                    }
14224                    stateHistoryFirstIndex
14225                },
14226                {
14227                    fn isGtEpochRoot(
14228                        data: &[u8],
14229                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14230                        <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14231                                data,
14232                            )
14233                            .map(LightClientV2Calls::isGtEpochRoot)
14234                    }
14235                    isGtEpochRoot
14236                },
14237                {
14238                    fn permissionedProver(
14239                        data: &[u8],
14240                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14241                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14242                                data,
14243                            )
14244                            .map(LightClientV2Calls::permissionedProver)
14245                    }
14246                    permissionedProver
14247                },
14248                {
14249                    fn currentBlockNumber(
14250                        data: &[u8],
14251                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14252                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14253                                data,
14254                            )
14255                            .map(LightClientV2Calls::currentBlockNumber)
14256                    }
14257                    currentBlockNumber
14258                },
14259                {
14260                    fn epochStartBlock(
14261                        data: &[u8],
14262                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14263                        <epochStartBlockCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14264                                data,
14265                            )
14266                            .map(LightClientV2Calls::epochStartBlock)
14267                    }
14268                    epochStartBlock
14269                },
14270                {
14271                    fn genesisStakeTableState(
14272                        data: &[u8],
14273                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14274                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14275                                data,
14276                            )
14277                            .map(LightClientV2Calls::genesisStakeTableState)
14278                    }
14279                    genesisStakeTableState
14280                },
14281                {
14282                    fn setStateHistoryRetentionPeriod(
14283                        data: &[u8],
14284                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14285                        <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14286                                data,
14287                            )
14288                            .map(LightClientV2Calls::setStateHistoryRetentionPeriod)
14289                    }
14290                    setStateHistoryRetentionPeriod
14291                },
14292                {
14293                    fn upgradeToAndCall(
14294                        data: &[u8],
14295                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14296                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14297                                data,
14298                            )
14299                            .map(LightClientV2Calls::upgradeToAndCall)
14300                    }
14301                    upgradeToAndCall
14302                },
14303                {
14304                    fn proxiableUUID(
14305                        data: &[u8],
14306                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14307                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14308                                data,
14309                            )
14310                            .map(LightClientV2Calls::proxiableUUID)
14311                    }
14312                    proxiableUUID
14313                },
14314                {
14315                    fn disablePermissionedProverMode(
14316                        data: &[u8],
14317                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14318                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14319                                data,
14320                            )
14321                            .map(LightClientV2Calls::disablePermissionedProverMode)
14322                    }
14323                    disablePermissionedProverMode
14324                },
14325                {
14326                    fn renounceOwnership(
14327                        data: &[u8],
14328                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14329                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14330                                data,
14331                            )
14332                            .map(LightClientV2Calls::renounceOwnership)
14333                    }
14334                    renounceOwnership
14335                },
14336                {
14337                    fn newFinalizedState_1(
14338                        data: &[u8],
14339                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14340                        <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14341                                data,
14342                            )
14343                            .map(LightClientV2Calls::newFinalizedState_1)
14344                    }
14345                    newFinalizedState_1
14346                },
14347                {
14348                    fn currentEpoch(
14349                        data: &[u8],
14350                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14351                        <currentEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14352                                data,
14353                            )
14354                            .map(LightClientV2Calls::currentEpoch)
14355                    }
14356                    currentEpoch
14357                },
14358                {
14359                    fn isPermissionedProverEnabled(
14360                        data: &[u8],
14361                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14362                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14363                                data,
14364                            )
14365                            .map(LightClientV2Calls::isPermissionedProverEnabled)
14366                    }
14367                    isPermissionedProverEnabled
14368                },
14369                {
14370                    fn getHotShotCommitment(
14371                        data: &[u8],
14372                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14373                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14374                                data,
14375                            )
14376                            .map(LightClientV2Calls::getHotShotCommitment)
14377                    }
14378                    getHotShotCommitment
14379                },
14380                {
14381                    fn owner(
14382                        data: &[u8],
14383                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14384                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14385                                data,
14386                            )
14387                            .map(LightClientV2Calls::owner)
14388                    }
14389                    owner
14390                },
14391                {
14392                    fn epochFromBlockNumber(
14393                        data: &[u8],
14394                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14395                        <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14396                                data,
14397                            )
14398                            .map(LightClientV2Calls::epochFromBlockNumber)
14399                    }
14400                    epochFromBlockNumber
14401                },
14402                {
14403                    fn setstateHistoryRetentionPeriod(
14404                        data: &[u8],
14405                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14406                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14407                                data,
14408                            )
14409                            .map(LightClientV2Calls::setstateHistoryRetentionPeriod)
14410                    }
14411                    setstateHistoryRetentionPeriod
14412                },
14413                {
14414                    fn initialize(
14415                        data: &[u8],
14416                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14417                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14418                                data,
14419                            )
14420                            .map(LightClientV2Calls::initialize)
14421                    }
14422                    initialize
14423                },
14424                {
14425                    fn finalizedState(
14426                        data: &[u8],
14427                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14428                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14429                                data,
14430                            )
14431                            .map(LightClientV2Calls::finalizedState)
14432                    }
14433                    finalizedState
14434                },
14435                {
14436                    fn UPGRADE_INTERFACE_VERSION(
14437                        data: &[u8],
14438                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14439                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14440                                data,
14441                            )
14442                            .map(LightClientV2Calls::UPGRADE_INTERFACE_VERSION)
14443                    }
14444                    UPGRADE_INTERFACE_VERSION
14445                },
14446                {
14447                    fn initializeV2(
14448                        data: &[u8],
14449                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14450                        <initializeV2Call as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14451                                data,
14452                            )
14453                            .map(LightClientV2Calls::initializeV2)
14454                    }
14455                    initializeV2
14456                },
14457                {
14458                    fn stateHistoryRetentionPeriod(
14459                        data: &[u8],
14460                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14461                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14462                                data,
14463                            )
14464                            .map(LightClientV2Calls::stateHistoryRetentionPeriod)
14465                    }
14466                    stateHistoryRetentionPeriod
14467                },
14468                {
14469                    fn genesisState(
14470                        data: &[u8],
14471                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14472                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14473                                data,
14474                            )
14475                            .map(LightClientV2Calls::genesisState)
14476                    }
14477                    genesisState
14478                },
14479                {
14480                    fn lagOverEscapeHatchThreshold(
14481                        data: &[u8],
14482                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14483                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14484                                data,
14485                            )
14486                            .map(LightClientV2Calls::lagOverEscapeHatchThreshold)
14487                    }
14488                    lagOverEscapeHatchThreshold
14489                },
14490                {
14491                    fn blocksPerEpoch(
14492                        data: &[u8],
14493                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14494                        <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14495                                data,
14496                            )
14497                            .map(LightClientV2Calls::blocksPerEpoch)
14498                    }
14499                    blocksPerEpoch
14500                },
14501                {
14502                    fn transferOwnership(
14503                        data: &[u8],
14504                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14505                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14506                                data,
14507                            )
14508                            .map(LightClientV2Calls::transferOwnership)
14509                    }
14510                    transferOwnership
14511                },
14512                {
14513                    fn getStateHistoryCount(
14514                        data: &[u8],
14515                    ) -> alloy_sol_types::Result<LightClientV2Calls> {
14516                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
14517                                data,
14518                            )
14519                            .map(LightClientV2Calls::getStateHistoryCount)
14520                    }
14521                    getStateHistoryCount
14522                },
14523            ];
14524            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
14525                return Err(
14526                    alloy_sol_types::Error::unknown_selector(
14527                        <Self as alloy_sol_types::SolInterface>::NAME,
14528                        selector,
14529                    ),
14530                );
14531            };
14532            DECODE_VALIDATE_SHIMS[idx](data)
14533        }
14534        #[inline]
14535        fn abi_encoded_size(&self) -> usize {
14536            match self {
14537                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14538                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
14539                        inner,
14540                    )
14541                }
14542                Self::_getVk(inner) => {
14543                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14544                }
14545                Self::blocksPerEpoch(inner) => {
14546                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14547                        inner,
14548                    )
14549                }
14550                Self::currentBlockNumber(inner) => {
14551                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14552                        inner,
14553                    )
14554                }
14555                Self::currentEpoch(inner) => {
14556                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encoded_size(
14557                        inner,
14558                    )
14559                }
14560                Self::disablePermissionedProverMode(inner) => {
14561                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
14562                        inner,
14563                    )
14564                }
14565                Self::epochFromBlockNumber(inner) => {
14566                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
14567                        inner,
14568                    )
14569                }
14570                Self::epochStartBlock(inner) => {
14571                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14572                        inner,
14573                    )
14574                }
14575                Self::finalizedState(inner) => {
14576                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14577                        inner,
14578                    )
14579                }
14580                Self::genesisStakeTableState(inner) => {
14581                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14582                        inner,
14583                    )
14584                }
14585                Self::genesisState(inner) => {
14586                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14587                        inner,
14588                    )
14589                }
14590                Self::getHotShotCommitment(inner) => {
14591                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
14592                        inner,
14593                    )
14594                }
14595                Self::getStateHistoryCount(inner) => {
14596                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
14597                        inner,
14598                    )
14599                }
14600                Self::getVersion(inner) => {
14601                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14602                }
14603                Self::initialize(inner) => {
14604                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14605                }
14606                Self::initializeV2(inner) => {
14607                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encoded_size(
14608                        inner,
14609                    )
14610                }
14611                Self::isEpochRoot(inner) => {
14612                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14613                        inner,
14614                    )
14615                }
14616                Self::isGtEpochRoot(inner) => {
14617                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encoded_size(
14618                        inner,
14619                    )
14620                }
14621                Self::isPermissionedProverEnabled(inner) => {
14622                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
14623                        inner,
14624                    )
14625                }
14626                Self::lagOverEscapeHatchThreshold(inner) => {
14627                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
14628                        inner,
14629                    )
14630                }
14631                Self::newFinalizedState_0(inner) => {
14632                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encoded_size(
14633                        inner,
14634                    )
14635                }
14636                Self::newFinalizedState_1(inner) => {
14637                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encoded_size(
14638                        inner,
14639                    )
14640                }
14641                Self::owner(inner) => {
14642                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
14643                }
14644                Self::permissionedProver(inner) => {
14645                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14646                        inner,
14647                    )
14648                }
14649                Self::proxiableUUID(inner) => {
14650                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
14651                        inner,
14652                    )
14653                }
14654                Self::renounceOwnership(inner) => {
14655                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14656                        inner,
14657                    )
14658                }
14659                Self::setPermissionedProver(inner) => {
14660                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
14661                        inner,
14662                    )
14663                }
14664                Self::setStateHistoryRetentionPeriod(inner) => {
14665                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14666                        inner,
14667                    )
14668                }
14669                Self::setstateHistoryRetentionPeriod(inner) => {
14670                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14671                        inner,
14672                    )
14673                }
14674                Self::stateHistoryCommitments(inner) => {
14675                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
14676                        inner,
14677                    )
14678                }
14679                Self::stateHistoryFirstIndex(inner) => {
14680                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
14681                        inner,
14682                    )
14683                }
14684                Self::stateHistoryRetentionPeriod(inner) => {
14685                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
14686                        inner,
14687                    )
14688                }
14689                Self::transferOwnership(inner) => {
14690                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
14691                        inner,
14692                    )
14693                }
14694                Self::updateEpochStartBlock(inner) => {
14695                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encoded_size(
14696                        inner,
14697                    )
14698                }
14699                Self::upgradeToAndCall(inner) => {
14700                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
14701                        inner,
14702                    )
14703                }
14704                Self::votingStakeTableState(inner) => {
14705                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
14706                        inner,
14707                    )
14708                }
14709            }
14710        }
14711        #[inline]
14712        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
14713            match self {
14714                Self::UPGRADE_INTERFACE_VERSION(inner) => {
14715                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
14716                        inner,
14717                        out,
14718                    )
14719                }
14720                Self::_getVk(inner) => {
14721                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14722                }
14723                Self::blocksPerEpoch(inner) => {
14724                    <blocksPerEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14725                        inner,
14726                        out,
14727                    )
14728                }
14729                Self::currentBlockNumber(inner) => {
14730                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14731                        inner,
14732                        out,
14733                    )
14734                }
14735                Self::currentEpoch(inner) => {
14736                    <currentEpochCall as alloy_sol_types::SolCall>::abi_encode_raw(
14737                        inner,
14738                        out,
14739                    )
14740                }
14741                Self::disablePermissionedProverMode(inner) => {
14742                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14743                        inner,
14744                        out,
14745                    )
14746                }
14747                Self::epochFromBlockNumber(inner) => {
14748                    <epochFromBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
14749                        inner,
14750                        out,
14751                    )
14752                }
14753                Self::epochStartBlock(inner) => {
14754                    <epochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14755                        inner,
14756                        out,
14757                    )
14758                }
14759                Self::finalizedState(inner) => {
14760                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14761                        inner,
14762                        out,
14763                    )
14764                }
14765                Self::genesisStakeTableState(inner) => {
14766                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14767                        inner,
14768                        out,
14769                    )
14770                }
14771                Self::genesisState(inner) => {
14772                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14773                        inner,
14774                        out,
14775                    )
14776                }
14777                Self::getHotShotCommitment(inner) => {
14778                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
14779                        inner,
14780                        out,
14781                    )
14782                }
14783                Self::getStateHistoryCount(inner) => {
14784                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
14785                        inner,
14786                        out,
14787                    )
14788                }
14789                Self::getVersion(inner) => {
14790                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
14791                        inner,
14792                        out,
14793                    )
14794                }
14795                Self::initialize(inner) => {
14796                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
14797                        inner,
14798                        out,
14799                    )
14800                }
14801                Self::initializeV2(inner) => {
14802                    <initializeV2Call as alloy_sol_types::SolCall>::abi_encode_raw(
14803                        inner,
14804                        out,
14805                    )
14806                }
14807                Self::isEpochRoot(inner) => {
14808                    <isEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14809                        inner,
14810                        out,
14811                    )
14812                }
14813                Self::isGtEpochRoot(inner) => {
14814                    <isGtEpochRootCall as alloy_sol_types::SolCall>::abi_encode_raw(
14815                        inner,
14816                        out,
14817                    )
14818                }
14819                Self::isPermissionedProverEnabled(inner) => {
14820                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
14821                        inner,
14822                        out,
14823                    )
14824                }
14825                Self::lagOverEscapeHatchThreshold(inner) => {
14826                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
14827                        inner,
14828                        out,
14829                    )
14830                }
14831                Self::newFinalizedState_0(inner) => {
14832                    <newFinalizedState_0Call as alloy_sol_types::SolCall>::abi_encode_raw(
14833                        inner,
14834                        out,
14835                    )
14836                }
14837                Self::newFinalizedState_1(inner) => {
14838                    <newFinalizedState_1Call as alloy_sol_types::SolCall>::abi_encode_raw(
14839                        inner,
14840                        out,
14841                    )
14842                }
14843                Self::owner(inner) => {
14844                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
14845                }
14846                Self::permissionedProver(inner) => {
14847                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14848                        inner,
14849                        out,
14850                    )
14851                }
14852                Self::proxiableUUID(inner) => {
14853                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
14854                        inner,
14855                        out,
14856                    )
14857                }
14858                Self::renounceOwnership(inner) => {
14859                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14860                        inner,
14861                        out,
14862                    )
14863                }
14864                Self::setPermissionedProver(inner) => {
14865                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
14866                        inner,
14867                        out,
14868                    )
14869                }
14870                Self::setStateHistoryRetentionPeriod(inner) => {
14871                    <setStateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14872                        inner,
14873                        out,
14874                    )
14875                }
14876                Self::setstateHistoryRetentionPeriod(inner) => {
14877                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14878                        inner,
14879                        out,
14880                    )
14881                }
14882                Self::stateHistoryCommitments(inner) => {
14883                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
14884                        inner,
14885                        out,
14886                    )
14887                }
14888                Self::stateHistoryFirstIndex(inner) => {
14889                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
14890                        inner,
14891                        out,
14892                    )
14893                }
14894                Self::stateHistoryRetentionPeriod(inner) => {
14895                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
14896                        inner,
14897                        out,
14898                    )
14899                }
14900                Self::transferOwnership(inner) => {
14901                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
14902                        inner,
14903                        out,
14904                    )
14905                }
14906                Self::updateEpochStartBlock(inner) => {
14907                    <updateEpochStartBlockCall as alloy_sol_types::SolCall>::abi_encode_raw(
14908                        inner,
14909                        out,
14910                    )
14911                }
14912                Self::upgradeToAndCall(inner) => {
14913                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
14914                        inner,
14915                        out,
14916                    )
14917                }
14918                Self::votingStakeTableState(inner) => {
14919                    <votingStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
14920                        inner,
14921                        out,
14922                    )
14923                }
14924            }
14925        }
14926    }
14927    ///Container for all the [`LightClientV2`](self) custom errors.
14928    #[derive(Clone)]
14929    #[derive(serde::Serialize, serde::Deserialize)]
14930    #[derive(Debug, PartialEq, Eq, Hash)]
14931    pub enum LightClientV2Errors {
14932        #[allow(missing_docs)]
14933        AddressEmptyCode(AddressEmptyCode),
14934        #[allow(missing_docs)]
14935        DeprecatedApi(DeprecatedApi),
14936        #[allow(missing_docs)]
14937        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
14938        #[allow(missing_docs)]
14939        ERC1967NonPayable(ERC1967NonPayable),
14940        #[allow(missing_docs)]
14941        FailedInnerCall(FailedInnerCall),
14942        #[allow(missing_docs)]
14943        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
14944        #[allow(missing_docs)]
14945        InvalidAddress(InvalidAddress),
14946        #[allow(missing_docs)]
14947        InvalidArgs(InvalidArgs),
14948        #[allow(missing_docs)]
14949        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
14950        #[allow(missing_docs)]
14951        InvalidInitialization(InvalidInitialization),
14952        #[allow(missing_docs)]
14953        InvalidMaxStateHistory(InvalidMaxStateHistory),
14954        #[allow(missing_docs)]
14955        InvalidProof(InvalidProof),
14956        #[allow(missing_docs)]
14957        InvalidScalar(InvalidScalar),
14958        #[allow(missing_docs)]
14959        MissingEpochRootUpdate(MissingEpochRootUpdate),
14960        #[allow(missing_docs)]
14961        NoChangeRequired(NoChangeRequired),
14962        #[allow(missing_docs)]
14963        NotInitializing(NotInitializing),
14964        #[allow(missing_docs)]
14965        OutdatedState(OutdatedState),
14966        #[allow(missing_docs)]
14967        OwnableInvalidOwner(OwnableInvalidOwner),
14968        #[allow(missing_docs)]
14969        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
14970        #[allow(missing_docs)]
14971        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
14972        #[allow(missing_docs)]
14973        ProverNotPermissioned(ProverNotPermissioned),
14974        #[allow(missing_docs)]
14975        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
14976        #[allow(missing_docs)]
14977        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
14978        #[allow(missing_docs)]
14979        WrongStakeTableUsed(WrongStakeTableUsed),
14980    }
14981    impl LightClientV2Errors {
14982        /// All the selectors of this enum.
14983        ///
14984        /// Note that the selectors might not be in the same order as the variants.
14985        /// No guarantees are made about the order of the selectors.
14986        ///
14987        /// Prefer using `SolInterface` methods instead.
14988        pub const SELECTORS: &'static [[u8; 4usize]] = &[
14989            [5u8, 28u8, 70u8, 239u8],
14990            [5u8, 176u8, 92u8, 204u8],
14991            [8u8, 10u8, 232u8, 217u8],
14992            [9u8, 189u8, 227u8, 57u8],
14993            [17u8, 140u8, 218u8, 167u8],
14994            [20u8, 37u8, 234u8, 66u8],
14995            [30u8, 79u8, 189u8, 247u8],
14996            [47u8, 171u8, 146u8, 202u8],
14997            [76u8, 156u8, 140u8, 227u8],
14998            [78u8, 64u8, 92u8, 141u8],
14999            [81u8, 97u8, 128u8, 137u8],
15000            [97u8, 90u8, 146u8, 100u8],
15001            [153u8, 150u8, 179u8, 21u8],
15002            [161u8, 186u8, 7u8, 238u8],
15003            [163u8, 166u8, 71u8, 128u8],
15004            [168u8, 99u8, 174u8, 201u8],
15005            [170u8, 29u8, 73u8, 164u8],
15006            [176u8, 180u8, 56u8, 119u8],
15007            [179u8, 152u8, 151u8, 159u8],
15008            [215u8, 230u8, 188u8, 248u8],
15009            [224u8, 124u8, 141u8, 186u8],
15010            [230u8, 196u8, 36u8, 123u8],
15011            [244u8, 160u8, 238u8, 224u8],
15012            [249u8, 46u8, 232u8, 169u8],
15013        ];
15014        /// The names of the variants in the same order as `SELECTORS`.
15015        pub const VARIANT_NAMES: &'static [&'static str] = &[
15016            ::core::stringify!(OutdatedState),
15017            ::core::stringify!(InvalidScalar),
15018            ::core::stringify!(MissingEpochRootUpdate),
15019            ::core::stringify!(InvalidProof),
15020            ::core::stringify!(OwnableUnauthorizedAccount),
15021            ::core::stringify!(FailedInnerCall),
15022            ::core::stringify!(OwnableInvalidOwner),
15023            ::core::stringify!(OwnershipCannotBeRenounced),
15024            ::core::stringify!(ERC1967InvalidImplementation),
15025            ::core::stringify!(DeprecatedApi),
15026            ::core::stringify!(WrongStakeTableUsed),
15027            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
15028            ::core::stringify!(AddressEmptyCode),
15029            ::core::stringify!(InvalidArgs),
15030            ::core::stringify!(ProverNotPermissioned),
15031            ::core::stringify!(NoChangeRequired),
15032            ::core::stringify!(UUPSUnsupportedProxiableUUID),
15033            ::core::stringify!(InsufficientSnapshotHistory),
15034            ::core::stringify!(ERC1967NonPayable),
15035            ::core::stringify!(NotInitializing),
15036            ::core::stringify!(UUPSUnauthorizedCallContext),
15037            ::core::stringify!(InvalidAddress),
15038            ::core::stringify!(InvalidMaxStateHistory),
15039            ::core::stringify!(InvalidInitialization),
15040        ];
15041        /// The signatures in the same order as `SELECTORS`.
15042        pub const SIGNATURES: &'static [&'static str] = &[
15043            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
15044            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
15045            <MissingEpochRootUpdate as alloy_sol_types::SolError>::SIGNATURE,
15046            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
15047            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
15048            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
15049            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
15050            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
15051            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
15052            <DeprecatedApi as alloy_sol_types::SolError>::SIGNATURE,
15053            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
15054            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
15055            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
15056            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
15057            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
15058            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
15059            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
15060            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
15061            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
15062            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
15063            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
15064            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
15065            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
15066            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
15067        ];
15068        /// Returns the signature for the given selector, if known.
15069        #[inline]
15070        pub fn signature_by_selector(
15071            selector: [u8; 4usize],
15072        ) -> ::core::option::Option<&'static str> {
15073            match Self::SELECTORS.binary_search(&selector) {
15074                ::core::result::Result::Ok(idx) => {
15075                    ::core::option::Option::Some(Self::SIGNATURES[idx])
15076                }
15077                ::core::result::Result::Err(_) => ::core::option::Option::None,
15078            }
15079        }
15080        /// Returns the enum variant name for the given selector, if known.
15081        #[inline]
15082        pub fn name_by_selector(
15083            selector: [u8; 4usize],
15084        ) -> ::core::option::Option<&'static str> {
15085            let sig = Self::signature_by_selector(selector)?;
15086            sig.split_once('(').map(|(name, _)| name)
15087        }
15088    }
15089    #[automatically_derived]
15090    impl alloy_sol_types::SolInterface for LightClientV2Errors {
15091        const NAME: &'static str = "LightClientV2Errors";
15092        const MIN_DATA_LENGTH: usize = 0usize;
15093        const COUNT: usize = 24usize;
15094        #[inline]
15095        fn selector(&self) -> [u8; 4] {
15096            match self {
15097                Self::AddressEmptyCode(_) => {
15098                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
15099                }
15100                Self::DeprecatedApi(_) => {
15101                    <DeprecatedApi as alloy_sol_types::SolError>::SELECTOR
15102                }
15103                Self::ERC1967InvalidImplementation(_) => {
15104                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
15105                }
15106                Self::ERC1967NonPayable(_) => {
15107                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
15108                }
15109                Self::FailedInnerCall(_) => {
15110                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
15111                }
15112                Self::InsufficientSnapshotHistory(_) => {
15113                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
15114                }
15115                Self::InvalidAddress(_) => {
15116                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
15117                }
15118                Self::InvalidArgs(_) => {
15119                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
15120                }
15121                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
15122                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
15123                }
15124                Self::InvalidInitialization(_) => {
15125                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
15126                }
15127                Self::InvalidMaxStateHistory(_) => {
15128                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
15129                }
15130                Self::InvalidProof(_) => {
15131                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
15132                }
15133                Self::InvalidScalar(_) => {
15134                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
15135                }
15136                Self::MissingEpochRootUpdate(_) => {
15137                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::SELECTOR
15138                }
15139                Self::NoChangeRequired(_) => {
15140                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
15141                }
15142                Self::NotInitializing(_) => {
15143                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
15144                }
15145                Self::OutdatedState(_) => {
15146                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
15147                }
15148                Self::OwnableInvalidOwner(_) => {
15149                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
15150                }
15151                Self::OwnableUnauthorizedAccount(_) => {
15152                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
15153                }
15154                Self::OwnershipCannotBeRenounced(_) => {
15155                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
15156                }
15157                Self::ProverNotPermissioned(_) => {
15158                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
15159                }
15160                Self::UUPSUnauthorizedCallContext(_) => {
15161                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
15162                }
15163                Self::UUPSUnsupportedProxiableUUID(_) => {
15164                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
15165                }
15166                Self::WrongStakeTableUsed(_) => {
15167                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
15168                }
15169            }
15170        }
15171        #[inline]
15172        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
15173            Self::SELECTORS.get(i).copied()
15174        }
15175        #[inline]
15176        fn valid_selector(selector: [u8; 4]) -> bool {
15177            Self::SELECTORS.binary_search(&selector).is_ok()
15178        }
15179        #[inline]
15180        #[allow(non_snake_case)]
15181        fn abi_decode_raw(
15182            selector: [u8; 4],
15183            data: &[u8],
15184        ) -> alloy_sol_types::Result<Self> {
15185            static DECODE_SHIMS: &[fn(
15186                &[u8],
15187            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
15188                {
15189                    fn OutdatedState(
15190                        data: &[u8],
15191                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15192                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
15193                                data,
15194                            )
15195                            .map(LightClientV2Errors::OutdatedState)
15196                    }
15197                    OutdatedState
15198                },
15199                {
15200                    fn InvalidScalar(
15201                        data: &[u8],
15202                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15203                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
15204                                data,
15205                            )
15206                            .map(LightClientV2Errors::InvalidScalar)
15207                    }
15208                    InvalidScalar
15209                },
15210                {
15211                    fn MissingEpochRootUpdate(
15212                        data: &[u8],
15213                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15214                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw(
15215                                data,
15216                            )
15217                            .map(LightClientV2Errors::MissingEpochRootUpdate)
15218                    }
15219                    MissingEpochRootUpdate
15220                },
15221                {
15222                    fn InvalidProof(
15223                        data: &[u8],
15224                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15225                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
15226                            .map(LightClientV2Errors::InvalidProof)
15227                    }
15228                    InvalidProof
15229                },
15230                {
15231                    fn OwnableUnauthorizedAccount(
15232                        data: &[u8],
15233                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15234                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
15235                                data,
15236                            )
15237                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
15238                    }
15239                    OwnableUnauthorizedAccount
15240                },
15241                {
15242                    fn FailedInnerCall(
15243                        data: &[u8],
15244                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15245                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
15246                                data,
15247                            )
15248                            .map(LightClientV2Errors::FailedInnerCall)
15249                    }
15250                    FailedInnerCall
15251                },
15252                {
15253                    fn OwnableInvalidOwner(
15254                        data: &[u8],
15255                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15256                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
15257                                data,
15258                            )
15259                            .map(LightClientV2Errors::OwnableInvalidOwner)
15260                    }
15261                    OwnableInvalidOwner
15262                },
15263                {
15264                    fn OwnershipCannotBeRenounced(
15265                        data: &[u8],
15266                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15267                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
15268                                data,
15269                            )
15270                            .map(LightClientV2Errors::OwnershipCannotBeRenounced)
15271                    }
15272                    OwnershipCannotBeRenounced
15273                },
15274                {
15275                    fn ERC1967InvalidImplementation(
15276                        data: &[u8],
15277                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15278                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
15279                                data,
15280                            )
15281                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15282                    }
15283                    ERC1967InvalidImplementation
15284                },
15285                {
15286                    fn DeprecatedApi(
15287                        data: &[u8],
15288                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15289                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw(
15290                                data,
15291                            )
15292                            .map(LightClientV2Errors::DeprecatedApi)
15293                    }
15294                    DeprecatedApi
15295                },
15296                {
15297                    fn WrongStakeTableUsed(
15298                        data: &[u8],
15299                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15300                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
15301                                data,
15302                            )
15303                            .map(LightClientV2Errors::WrongStakeTableUsed)
15304                    }
15305                    WrongStakeTableUsed
15306                },
15307                {
15308                    fn InvalidHotShotBlockForCommitmentCheck(
15309                        data: &[u8],
15310                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15311                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
15312                                data,
15313                            )
15314                            .map(
15315                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15316                            )
15317                    }
15318                    InvalidHotShotBlockForCommitmentCheck
15319                },
15320                {
15321                    fn AddressEmptyCode(
15322                        data: &[u8],
15323                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15324                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
15325                                data,
15326                            )
15327                            .map(LightClientV2Errors::AddressEmptyCode)
15328                    }
15329                    AddressEmptyCode
15330                },
15331                {
15332                    fn InvalidArgs(
15333                        data: &[u8],
15334                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15335                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
15336                            .map(LightClientV2Errors::InvalidArgs)
15337                    }
15338                    InvalidArgs
15339                },
15340                {
15341                    fn ProverNotPermissioned(
15342                        data: &[u8],
15343                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15344                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
15345                                data,
15346                            )
15347                            .map(LightClientV2Errors::ProverNotPermissioned)
15348                    }
15349                    ProverNotPermissioned
15350                },
15351                {
15352                    fn NoChangeRequired(
15353                        data: &[u8],
15354                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15355                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
15356                                data,
15357                            )
15358                            .map(LightClientV2Errors::NoChangeRequired)
15359                    }
15360                    NoChangeRequired
15361                },
15362                {
15363                    fn UUPSUnsupportedProxiableUUID(
15364                        data: &[u8],
15365                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15366                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
15367                                data,
15368                            )
15369                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15370                    }
15371                    UUPSUnsupportedProxiableUUID
15372                },
15373                {
15374                    fn InsufficientSnapshotHistory(
15375                        data: &[u8],
15376                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15377                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
15378                                data,
15379                            )
15380                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15381                    }
15382                    InsufficientSnapshotHistory
15383                },
15384                {
15385                    fn ERC1967NonPayable(
15386                        data: &[u8],
15387                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15388                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
15389                                data,
15390                            )
15391                            .map(LightClientV2Errors::ERC1967NonPayable)
15392                    }
15393                    ERC1967NonPayable
15394                },
15395                {
15396                    fn NotInitializing(
15397                        data: &[u8],
15398                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15399                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
15400                                data,
15401                            )
15402                            .map(LightClientV2Errors::NotInitializing)
15403                    }
15404                    NotInitializing
15405                },
15406                {
15407                    fn UUPSUnauthorizedCallContext(
15408                        data: &[u8],
15409                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15410                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
15411                                data,
15412                            )
15413                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15414                    }
15415                    UUPSUnauthorizedCallContext
15416                },
15417                {
15418                    fn InvalidAddress(
15419                        data: &[u8],
15420                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15421                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
15422                                data,
15423                            )
15424                            .map(LightClientV2Errors::InvalidAddress)
15425                    }
15426                    InvalidAddress
15427                },
15428                {
15429                    fn InvalidMaxStateHistory(
15430                        data: &[u8],
15431                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15432                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
15433                                data,
15434                            )
15435                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15436                    }
15437                    InvalidMaxStateHistory
15438                },
15439                {
15440                    fn InvalidInitialization(
15441                        data: &[u8],
15442                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15443                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
15444                                data,
15445                            )
15446                            .map(LightClientV2Errors::InvalidInitialization)
15447                    }
15448                    InvalidInitialization
15449                },
15450            ];
15451            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15452                return Err(
15453                    alloy_sol_types::Error::unknown_selector(
15454                        <Self as alloy_sol_types::SolInterface>::NAME,
15455                        selector,
15456                    ),
15457                );
15458            };
15459            DECODE_SHIMS[idx](data)
15460        }
15461        #[inline]
15462        #[allow(non_snake_case)]
15463        fn abi_decode_raw_validate(
15464            selector: [u8; 4],
15465            data: &[u8],
15466        ) -> alloy_sol_types::Result<Self> {
15467            static DECODE_VALIDATE_SHIMS: &[fn(
15468                &[u8],
15469            ) -> alloy_sol_types::Result<LightClientV2Errors>] = &[
15470                {
15471                    fn OutdatedState(
15472                        data: &[u8],
15473                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15474                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
15475                                data,
15476                            )
15477                            .map(LightClientV2Errors::OutdatedState)
15478                    }
15479                    OutdatedState
15480                },
15481                {
15482                    fn InvalidScalar(
15483                        data: &[u8],
15484                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15485                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
15486                                data,
15487                            )
15488                            .map(LightClientV2Errors::InvalidScalar)
15489                    }
15490                    InvalidScalar
15491                },
15492                {
15493                    fn MissingEpochRootUpdate(
15494                        data: &[u8],
15495                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15496                        <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_decode_raw_validate(
15497                                data,
15498                            )
15499                            .map(LightClientV2Errors::MissingEpochRootUpdate)
15500                    }
15501                    MissingEpochRootUpdate
15502                },
15503                {
15504                    fn InvalidProof(
15505                        data: &[u8],
15506                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15507                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
15508                                data,
15509                            )
15510                            .map(LightClientV2Errors::InvalidProof)
15511                    }
15512                    InvalidProof
15513                },
15514                {
15515                    fn OwnableUnauthorizedAccount(
15516                        data: &[u8],
15517                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15518                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
15519                                data,
15520                            )
15521                            .map(LightClientV2Errors::OwnableUnauthorizedAccount)
15522                    }
15523                    OwnableUnauthorizedAccount
15524                },
15525                {
15526                    fn FailedInnerCall(
15527                        data: &[u8],
15528                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15529                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
15530                                data,
15531                            )
15532                            .map(LightClientV2Errors::FailedInnerCall)
15533                    }
15534                    FailedInnerCall
15535                },
15536                {
15537                    fn OwnableInvalidOwner(
15538                        data: &[u8],
15539                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15540                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
15541                                data,
15542                            )
15543                            .map(LightClientV2Errors::OwnableInvalidOwner)
15544                    }
15545                    OwnableInvalidOwner
15546                },
15547                {
15548                    fn OwnershipCannotBeRenounced(
15549                        data: &[u8],
15550                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15551                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
15552                                data,
15553                            )
15554                            .map(LightClientV2Errors::OwnershipCannotBeRenounced)
15555                    }
15556                    OwnershipCannotBeRenounced
15557                },
15558                {
15559                    fn ERC1967InvalidImplementation(
15560                        data: &[u8],
15561                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15562                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
15563                                data,
15564                            )
15565                            .map(LightClientV2Errors::ERC1967InvalidImplementation)
15566                    }
15567                    ERC1967InvalidImplementation
15568                },
15569                {
15570                    fn DeprecatedApi(
15571                        data: &[u8],
15572                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15573                        <DeprecatedApi as alloy_sol_types::SolError>::abi_decode_raw_validate(
15574                                data,
15575                            )
15576                            .map(LightClientV2Errors::DeprecatedApi)
15577                    }
15578                    DeprecatedApi
15579                },
15580                {
15581                    fn WrongStakeTableUsed(
15582                        data: &[u8],
15583                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15584                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
15585                                data,
15586                            )
15587                            .map(LightClientV2Errors::WrongStakeTableUsed)
15588                    }
15589                    WrongStakeTableUsed
15590                },
15591                {
15592                    fn InvalidHotShotBlockForCommitmentCheck(
15593                        data: &[u8],
15594                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15595                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
15596                                data,
15597                            )
15598                            .map(
15599                                LightClientV2Errors::InvalidHotShotBlockForCommitmentCheck,
15600                            )
15601                    }
15602                    InvalidHotShotBlockForCommitmentCheck
15603                },
15604                {
15605                    fn AddressEmptyCode(
15606                        data: &[u8],
15607                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15608                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
15609                                data,
15610                            )
15611                            .map(LightClientV2Errors::AddressEmptyCode)
15612                    }
15613                    AddressEmptyCode
15614                },
15615                {
15616                    fn InvalidArgs(
15617                        data: &[u8],
15618                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15619                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
15620                                data,
15621                            )
15622                            .map(LightClientV2Errors::InvalidArgs)
15623                    }
15624                    InvalidArgs
15625                },
15626                {
15627                    fn ProverNotPermissioned(
15628                        data: &[u8],
15629                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15630                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
15631                                data,
15632                            )
15633                            .map(LightClientV2Errors::ProverNotPermissioned)
15634                    }
15635                    ProverNotPermissioned
15636                },
15637                {
15638                    fn NoChangeRequired(
15639                        data: &[u8],
15640                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15641                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
15642                                data,
15643                            )
15644                            .map(LightClientV2Errors::NoChangeRequired)
15645                    }
15646                    NoChangeRequired
15647                },
15648                {
15649                    fn UUPSUnsupportedProxiableUUID(
15650                        data: &[u8],
15651                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15652                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
15653                                data,
15654                            )
15655                            .map(LightClientV2Errors::UUPSUnsupportedProxiableUUID)
15656                    }
15657                    UUPSUnsupportedProxiableUUID
15658                },
15659                {
15660                    fn InsufficientSnapshotHistory(
15661                        data: &[u8],
15662                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15663                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15664                                data,
15665                            )
15666                            .map(LightClientV2Errors::InsufficientSnapshotHistory)
15667                    }
15668                    InsufficientSnapshotHistory
15669                },
15670                {
15671                    fn ERC1967NonPayable(
15672                        data: &[u8],
15673                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15674                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
15675                                data,
15676                            )
15677                            .map(LightClientV2Errors::ERC1967NonPayable)
15678                    }
15679                    ERC1967NonPayable
15680                },
15681                {
15682                    fn NotInitializing(
15683                        data: &[u8],
15684                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15685                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
15686                                data,
15687                            )
15688                            .map(LightClientV2Errors::NotInitializing)
15689                    }
15690                    NotInitializing
15691                },
15692                {
15693                    fn UUPSUnauthorizedCallContext(
15694                        data: &[u8],
15695                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15696                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
15697                                data,
15698                            )
15699                            .map(LightClientV2Errors::UUPSUnauthorizedCallContext)
15700                    }
15701                    UUPSUnauthorizedCallContext
15702                },
15703                {
15704                    fn InvalidAddress(
15705                        data: &[u8],
15706                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15707                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
15708                                data,
15709                            )
15710                            .map(LightClientV2Errors::InvalidAddress)
15711                    }
15712                    InvalidAddress
15713                },
15714                {
15715                    fn InvalidMaxStateHistory(
15716                        data: &[u8],
15717                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15718                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
15719                                data,
15720                            )
15721                            .map(LightClientV2Errors::InvalidMaxStateHistory)
15722                    }
15723                    InvalidMaxStateHistory
15724                },
15725                {
15726                    fn InvalidInitialization(
15727                        data: &[u8],
15728                    ) -> alloy_sol_types::Result<LightClientV2Errors> {
15729                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
15730                                data,
15731                            )
15732                            .map(LightClientV2Errors::InvalidInitialization)
15733                    }
15734                    InvalidInitialization
15735                },
15736            ];
15737            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
15738                return Err(
15739                    alloy_sol_types::Error::unknown_selector(
15740                        <Self as alloy_sol_types::SolInterface>::NAME,
15741                        selector,
15742                    ),
15743                );
15744            };
15745            DECODE_VALIDATE_SHIMS[idx](data)
15746        }
15747        #[inline]
15748        fn abi_encoded_size(&self) -> usize {
15749            match self {
15750                Self::AddressEmptyCode(inner) => {
15751                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
15752                        inner,
15753                    )
15754                }
15755                Self::DeprecatedApi(inner) => {
15756                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encoded_size(inner)
15757                }
15758                Self::ERC1967InvalidImplementation(inner) => {
15759                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
15760                        inner,
15761                    )
15762                }
15763                Self::ERC1967NonPayable(inner) => {
15764                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
15765                        inner,
15766                    )
15767                }
15768                Self::FailedInnerCall(inner) => {
15769                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
15770                        inner,
15771                    )
15772                }
15773                Self::InsufficientSnapshotHistory(inner) => {
15774                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
15775                        inner,
15776                    )
15777                }
15778                Self::InvalidAddress(inner) => {
15779                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
15780                        inner,
15781                    )
15782                }
15783                Self::InvalidArgs(inner) => {
15784                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
15785                }
15786                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15787                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
15788                        inner,
15789                    )
15790                }
15791                Self::InvalidInitialization(inner) => {
15792                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
15793                        inner,
15794                    )
15795                }
15796                Self::InvalidMaxStateHistory(inner) => {
15797                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
15798                        inner,
15799                    )
15800                }
15801                Self::InvalidProof(inner) => {
15802                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
15803                }
15804                Self::InvalidScalar(inner) => {
15805                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
15806                }
15807                Self::MissingEpochRootUpdate(inner) => {
15808                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encoded_size(
15809                        inner,
15810                    )
15811                }
15812                Self::NoChangeRequired(inner) => {
15813                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
15814                        inner,
15815                    )
15816                }
15817                Self::NotInitializing(inner) => {
15818                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
15819                        inner,
15820                    )
15821                }
15822                Self::OutdatedState(inner) => {
15823                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
15824                }
15825                Self::OwnableInvalidOwner(inner) => {
15826                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
15827                        inner,
15828                    )
15829                }
15830                Self::OwnableUnauthorizedAccount(inner) => {
15831                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
15832                        inner,
15833                    )
15834                }
15835                Self::OwnershipCannotBeRenounced(inner) => {
15836                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
15837                        inner,
15838                    )
15839                }
15840                Self::ProverNotPermissioned(inner) => {
15841                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
15842                        inner,
15843                    )
15844                }
15845                Self::UUPSUnauthorizedCallContext(inner) => {
15846                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
15847                        inner,
15848                    )
15849                }
15850                Self::UUPSUnsupportedProxiableUUID(inner) => {
15851                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
15852                        inner,
15853                    )
15854                }
15855                Self::WrongStakeTableUsed(inner) => {
15856                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
15857                        inner,
15858                    )
15859                }
15860            }
15861        }
15862        #[inline]
15863        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
15864            match self {
15865                Self::AddressEmptyCode(inner) => {
15866                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
15867                        inner,
15868                        out,
15869                    )
15870                }
15871                Self::DeprecatedApi(inner) => {
15872                    <DeprecatedApi as alloy_sol_types::SolError>::abi_encode_raw(
15873                        inner,
15874                        out,
15875                    )
15876                }
15877                Self::ERC1967InvalidImplementation(inner) => {
15878                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
15879                        inner,
15880                        out,
15881                    )
15882                }
15883                Self::ERC1967NonPayable(inner) => {
15884                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
15885                        inner,
15886                        out,
15887                    )
15888                }
15889                Self::FailedInnerCall(inner) => {
15890                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
15891                        inner,
15892                        out,
15893                    )
15894                }
15895                Self::InsufficientSnapshotHistory(inner) => {
15896                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
15897                        inner,
15898                        out,
15899                    )
15900                }
15901                Self::InvalidAddress(inner) => {
15902                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
15903                        inner,
15904                        out,
15905                    )
15906                }
15907                Self::InvalidArgs(inner) => {
15908                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
15909                        inner,
15910                        out,
15911                    )
15912                }
15913                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
15914                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
15915                        inner,
15916                        out,
15917                    )
15918                }
15919                Self::InvalidInitialization(inner) => {
15920                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
15921                        inner,
15922                        out,
15923                    )
15924                }
15925                Self::InvalidMaxStateHistory(inner) => {
15926                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
15927                        inner,
15928                        out,
15929                    )
15930                }
15931                Self::InvalidProof(inner) => {
15932                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
15933                        inner,
15934                        out,
15935                    )
15936                }
15937                Self::InvalidScalar(inner) => {
15938                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
15939                        inner,
15940                        out,
15941                    )
15942                }
15943                Self::MissingEpochRootUpdate(inner) => {
15944                    <MissingEpochRootUpdate as alloy_sol_types::SolError>::abi_encode_raw(
15945                        inner,
15946                        out,
15947                    )
15948                }
15949                Self::NoChangeRequired(inner) => {
15950                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
15951                        inner,
15952                        out,
15953                    )
15954                }
15955                Self::NotInitializing(inner) => {
15956                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
15957                        inner,
15958                        out,
15959                    )
15960                }
15961                Self::OutdatedState(inner) => {
15962                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
15963                        inner,
15964                        out,
15965                    )
15966                }
15967                Self::OwnableInvalidOwner(inner) => {
15968                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
15969                        inner,
15970                        out,
15971                    )
15972                }
15973                Self::OwnableUnauthorizedAccount(inner) => {
15974                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
15975                        inner,
15976                        out,
15977                    )
15978                }
15979                Self::OwnershipCannotBeRenounced(inner) => {
15980                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
15981                        inner,
15982                        out,
15983                    )
15984                }
15985                Self::ProverNotPermissioned(inner) => {
15986                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
15987                        inner,
15988                        out,
15989                    )
15990                }
15991                Self::UUPSUnauthorizedCallContext(inner) => {
15992                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
15993                        inner,
15994                        out,
15995                    )
15996                }
15997                Self::UUPSUnsupportedProxiableUUID(inner) => {
15998                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
15999                        inner,
16000                        out,
16001                    )
16002                }
16003                Self::WrongStakeTableUsed(inner) => {
16004                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
16005                        inner,
16006                        out,
16007                    )
16008                }
16009            }
16010        }
16011    }
16012    ///Container for all the [`LightClientV2`](self) events.
16013    #[derive(Clone)]
16014    #[derive(serde::Serialize, serde::Deserialize)]
16015    #[derive(Debug, PartialEq, Eq, Hash)]
16016    pub enum LightClientV2Events {
16017        #[allow(missing_docs)]
16018        Initialized(Initialized),
16019        #[allow(missing_docs)]
16020        NewEpoch(NewEpoch),
16021        #[allow(missing_docs)]
16022        NewState(NewState),
16023        #[allow(missing_docs)]
16024        OwnershipTransferred(OwnershipTransferred),
16025        #[allow(missing_docs)]
16026        PermissionedProverNotRequired(PermissionedProverNotRequired),
16027        #[allow(missing_docs)]
16028        PermissionedProverRequired(PermissionedProverRequired),
16029        #[allow(missing_docs)]
16030        Upgrade(Upgrade),
16031        #[allow(missing_docs)]
16032        Upgraded(Upgraded),
16033    }
16034    impl LightClientV2Events {
16035        /// All the selectors of this enum.
16036        ///
16037        /// Note that the selectors might not be in the same order as the variants.
16038        /// No guarantees are made about the order of the selectors.
16039        ///
16040        /// Prefer using `SolInterface` methods instead.
16041        pub const SELECTORS: &'static [[u8; 32usize]] = &[
16042            [
16043                49u8, 234u8, 189u8, 144u8, 153u8, 253u8, 178u8, 93u8, 172u8, 221u8,
16044                210u8, 6u8, 171u8, 255u8, 135u8, 49u8, 30u8, 85u8, 52u8, 65u8, 252u8,
16045                157u8, 15u8, 205u8, 239u8, 32u8, 16u8, 98u8, 215u8, 231u8, 7u8, 27u8,
16046            ],
16047            [
16048                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
16049                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
16050                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
16051            ],
16052            [
16053                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
16054                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
16055                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
16056            ],
16057            [
16058                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
16059                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
16060                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
16061            ],
16062            [
16063                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
16064                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
16065                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
16066            ],
16067            [
16068                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
16069                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
16070                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
16071            ],
16072            [
16073                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
16074                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
16075                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
16076            ],
16077            [
16078                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
16079                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
16080                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
16081            ],
16082        ];
16083        /// The names of the variants in the same order as `SELECTORS`.
16084        pub const VARIANT_NAMES: &'static [&'static str] = &[
16085            ::core::stringify!(NewEpoch),
16086            ::core::stringify!(PermissionedProverRequired),
16087            ::core::stringify!(OwnershipTransferred),
16088            ::core::stringify!(PermissionedProverNotRequired),
16089            ::core::stringify!(NewState),
16090            ::core::stringify!(Upgraded),
16091            ::core::stringify!(Initialized),
16092            ::core::stringify!(Upgrade),
16093        ];
16094        /// The signatures in the same order as `SELECTORS`.
16095        pub const SIGNATURES: &'static [&'static str] = &[
16096            <NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE,
16097            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16098            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
16099            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
16100            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
16101            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
16102            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
16103            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
16104        ];
16105        /// Returns the signature for the given selector, if known.
16106        #[inline]
16107        pub fn signature_by_selector(
16108            selector: [u8; 32usize],
16109        ) -> ::core::option::Option<&'static str> {
16110            match Self::SELECTORS.binary_search(&selector) {
16111                ::core::result::Result::Ok(idx) => {
16112                    ::core::option::Option::Some(Self::SIGNATURES[idx])
16113                }
16114                ::core::result::Result::Err(_) => ::core::option::Option::None,
16115            }
16116        }
16117        /// Returns the enum variant name for the given selector, if known.
16118        #[inline]
16119        pub fn name_by_selector(
16120            selector: [u8; 32usize],
16121        ) -> ::core::option::Option<&'static str> {
16122            let sig = Self::signature_by_selector(selector)?;
16123            sig.split_once('(').map(|(name, _)| name)
16124        }
16125    }
16126    #[automatically_derived]
16127    impl alloy_sol_types::SolEventInterface for LightClientV2Events {
16128        const NAME: &'static str = "LightClientV2Events";
16129        const COUNT: usize = 8usize;
16130        fn decode_raw_log(
16131            topics: &[alloy_sol_types::Word],
16132            data: &[u8],
16133        ) -> alloy_sol_types::Result<Self> {
16134            match topics.first().copied() {
16135                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16136                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
16137                            topics,
16138                            data,
16139                        )
16140                        .map(Self::Initialized)
16141                }
16142                Some(<NewEpoch as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16143                    <NewEpoch as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16144                        .map(Self::NewEpoch)
16145                }
16146                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16147                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16148                        .map(Self::NewState)
16149                }
16150                Some(
16151                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16152                ) => {
16153                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
16154                            topics,
16155                            data,
16156                        )
16157                        .map(Self::OwnershipTransferred)
16158                }
16159                Some(
16160                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16161                ) => {
16162                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16163                            topics,
16164                            data,
16165                        )
16166                        .map(Self::PermissionedProverNotRequired)
16167                }
16168                Some(
16169                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
16170                ) => {
16171                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
16172                            topics,
16173                            data,
16174                        )
16175                        .map(Self::PermissionedProverRequired)
16176                }
16177                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16178                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16179                        .map(Self::Upgrade)
16180                }
16181                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
16182                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
16183                        .map(Self::Upgraded)
16184                }
16185                _ => {
16186                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
16187                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
16188                        log: alloy_sol_types::private::Box::new(
16189                            alloy_sol_types::private::LogData::new_unchecked(
16190                                topics.to_vec(),
16191                                data.to_vec().into(),
16192                            ),
16193                        ),
16194                    })
16195                }
16196            }
16197        }
16198    }
16199    #[automatically_derived]
16200    impl alloy_sol_types::private::IntoLogData for LightClientV2Events {
16201        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
16202            match self {
16203                Self::Initialized(inner) => {
16204                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16205                }
16206                Self::NewEpoch(inner) => {
16207                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16208                }
16209                Self::NewState(inner) => {
16210                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16211                }
16212                Self::OwnershipTransferred(inner) => {
16213                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16214                }
16215                Self::PermissionedProverNotRequired(inner) => {
16216                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16217                }
16218                Self::PermissionedProverRequired(inner) => {
16219                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16220                }
16221                Self::Upgrade(inner) => {
16222                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16223                }
16224                Self::Upgraded(inner) => {
16225                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
16226                }
16227            }
16228        }
16229        fn into_log_data(self) -> alloy_sol_types::private::LogData {
16230            match self {
16231                Self::Initialized(inner) => {
16232                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16233                }
16234                Self::NewEpoch(inner) => {
16235                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16236                }
16237                Self::NewState(inner) => {
16238                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16239                }
16240                Self::OwnershipTransferred(inner) => {
16241                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16242                }
16243                Self::PermissionedProverNotRequired(inner) => {
16244                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16245                }
16246                Self::PermissionedProverRequired(inner) => {
16247                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16248                }
16249                Self::Upgrade(inner) => {
16250                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16251                }
16252                Self::Upgraded(inner) => {
16253                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
16254                }
16255            }
16256        }
16257    }
16258    use alloy::contract as alloy_contract;
16259    /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16260
16261See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16262    #[inline]
16263    pub const fn new<
16264        P: alloy_contract::private::Provider<N>,
16265        N: alloy_contract::private::Network,
16266    >(
16267        address: alloy_sol_types::private::Address,
16268        __provider: P,
16269    ) -> LightClientV2Instance<P, N> {
16270        LightClientV2Instance::<P, N>::new(address, __provider)
16271    }
16272    /**Deploys this contract using the given `provider` and constructor arguments, if any.
16273
16274Returns a new instance of the contract, if the deployment was successful.
16275
16276For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16277    #[inline]
16278    pub fn deploy<
16279        P: alloy_contract::private::Provider<N>,
16280        N: alloy_contract::private::Network,
16281    >(
16282        __provider: P,
16283    ) -> impl ::core::future::Future<
16284        Output = alloy_contract::Result<LightClientV2Instance<P, N>>,
16285    > {
16286        LightClientV2Instance::<P, N>::deploy(__provider)
16287    }
16288    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16289and constructor arguments, if any.
16290
16291This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16292the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16293    #[inline]
16294    pub fn deploy_builder<
16295        P: alloy_contract::private::Provider<N>,
16296        N: alloy_contract::private::Network,
16297    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16298        LightClientV2Instance::<P, N>::deploy_builder(__provider)
16299    }
16300    /**A [`LightClientV2`](self) instance.
16301
16302Contains type-safe methods for interacting with an on-chain instance of the
16303[`LightClientV2`](self) contract located at a given `address`, using a given
16304provider `P`.
16305
16306If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
16307documentation on how to provide it), the `deploy` and `deploy_builder` methods can
16308be used to deploy a new instance of the contract.
16309
16310See the [module-level documentation](self) for all the available methods.*/
16311    #[derive(Clone)]
16312    pub struct LightClientV2Instance<P, N = alloy_contract::private::Ethereum> {
16313        address: alloy_sol_types::private::Address,
16314        provider: P,
16315        _network: ::core::marker::PhantomData<N>,
16316    }
16317    #[automatically_derived]
16318    impl<P, N> ::core::fmt::Debug for LightClientV2Instance<P, N> {
16319        #[inline]
16320        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
16321            f.debug_tuple("LightClientV2Instance").field(&self.address).finish()
16322        }
16323    }
16324    /// Instantiation and getters/setters.
16325    impl<
16326        P: alloy_contract::private::Provider<N>,
16327        N: alloy_contract::private::Network,
16328    > LightClientV2Instance<P, N> {
16329        /**Creates a new wrapper around an on-chain [`LightClientV2`](self) contract instance.
16330
16331See the [wrapper's documentation](`LightClientV2Instance`) for more details.*/
16332        #[inline]
16333        pub const fn new(
16334            address: alloy_sol_types::private::Address,
16335            __provider: P,
16336        ) -> Self {
16337            Self {
16338                address,
16339                provider: __provider,
16340                _network: ::core::marker::PhantomData,
16341            }
16342        }
16343        /**Deploys this contract using the given `provider` and constructor arguments, if any.
16344
16345Returns a new instance of the contract, if the deployment was successful.
16346
16347For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
16348        #[inline]
16349        pub async fn deploy(
16350            __provider: P,
16351        ) -> alloy_contract::Result<LightClientV2Instance<P, N>> {
16352            let call_builder = Self::deploy_builder(__provider);
16353            let contract_address = call_builder.deploy().await?;
16354            Ok(Self::new(contract_address, call_builder.provider))
16355        }
16356        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
16357and constructor arguments, if any.
16358
16359This is a simple wrapper around creating a `RawCallBuilder` with the data set to
16360the bytecode concatenated with the constructor's ABI-encoded arguments.*/
16361        #[inline]
16362        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
16363            alloy_contract::RawCallBuilder::new_raw_deploy(
16364                __provider,
16365                ::core::clone::Clone::clone(&BYTECODE),
16366            )
16367        }
16368        /// Returns a reference to the address.
16369        #[inline]
16370        pub const fn address(&self) -> &alloy_sol_types::private::Address {
16371            &self.address
16372        }
16373        /// Sets the address.
16374        #[inline]
16375        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
16376            self.address = address;
16377        }
16378        /// Sets the address and returns `self`.
16379        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
16380            self.set_address(address);
16381            self
16382        }
16383        /// Returns a reference to the provider.
16384        #[inline]
16385        pub const fn provider(&self) -> &P {
16386            &self.provider
16387        }
16388    }
16389    impl<P: ::core::clone::Clone, N> LightClientV2Instance<&P, N> {
16390        /// Clones the provider and returns a new instance with the cloned provider.
16391        #[inline]
16392        pub fn with_cloned_provider(self) -> LightClientV2Instance<P, N> {
16393            LightClientV2Instance {
16394                address: self.address,
16395                provider: ::core::clone::Clone::clone(&self.provider),
16396                _network: ::core::marker::PhantomData,
16397            }
16398        }
16399    }
16400    /// Function calls.
16401    impl<
16402        P: alloy_contract::private::Provider<N>,
16403        N: alloy_contract::private::Network,
16404    > LightClientV2Instance<P, N> {
16405        /// Creates a new call builder using this contract instance's provider and address.
16406        ///
16407        /// Note that the call can be any function call, not just those defined in this
16408        /// contract. Prefer using the other methods for building type-safe contract calls.
16409        pub fn call_builder<C: alloy_sol_types::SolCall>(
16410            &self,
16411            call: &C,
16412        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
16413            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
16414        }
16415        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
16416        pub fn UPGRADE_INTERFACE_VERSION(
16417            &self,
16418        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
16419            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
16420        }
16421        ///Creates a new call builder for the [`_getVk`] function.
16422        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
16423            self.call_builder(&_getVkCall)
16424        }
16425        ///Creates a new call builder for the [`blocksPerEpoch`] function.
16426        pub fn blocksPerEpoch(
16427            &self,
16428        ) -> alloy_contract::SolCallBuilder<&P, blocksPerEpochCall, N> {
16429            self.call_builder(&blocksPerEpochCall)
16430        }
16431        ///Creates a new call builder for the [`currentBlockNumber`] function.
16432        pub fn currentBlockNumber(
16433            &self,
16434        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
16435            self.call_builder(&currentBlockNumberCall)
16436        }
16437        ///Creates a new call builder for the [`currentEpoch`] function.
16438        pub fn currentEpoch(
16439            &self,
16440        ) -> alloy_contract::SolCallBuilder<&P, currentEpochCall, N> {
16441            self.call_builder(&currentEpochCall)
16442        }
16443        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
16444        pub fn disablePermissionedProverMode(
16445            &self,
16446        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
16447            self.call_builder(&disablePermissionedProverModeCall)
16448        }
16449        ///Creates a new call builder for the [`epochFromBlockNumber`] function.
16450        pub fn epochFromBlockNumber(
16451            &self,
16452            _blockNum: u64,
16453            _blocksPerEpoch: u64,
16454        ) -> alloy_contract::SolCallBuilder<&P, epochFromBlockNumberCall, N> {
16455            self.call_builder(
16456                &epochFromBlockNumberCall {
16457                    _blockNum,
16458                    _blocksPerEpoch,
16459                },
16460            )
16461        }
16462        ///Creates a new call builder for the [`epochStartBlock`] function.
16463        pub fn epochStartBlock(
16464            &self,
16465        ) -> alloy_contract::SolCallBuilder<&P, epochStartBlockCall, N> {
16466            self.call_builder(&epochStartBlockCall)
16467        }
16468        ///Creates a new call builder for the [`finalizedState`] function.
16469        pub fn finalizedState(
16470            &self,
16471        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
16472            self.call_builder(&finalizedStateCall)
16473        }
16474        ///Creates a new call builder for the [`genesisStakeTableState`] function.
16475        pub fn genesisStakeTableState(
16476            &self,
16477        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
16478            self.call_builder(&genesisStakeTableStateCall)
16479        }
16480        ///Creates a new call builder for the [`genesisState`] function.
16481        pub fn genesisState(
16482            &self,
16483        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
16484            self.call_builder(&genesisStateCall)
16485        }
16486        ///Creates a new call builder for the [`getHotShotCommitment`] function.
16487        pub fn getHotShotCommitment(
16488            &self,
16489            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
16490        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
16491            self.call_builder(
16492                &getHotShotCommitmentCall {
16493                    hotShotBlockHeight,
16494                },
16495            )
16496        }
16497        ///Creates a new call builder for the [`getStateHistoryCount`] function.
16498        pub fn getStateHistoryCount(
16499            &self,
16500        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
16501            self.call_builder(&getStateHistoryCountCall)
16502        }
16503        ///Creates a new call builder for the [`getVersion`] function.
16504        pub fn getVersion(
16505            &self,
16506        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
16507            self.call_builder(&getVersionCall)
16508        }
16509        ///Creates a new call builder for the [`initialize`] function.
16510        pub fn initialize(
16511            &self,
16512            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16513            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16514            _stateHistoryRetentionPeriod: u32,
16515            owner: alloy::sol_types::private::Address,
16516        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
16517            self.call_builder(
16518                &initializeCall {
16519                    _genesis,
16520                    _genesisStakeTableState,
16521                    _stateHistoryRetentionPeriod,
16522                    owner,
16523                },
16524            )
16525        }
16526        ///Creates a new call builder for the [`initializeV2`] function.
16527        pub fn initializeV2(
16528            &self,
16529            _blocksPerEpoch: u64,
16530            _epochStartBlock: u64,
16531        ) -> alloy_contract::SolCallBuilder<&P, initializeV2Call, N> {
16532            self.call_builder(
16533                &initializeV2Call {
16534                    _blocksPerEpoch,
16535                    _epochStartBlock,
16536                },
16537            )
16538        }
16539        ///Creates a new call builder for the [`isEpochRoot`] function.
16540        pub fn isEpochRoot(
16541            &self,
16542            blockHeight: u64,
16543        ) -> alloy_contract::SolCallBuilder<&P, isEpochRootCall, N> {
16544            self.call_builder(&isEpochRootCall { blockHeight })
16545        }
16546        ///Creates a new call builder for the [`isGtEpochRoot`] function.
16547        pub fn isGtEpochRoot(
16548            &self,
16549            blockHeight: u64,
16550        ) -> alloy_contract::SolCallBuilder<&P, isGtEpochRootCall, N> {
16551            self.call_builder(&isGtEpochRootCall { blockHeight })
16552        }
16553        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
16554        pub fn isPermissionedProverEnabled(
16555            &self,
16556        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
16557            self.call_builder(&isPermissionedProverEnabledCall)
16558        }
16559        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
16560        pub fn lagOverEscapeHatchThreshold(
16561            &self,
16562            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
16563            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
16564        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
16565            self.call_builder(
16566                &lagOverEscapeHatchThresholdCall {
16567                    blockNumber,
16568                    blockThreshold,
16569                },
16570            )
16571        }
16572        ///Creates a new call builder for the [`newFinalizedState_0`] function.
16573        pub fn newFinalizedState_0(
16574            &self,
16575            _0: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16576            _1: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16577        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_0Call, N> {
16578            self.call_builder(&newFinalizedState_0Call { _0, _1 })
16579        }
16580        ///Creates a new call builder for the [`newFinalizedState_1`] function.
16581        pub fn newFinalizedState_1(
16582            &self,
16583            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
16584            nextStakeTable: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
16585            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
16586        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedState_1Call, N> {
16587            self.call_builder(
16588                &newFinalizedState_1Call {
16589                    newState,
16590                    nextStakeTable,
16591                    proof,
16592                },
16593            )
16594        }
16595        ///Creates a new call builder for the [`owner`] function.
16596        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
16597            self.call_builder(&ownerCall)
16598        }
16599        ///Creates a new call builder for the [`permissionedProver`] function.
16600        pub fn permissionedProver(
16601            &self,
16602        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
16603            self.call_builder(&permissionedProverCall)
16604        }
16605        ///Creates a new call builder for the [`proxiableUUID`] function.
16606        pub fn proxiableUUID(
16607            &self,
16608        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
16609            self.call_builder(&proxiableUUIDCall)
16610        }
16611        ///Creates a new call builder for the [`renounceOwnership`] function.
16612        pub fn renounceOwnership(
16613            &self,
16614        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
16615            self.call_builder(&renounceOwnershipCall)
16616        }
16617        ///Creates a new call builder for the [`setPermissionedProver`] function.
16618        pub fn setPermissionedProver(
16619            &self,
16620            prover: alloy::sol_types::private::Address,
16621        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
16622            self.call_builder(
16623                &setPermissionedProverCall {
16624                    prover,
16625                },
16626            )
16627        }
16628        ///Creates a new call builder for the [`setStateHistoryRetentionPeriod`] function.
16629        pub fn setStateHistoryRetentionPeriod(
16630            &self,
16631            historySeconds: u32,
16632        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryRetentionPeriodCall, N> {
16633            self.call_builder(
16634                &setStateHistoryRetentionPeriodCall {
16635                    historySeconds,
16636                },
16637            )
16638        }
16639        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
16640        pub fn setstateHistoryRetentionPeriod(
16641            &self,
16642            historySeconds: u32,
16643        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
16644            self.call_builder(
16645                &setstateHistoryRetentionPeriodCall {
16646                    historySeconds,
16647                },
16648            )
16649        }
16650        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
16651        pub fn stateHistoryCommitments(
16652            &self,
16653            _0: alloy::sol_types::private::primitives::aliases::U256,
16654        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
16655            self.call_builder(&stateHistoryCommitmentsCall(_0))
16656        }
16657        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
16658        pub fn stateHistoryFirstIndex(
16659            &self,
16660        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
16661            self.call_builder(&stateHistoryFirstIndexCall)
16662        }
16663        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
16664        pub fn stateHistoryRetentionPeriod(
16665            &self,
16666        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
16667            self.call_builder(&stateHistoryRetentionPeriodCall)
16668        }
16669        ///Creates a new call builder for the [`transferOwnership`] function.
16670        pub fn transferOwnership(
16671            &self,
16672            newOwner: alloy::sol_types::private::Address,
16673        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
16674            self.call_builder(&transferOwnershipCall { newOwner })
16675        }
16676        ///Creates a new call builder for the [`updateEpochStartBlock`] function.
16677        pub fn updateEpochStartBlock(
16678            &self,
16679            newEpochStartBlock: u64,
16680        ) -> alloy_contract::SolCallBuilder<&P, updateEpochStartBlockCall, N> {
16681            self.call_builder(
16682                &updateEpochStartBlockCall {
16683                    newEpochStartBlock,
16684                },
16685            )
16686        }
16687        ///Creates a new call builder for the [`upgradeToAndCall`] function.
16688        pub fn upgradeToAndCall(
16689            &self,
16690            newImplementation: alloy::sol_types::private::Address,
16691            data: alloy::sol_types::private::Bytes,
16692        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
16693            self.call_builder(
16694                &upgradeToAndCallCall {
16695                    newImplementation,
16696                    data,
16697                },
16698            )
16699        }
16700        ///Creates a new call builder for the [`votingStakeTableState`] function.
16701        pub fn votingStakeTableState(
16702            &self,
16703        ) -> alloy_contract::SolCallBuilder<&P, votingStakeTableStateCall, N> {
16704            self.call_builder(&votingStakeTableStateCall)
16705        }
16706    }
16707    /// Event filters.
16708    impl<
16709        P: alloy_contract::private::Provider<N>,
16710        N: alloy_contract::private::Network,
16711    > LightClientV2Instance<P, N> {
16712        /// Creates a new event filter using this contract instance's provider and address.
16713        ///
16714        /// Note that the type can be any event, not just those defined in this contract.
16715        /// Prefer using the other methods for building type-safe event filters.
16716        pub fn event_filter<E: alloy_sol_types::SolEvent>(
16717            &self,
16718        ) -> alloy_contract::Event<&P, E, N> {
16719            alloy_contract::Event::new_sol(&self.provider, &self.address)
16720        }
16721        ///Creates a new event filter for the [`Initialized`] event.
16722        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
16723            self.event_filter::<Initialized>()
16724        }
16725        ///Creates a new event filter for the [`NewEpoch`] event.
16726        pub fn NewEpoch_filter(&self) -> alloy_contract::Event<&P, NewEpoch, N> {
16727            self.event_filter::<NewEpoch>()
16728        }
16729        ///Creates a new event filter for the [`NewState`] event.
16730        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
16731            self.event_filter::<NewState>()
16732        }
16733        ///Creates a new event filter for the [`OwnershipTransferred`] event.
16734        pub fn OwnershipTransferred_filter(
16735            &self,
16736        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
16737            self.event_filter::<OwnershipTransferred>()
16738        }
16739        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
16740        pub fn PermissionedProverNotRequired_filter(
16741            &self,
16742        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
16743            self.event_filter::<PermissionedProverNotRequired>()
16744        }
16745        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
16746        pub fn PermissionedProverRequired_filter(
16747            &self,
16748        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
16749            self.event_filter::<PermissionedProverRequired>()
16750        }
16751        ///Creates a new event filter for the [`Upgrade`] event.
16752        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
16753            self.event_filter::<Upgrade>()
16754        }
16755        ///Creates a new event filter for the [`Upgraded`] event.
16756        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
16757            self.event_filter::<Upgraded>()
16758        }
16759    }
16760}