hotshot_contract_adapter/bindings/
light_client_mock.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        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    struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2242}
2243```*/
2244#[allow(
2245    non_camel_case_types,
2246    non_snake_case,
2247    clippy::pub_underscore_fields,
2248    clippy::style,
2249    clippy::empty_structs_with_brackets
2250)]
2251pub mod LightClient {
2252    use super::*;
2253    use alloy::sol_types as alloy_sol_types;
2254    #[derive(serde::Serialize, serde::Deserialize)]
2255    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2256    /**```solidity
2257struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
2258```*/
2259    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2260    #[derive(Clone)]
2261    pub struct LightClientState {
2262        #[allow(missing_docs)]
2263        pub viewNum: u64,
2264        #[allow(missing_docs)]
2265        pub blockHeight: u64,
2266        #[allow(missing_docs)]
2267        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2268    }
2269    #[allow(
2270        non_camel_case_types,
2271        non_snake_case,
2272        clippy::pub_underscore_fields,
2273        clippy::style
2274    )]
2275    const _: () = {
2276        use alloy::sol_types as alloy_sol_types;
2277        #[doc(hidden)]
2278        #[allow(dead_code)]
2279        type UnderlyingSolTuple<'a> = (
2280            alloy::sol_types::sol_data::Uint<64>,
2281            alloy::sol_types::sol_data::Uint<64>,
2282            BN254::ScalarField,
2283        );
2284        #[doc(hidden)]
2285        type UnderlyingRustTuple<'a> = (
2286            u64,
2287            u64,
2288            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2289        );
2290        #[cfg(test)]
2291        #[allow(dead_code, unreachable_patterns)]
2292        fn _type_assertion(
2293            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2294        ) {
2295            match _t {
2296                alloy_sol_types::private::AssertTypeEq::<
2297                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2298                >(_) => {}
2299            }
2300        }
2301        #[automatically_derived]
2302        #[doc(hidden)]
2303        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
2304            fn from(value: LightClientState) -> Self {
2305                (value.viewNum, value.blockHeight, value.blockCommRoot)
2306            }
2307        }
2308        #[automatically_derived]
2309        #[doc(hidden)]
2310        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
2311            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2312                Self {
2313                    viewNum: tuple.0,
2314                    blockHeight: tuple.1,
2315                    blockCommRoot: tuple.2,
2316                }
2317            }
2318        }
2319        #[automatically_derived]
2320        impl alloy_sol_types::SolValue for LightClientState {
2321            type SolType = Self;
2322        }
2323        #[automatically_derived]
2324        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
2325            #[inline]
2326            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2327                (
2328                    <alloy::sol_types::sol_data::Uint<
2329                        64,
2330                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
2331                    <alloy::sol_types::sol_data::Uint<
2332                        64,
2333                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
2334                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2335                        &self.blockCommRoot,
2336                    ),
2337                )
2338            }
2339            #[inline]
2340            fn stv_abi_encoded_size(&self) -> usize {
2341                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2342                    return size;
2343                }
2344                let tuple = <UnderlyingRustTuple<
2345                    '_,
2346                > as ::core::convert::From<Self>>::from(self.clone());
2347                <UnderlyingSolTuple<
2348                    '_,
2349                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2350            }
2351            #[inline]
2352            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2353                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2354            }
2355            #[inline]
2356            fn stv_abi_encode_packed_to(
2357                &self,
2358                out: &mut alloy_sol_types::private::Vec<u8>,
2359            ) {
2360                let tuple = <UnderlyingRustTuple<
2361                    '_,
2362                > as ::core::convert::From<Self>>::from(self.clone());
2363                <UnderlyingSolTuple<
2364                    '_,
2365                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2366            }
2367            #[inline]
2368            fn stv_abi_packed_encoded_size(&self) -> usize {
2369                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2370                    return size;
2371                }
2372                let tuple = <UnderlyingRustTuple<
2373                    '_,
2374                > as ::core::convert::From<Self>>::from(self.clone());
2375                <UnderlyingSolTuple<
2376                    '_,
2377                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2378            }
2379        }
2380        #[automatically_derived]
2381        impl alloy_sol_types::SolType for LightClientState {
2382            type RustType = Self;
2383            type Token<'a> = <UnderlyingSolTuple<
2384                'a,
2385            > as alloy_sol_types::SolType>::Token<'a>;
2386            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2387            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2388                '_,
2389            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2390            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2391                '_,
2392            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2393            #[inline]
2394            fn valid_token(token: &Self::Token<'_>) -> bool {
2395                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2396            }
2397            #[inline]
2398            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2399                let tuple = <UnderlyingSolTuple<
2400                    '_,
2401                > as alloy_sol_types::SolType>::detokenize(token);
2402                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2403            }
2404        }
2405        #[automatically_derived]
2406        impl alloy_sol_types::SolStruct for LightClientState {
2407            const NAME: &'static str = "LightClientState";
2408            #[inline]
2409            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2410                alloy_sol_types::private::Cow::Borrowed(
2411                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
2412                )
2413            }
2414            #[inline]
2415            fn eip712_components() -> alloy_sol_types::private::Vec<
2416                alloy_sol_types::private::Cow<'static, str>,
2417            > {
2418                alloy_sol_types::private::Vec::new()
2419            }
2420            #[inline]
2421            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2422                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2423            }
2424            #[inline]
2425            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2426                [
2427                    <alloy::sol_types::sol_data::Uint<
2428                        64,
2429                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
2430                        .0,
2431                    <alloy::sol_types::sol_data::Uint<
2432                        64,
2433                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
2434                        .0,
2435                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2436                            &self.blockCommRoot,
2437                        )
2438                        .0,
2439                ]
2440                    .concat()
2441            }
2442        }
2443        #[automatically_derived]
2444        impl alloy_sol_types::EventTopic for LightClientState {
2445            #[inline]
2446            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2447                0usize
2448                    + <alloy::sol_types::sol_data::Uint<
2449                        64,
2450                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2451                        &rust.viewNum,
2452                    )
2453                    + <alloy::sol_types::sol_data::Uint<
2454                        64,
2455                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2456                        &rust.blockHeight,
2457                    )
2458                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2459                        &rust.blockCommRoot,
2460                    )
2461            }
2462            #[inline]
2463            fn encode_topic_preimage(
2464                rust: &Self::RustType,
2465                out: &mut alloy_sol_types::private::Vec<u8>,
2466            ) {
2467                out.reserve(
2468                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2469                );
2470                <alloy::sol_types::sol_data::Uint<
2471                    64,
2472                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2473                    &rust.viewNum,
2474                    out,
2475                );
2476                <alloy::sol_types::sol_data::Uint<
2477                    64,
2478                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2479                    &rust.blockHeight,
2480                    out,
2481                );
2482                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2483                    &rust.blockCommRoot,
2484                    out,
2485                );
2486            }
2487            #[inline]
2488            fn encode_topic(
2489                rust: &Self::RustType,
2490            ) -> alloy_sol_types::abi::token::WordToken {
2491                let mut out = alloy_sol_types::private::Vec::new();
2492                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2493                    rust,
2494                    &mut out,
2495                );
2496                alloy_sol_types::abi::token::WordToken(
2497                    alloy_sol_types::private::keccak256(out),
2498                )
2499            }
2500        }
2501    };
2502    #[derive(serde::Serialize, serde::Deserialize)]
2503    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2504    /**```solidity
2505struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
2506```*/
2507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2508    #[derive(Clone)]
2509    pub struct StakeTableState {
2510        #[allow(missing_docs)]
2511        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
2512        #[allow(missing_docs)]
2513        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2514        #[allow(missing_docs)]
2515        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2516        #[allow(missing_docs)]
2517        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2518    }
2519    #[allow(
2520        non_camel_case_types,
2521        non_snake_case,
2522        clippy::pub_underscore_fields,
2523        clippy::style
2524    )]
2525    const _: () = {
2526        use alloy::sol_types as alloy_sol_types;
2527        #[doc(hidden)]
2528        #[allow(dead_code)]
2529        type UnderlyingSolTuple<'a> = (
2530            alloy::sol_types::sol_data::Uint<256>,
2531            BN254::ScalarField,
2532            BN254::ScalarField,
2533            BN254::ScalarField,
2534        );
2535        #[doc(hidden)]
2536        type UnderlyingRustTuple<'a> = (
2537            alloy::sol_types::private::primitives::aliases::U256,
2538            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2539            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2540            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2541        );
2542        #[cfg(test)]
2543        #[allow(dead_code, unreachable_patterns)]
2544        fn _type_assertion(
2545            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2546        ) {
2547            match _t {
2548                alloy_sol_types::private::AssertTypeEq::<
2549                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2550                >(_) => {}
2551            }
2552        }
2553        #[automatically_derived]
2554        #[doc(hidden)]
2555        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
2556            fn from(value: StakeTableState) -> Self {
2557                (
2558                    value.threshold,
2559                    value.blsKeyComm,
2560                    value.schnorrKeyComm,
2561                    value.amountComm,
2562                )
2563            }
2564        }
2565        #[automatically_derived]
2566        #[doc(hidden)]
2567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
2568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2569                Self {
2570                    threshold: tuple.0,
2571                    blsKeyComm: tuple.1,
2572                    schnorrKeyComm: tuple.2,
2573                    amountComm: tuple.3,
2574                }
2575            }
2576        }
2577        #[automatically_derived]
2578        impl alloy_sol_types::SolValue for StakeTableState {
2579            type SolType = Self;
2580        }
2581        #[automatically_derived]
2582        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
2583            #[inline]
2584            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2585                (
2586                    <alloy::sol_types::sol_data::Uint<
2587                        256,
2588                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
2589                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2590                        &self.blsKeyComm,
2591                    ),
2592                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2593                        &self.schnorrKeyComm,
2594                    ),
2595                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2596                        &self.amountComm,
2597                    ),
2598                )
2599            }
2600            #[inline]
2601            fn stv_abi_encoded_size(&self) -> usize {
2602                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2603                    return size;
2604                }
2605                let tuple = <UnderlyingRustTuple<
2606                    '_,
2607                > as ::core::convert::From<Self>>::from(self.clone());
2608                <UnderlyingSolTuple<
2609                    '_,
2610                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2611            }
2612            #[inline]
2613            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2614                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2615            }
2616            #[inline]
2617            fn stv_abi_encode_packed_to(
2618                &self,
2619                out: &mut alloy_sol_types::private::Vec<u8>,
2620            ) {
2621                let tuple = <UnderlyingRustTuple<
2622                    '_,
2623                > as ::core::convert::From<Self>>::from(self.clone());
2624                <UnderlyingSolTuple<
2625                    '_,
2626                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2627            }
2628            #[inline]
2629            fn stv_abi_packed_encoded_size(&self) -> usize {
2630                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2631                    return size;
2632                }
2633                let tuple = <UnderlyingRustTuple<
2634                    '_,
2635                > as ::core::convert::From<Self>>::from(self.clone());
2636                <UnderlyingSolTuple<
2637                    '_,
2638                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2639            }
2640        }
2641        #[automatically_derived]
2642        impl alloy_sol_types::SolType for StakeTableState {
2643            type RustType = Self;
2644            type Token<'a> = <UnderlyingSolTuple<
2645                'a,
2646            > as alloy_sol_types::SolType>::Token<'a>;
2647            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2648            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2649                '_,
2650            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2651            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2652                '_,
2653            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2654            #[inline]
2655            fn valid_token(token: &Self::Token<'_>) -> bool {
2656                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2657            }
2658            #[inline]
2659            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2660                let tuple = <UnderlyingSolTuple<
2661                    '_,
2662                > as alloy_sol_types::SolType>::detokenize(token);
2663                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2664            }
2665        }
2666        #[automatically_derived]
2667        impl alloy_sol_types::SolStruct for StakeTableState {
2668            const NAME: &'static str = "StakeTableState";
2669            #[inline]
2670            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2671                alloy_sol_types::private::Cow::Borrowed(
2672                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
2673                )
2674            }
2675            #[inline]
2676            fn eip712_components() -> alloy_sol_types::private::Vec<
2677                alloy_sol_types::private::Cow<'static, str>,
2678            > {
2679                alloy_sol_types::private::Vec::new()
2680            }
2681            #[inline]
2682            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2683                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2684            }
2685            #[inline]
2686            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2687                [
2688                    <alloy::sol_types::sol_data::Uint<
2689                        256,
2690                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
2691                        .0,
2692                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2693                            &self.blsKeyComm,
2694                        )
2695                        .0,
2696                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2697                            &self.schnorrKeyComm,
2698                        )
2699                        .0,
2700                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2701                            &self.amountComm,
2702                        )
2703                        .0,
2704                ]
2705                    .concat()
2706            }
2707        }
2708        #[automatically_derived]
2709        impl alloy_sol_types::EventTopic for StakeTableState {
2710            #[inline]
2711            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2712                0usize
2713                    + <alloy::sol_types::sol_data::Uint<
2714                        256,
2715                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2716                        &rust.threshold,
2717                    )
2718                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2719                        &rust.blsKeyComm,
2720                    )
2721                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2722                        &rust.schnorrKeyComm,
2723                    )
2724                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
2725                        &rust.amountComm,
2726                    )
2727            }
2728            #[inline]
2729            fn encode_topic_preimage(
2730                rust: &Self::RustType,
2731                out: &mut alloy_sol_types::private::Vec<u8>,
2732            ) {
2733                out.reserve(
2734                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2735                );
2736                <alloy::sol_types::sol_data::Uint<
2737                    256,
2738                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2739                    &rust.threshold,
2740                    out,
2741                );
2742                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2743                    &rust.blsKeyComm,
2744                    out,
2745                );
2746                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2747                    &rust.schnorrKeyComm,
2748                    out,
2749                );
2750                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
2751                    &rust.amountComm,
2752                    out,
2753                );
2754            }
2755            #[inline]
2756            fn encode_topic(
2757                rust: &Self::RustType,
2758            ) -> alloy_sol_types::abi::token::WordToken {
2759                let mut out = alloy_sol_types::private::Vec::new();
2760                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2761                    rust,
2762                    &mut out,
2763                );
2764                alloy_sol_types::abi::token::WordToken(
2765                    alloy_sol_types::private::keccak256(out),
2766                )
2767            }
2768        }
2769    };
2770    #[derive(serde::Serialize, serde::Deserialize)]
2771    #[derive(Default, Debug, PartialEq, Eq, Hash)]
2772    /**```solidity
2773struct StateHistoryCommitment { uint64 l1BlockHeight; uint64 l1BlockTimestamp; uint64 hotShotBlockHeight; BN254.ScalarField hotShotBlockCommRoot; }
2774```*/
2775    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
2776    #[derive(Clone)]
2777    pub struct StateHistoryCommitment {
2778        #[allow(missing_docs)]
2779        pub l1BlockHeight: u64,
2780        #[allow(missing_docs)]
2781        pub l1BlockTimestamp: u64,
2782        #[allow(missing_docs)]
2783        pub hotShotBlockHeight: u64,
2784        #[allow(missing_docs)]
2785        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2786    }
2787    #[allow(
2788        non_camel_case_types,
2789        non_snake_case,
2790        clippy::pub_underscore_fields,
2791        clippy::style
2792    )]
2793    const _: () = {
2794        use alloy::sol_types as alloy_sol_types;
2795        #[doc(hidden)]
2796        #[allow(dead_code)]
2797        type UnderlyingSolTuple<'a> = (
2798            alloy::sol_types::sol_data::Uint<64>,
2799            alloy::sol_types::sol_data::Uint<64>,
2800            alloy::sol_types::sol_data::Uint<64>,
2801            BN254::ScalarField,
2802        );
2803        #[doc(hidden)]
2804        type UnderlyingRustTuple<'a> = (
2805            u64,
2806            u64,
2807            u64,
2808            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
2809        );
2810        #[cfg(test)]
2811        #[allow(dead_code, unreachable_patterns)]
2812        fn _type_assertion(
2813            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
2814        ) {
2815            match _t {
2816                alloy_sol_types::private::AssertTypeEq::<
2817                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
2818                >(_) => {}
2819            }
2820        }
2821        #[automatically_derived]
2822        #[doc(hidden)]
2823        impl ::core::convert::From<StateHistoryCommitment> for UnderlyingRustTuple<'_> {
2824            fn from(value: StateHistoryCommitment) -> Self {
2825                (
2826                    value.l1BlockHeight,
2827                    value.l1BlockTimestamp,
2828                    value.hotShotBlockHeight,
2829                    value.hotShotBlockCommRoot,
2830                )
2831            }
2832        }
2833        #[automatically_derived]
2834        #[doc(hidden)]
2835        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StateHistoryCommitment {
2836            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
2837                Self {
2838                    l1BlockHeight: tuple.0,
2839                    l1BlockTimestamp: tuple.1,
2840                    hotShotBlockHeight: tuple.2,
2841                    hotShotBlockCommRoot: tuple.3,
2842                }
2843            }
2844        }
2845        #[automatically_derived]
2846        impl alloy_sol_types::SolValue for StateHistoryCommitment {
2847            type SolType = Self;
2848        }
2849        #[automatically_derived]
2850        impl alloy_sol_types::private::SolTypeValue<Self> for StateHistoryCommitment {
2851            #[inline]
2852            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
2853                (
2854                    <alloy::sol_types::sol_data::Uint<
2855                        64,
2856                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
2857                    <alloy::sol_types::sol_data::Uint<
2858                        64,
2859                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
2860                    <alloy::sol_types::sol_data::Uint<
2861                        64,
2862                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
2863                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
2864                        &self.hotShotBlockCommRoot,
2865                    ),
2866                )
2867            }
2868            #[inline]
2869            fn stv_abi_encoded_size(&self) -> usize {
2870                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
2871                    return size;
2872                }
2873                let tuple = <UnderlyingRustTuple<
2874                    '_,
2875                > as ::core::convert::From<Self>>::from(self.clone());
2876                <UnderlyingSolTuple<
2877                    '_,
2878                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
2879            }
2880            #[inline]
2881            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
2882                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
2883            }
2884            #[inline]
2885            fn stv_abi_encode_packed_to(
2886                &self,
2887                out: &mut alloy_sol_types::private::Vec<u8>,
2888            ) {
2889                let tuple = <UnderlyingRustTuple<
2890                    '_,
2891                > as ::core::convert::From<Self>>::from(self.clone());
2892                <UnderlyingSolTuple<
2893                    '_,
2894                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
2895            }
2896            #[inline]
2897            fn stv_abi_packed_encoded_size(&self) -> usize {
2898                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
2899                    return size;
2900                }
2901                let tuple = <UnderlyingRustTuple<
2902                    '_,
2903                > as ::core::convert::From<Self>>::from(self.clone());
2904                <UnderlyingSolTuple<
2905                    '_,
2906                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
2907            }
2908        }
2909        #[automatically_derived]
2910        impl alloy_sol_types::SolType for StateHistoryCommitment {
2911            type RustType = Self;
2912            type Token<'a> = <UnderlyingSolTuple<
2913                'a,
2914            > as alloy_sol_types::SolType>::Token<'a>;
2915            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
2916            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2917                '_,
2918            > as alloy_sol_types::SolType>::ENCODED_SIZE;
2919            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
2920                '_,
2921            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
2922            #[inline]
2923            fn valid_token(token: &Self::Token<'_>) -> bool {
2924                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
2925            }
2926            #[inline]
2927            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
2928                let tuple = <UnderlyingSolTuple<
2929                    '_,
2930                > as alloy_sol_types::SolType>::detokenize(token);
2931                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
2932            }
2933        }
2934        #[automatically_derived]
2935        impl alloy_sol_types::SolStruct for StateHistoryCommitment {
2936            const NAME: &'static str = "StateHistoryCommitment";
2937            #[inline]
2938            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
2939                alloy_sol_types::private::Cow::Borrowed(
2940                    "StateHistoryCommitment(uint64 l1BlockHeight,uint64 l1BlockTimestamp,uint64 hotShotBlockHeight,uint256 hotShotBlockCommRoot)",
2941                )
2942            }
2943            #[inline]
2944            fn eip712_components() -> alloy_sol_types::private::Vec<
2945                alloy_sol_types::private::Cow<'static, str>,
2946            > {
2947                alloy_sol_types::private::Vec::new()
2948            }
2949            #[inline]
2950            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
2951                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
2952            }
2953            #[inline]
2954            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
2955                [
2956                    <alloy::sol_types::sol_data::Uint<
2957                        64,
2958                    > as alloy_sol_types::SolType>::eip712_data_word(&self.l1BlockHeight)
2959                        .0,
2960                    <alloy::sol_types::sol_data::Uint<
2961                        64,
2962                    > as alloy_sol_types::SolType>::eip712_data_word(
2963                            &self.l1BlockTimestamp,
2964                        )
2965                        .0,
2966                    <alloy::sol_types::sol_data::Uint<
2967                        64,
2968                    > as alloy_sol_types::SolType>::eip712_data_word(
2969                            &self.hotShotBlockHeight,
2970                        )
2971                        .0,
2972                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
2973                            &self.hotShotBlockCommRoot,
2974                        )
2975                        .0,
2976                ]
2977                    .concat()
2978            }
2979        }
2980        #[automatically_derived]
2981        impl alloy_sol_types::EventTopic for StateHistoryCommitment {
2982            #[inline]
2983            fn topic_preimage_length(rust: &Self::RustType) -> usize {
2984                0usize
2985                    + <alloy::sol_types::sol_data::Uint<
2986                        64,
2987                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2988                        &rust.l1BlockHeight,
2989                    )
2990                    + <alloy::sol_types::sol_data::Uint<
2991                        64,
2992                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2993                        &rust.l1BlockTimestamp,
2994                    )
2995                    + <alloy::sol_types::sol_data::Uint<
2996                        64,
2997                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
2998                        &rust.hotShotBlockHeight,
2999                    )
3000                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3001                        &rust.hotShotBlockCommRoot,
3002                    )
3003            }
3004            #[inline]
3005            fn encode_topic_preimage(
3006                rust: &Self::RustType,
3007                out: &mut alloy_sol_types::private::Vec<u8>,
3008            ) {
3009                out.reserve(
3010                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3011                );
3012                <alloy::sol_types::sol_data::Uint<
3013                    64,
3014                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3015                    &rust.l1BlockHeight,
3016                    out,
3017                );
3018                <alloy::sol_types::sol_data::Uint<
3019                    64,
3020                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3021                    &rust.l1BlockTimestamp,
3022                    out,
3023                );
3024                <alloy::sol_types::sol_data::Uint<
3025                    64,
3026                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3027                    &rust.hotShotBlockHeight,
3028                    out,
3029                );
3030                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3031                    &rust.hotShotBlockCommRoot,
3032                    out,
3033                );
3034            }
3035            #[inline]
3036            fn encode_topic(
3037                rust: &Self::RustType,
3038            ) -> alloy_sol_types::abi::token::WordToken {
3039                let mut out = alloy_sol_types::private::Vec::new();
3040                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3041                    rust,
3042                    &mut out,
3043                );
3044                alloy_sol_types::abi::token::WordToken(
3045                    alloy_sol_types::private::keccak256(out),
3046                )
3047            }
3048        }
3049    };
3050    use alloy::contract as alloy_contract;
3051    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3052
3053See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3054    #[inline]
3055    pub const fn new<
3056        P: alloy_contract::private::Provider<N>,
3057        N: alloy_contract::private::Network,
3058    >(
3059        address: alloy_sol_types::private::Address,
3060        __provider: P,
3061    ) -> LightClientInstance<P, N> {
3062        LightClientInstance::<P, N>::new(address, __provider)
3063    }
3064    /**A [`LightClient`](self) instance.
3065
3066Contains type-safe methods for interacting with an on-chain instance of the
3067[`LightClient`](self) contract located at a given `address`, using a given
3068provider `P`.
3069
3070If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
3071documentation on how to provide it), the `deploy` and `deploy_builder` methods can
3072be used to deploy a new instance of the contract.
3073
3074See the [module-level documentation](self) for all the available methods.*/
3075    #[derive(Clone)]
3076    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
3077        address: alloy_sol_types::private::Address,
3078        provider: P,
3079        _network: ::core::marker::PhantomData<N>,
3080    }
3081    #[automatically_derived]
3082    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
3083        #[inline]
3084        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
3085            f.debug_tuple("LightClientInstance").field(&self.address).finish()
3086        }
3087    }
3088    /// Instantiation and getters/setters.
3089    impl<
3090        P: alloy_contract::private::Provider<N>,
3091        N: alloy_contract::private::Network,
3092    > LightClientInstance<P, N> {
3093        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
3094
3095See the [wrapper's documentation](`LightClientInstance`) for more details.*/
3096        #[inline]
3097        pub const fn new(
3098            address: alloy_sol_types::private::Address,
3099            __provider: P,
3100        ) -> Self {
3101            Self {
3102                address,
3103                provider: __provider,
3104                _network: ::core::marker::PhantomData,
3105            }
3106        }
3107        /// Returns a reference to the address.
3108        #[inline]
3109        pub const fn address(&self) -> &alloy_sol_types::private::Address {
3110            &self.address
3111        }
3112        /// Sets the address.
3113        #[inline]
3114        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
3115            self.address = address;
3116        }
3117        /// Sets the address and returns `self`.
3118        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
3119            self.set_address(address);
3120            self
3121        }
3122        /// Returns a reference to the provider.
3123        #[inline]
3124        pub const fn provider(&self) -> &P {
3125            &self.provider
3126        }
3127    }
3128    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
3129        /// Clones the provider and returns a new instance with the cloned provider.
3130        #[inline]
3131        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
3132            LightClientInstance {
3133                address: self.address,
3134                provider: ::core::clone::Clone::clone(&self.provider),
3135                _network: ::core::marker::PhantomData,
3136            }
3137        }
3138    }
3139    /// Function calls.
3140    impl<
3141        P: alloy_contract::private::Provider<N>,
3142        N: alloy_contract::private::Network,
3143    > LightClientInstance<P, N> {
3144        /// Creates a new call builder using this contract instance's provider and address.
3145        ///
3146        /// Note that the call can be any function call, not just those defined in this
3147        /// contract. Prefer using the other methods for building type-safe contract calls.
3148        pub fn call_builder<C: alloy_sol_types::SolCall>(
3149            &self,
3150            call: &C,
3151        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
3152            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
3153        }
3154    }
3155    /// Event filters.
3156    impl<
3157        P: alloy_contract::private::Provider<N>,
3158        N: alloy_contract::private::Network,
3159    > LightClientInstance<P, N> {
3160        /// Creates a new event filter using this contract instance's provider and address.
3161        ///
3162        /// Note that the type can be any event, not just those defined in this contract.
3163        /// Prefer using the other methods for building type-safe event filters.
3164        pub fn event_filter<E: alloy_sol_types::SolEvent>(
3165            &self,
3166        ) -> alloy_contract::Event<&P, E, N> {
3167            alloy_contract::Event::new_sol(&self.provider, &self.address)
3168        }
3169    }
3170}
3171/**
3172
3173Generated by the following Solidity interface...
3174```solidity
3175library BN254 {
3176    type BaseField is uint256;
3177    type ScalarField is uint256;
3178    struct G1Point {
3179        BaseField x;
3180        BaseField y;
3181    }
3182}
3183
3184library IPlonkVerifier {
3185    struct PlonkProof {
3186        BN254.G1Point wire0;
3187        BN254.G1Point wire1;
3188        BN254.G1Point wire2;
3189        BN254.G1Point wire3;
3190        BN254.G1Point wire4;
3191        BN254.G1Point prodPerm;
3192        BN254.G1Point split0;
3193        BN254.G1Point split1;
3194        BN254.G1Point split2;
3195        BN254.G1Point split3;
3196        BN254.G1Point split4;
3197        BN254.G1Point zeta;
3198        BN254.G1Point zetaOmega;
3199        BN254.ScalarField wireEval0;
3200        BN254.ScalarField wireEval1;
3201        BN254.ScalarField wireEval2;
3202        BN254.ScalarField wireEval3;
3203        BN254.ScalarField wireEval4;
3204        BN254.ScalarField sigmaEval0;
3205        BN254.ScalarField sigmaEval1;
3206        BN254.ScalarField sigmaEval2;
3207        BN254.ScalarField sigmaEval3;
3208        BN254.ScalarField prodPermZetaOmegaEval;
3209    }
3210    struct VerifyingKey {
3211        uint256 domainSize;
3212        uint256 numInputs;
3213        BN254.G1Point sigma0;
3214        BN254.G1Point sigma1;
3215        BN254.G1Point sigma2;
3216        BN254.G1Point sigma3;
3217        BN254.G1Point sigma4;
3218        BN254.G1Point q1;
3219        BN254.G1Point q2;
3220        BN254.G1Point q3;
3221        BN254.G1Point q4;
3222        BN254.G1Point qM12;
3223        BN254.G1Point qM34;
3224        BN254.G1Point qO;
3225        BN254.G1Point qC;
3226        BN254.G1Point qH1;
3227        BN254.G1Point qH2;
3228        BN254.G1Point qH3;
3229        BN254.G1Point qH4;
3230        BN254.G1Point qEcc;
3231        bytes32 g2LSB;
3232        bytes32 g2MSB;
3233    }
3234}
3235
3236library LightClient {
3237    struct LightClientState {
3238        uint64 viewNum;
3239        uint64 blockHeight;
3240        BN254.ScalarField blockCommRoot;
3241    }
3242    struct StakeTableState {
3243        uint256 threshold;
3244        BN254.ScalarField blsKeyComm;
3245        BN254.ScalarField schnorrKeyComm;
3246        BN254.ScalarField amountComm;
3247    }
3248    struct StateHistoryCommitment {
3249        uint64 l1BlockHeight;
3250        uint64 l1BlockTimestamp;
3251        uint64 hotShotBlockHeight;
3252        BN254.ScalarField hotShotBlockCommRoot;
3253    }
3254}
3255
3256interface LightClientMock {
3257    error AddressEmptyCode(address target);
3258    error ERC1967InvalidImplementation(address implementation);
3259    error ERC1967NonPayable();
3260    error FailedInnerCall();
3261    error InsufficientSnapshotHistory();
3262    error InvalidAddress();
3263    error InvalidArgs();
3264    error InvalidHotShotBlockForCommitmentCheck();
3265    error InvalidInitialization();
3266    error InvalidMaxStateHistory();
3267    error InvalidProof();
3268    error InvalidScalar();
3269    error NoChangeRequired();
3270    error NotInitializing();
3271    error OutdatedState();
3272    error OwnableInvalidOwner(address owner);
3273    error OwnableUnauthorizedAccount(address account);
3274    error OwnershipCannotBeRenounced();
3275    error ProverNotPermissioned();
3276    error UUPSUnauthorizedCallContext();
3277    error UUPSUnsupportedProxiableUUID(bytes32 slot);
3278    error WrongStakeTableUsed();
3279
3280    event Initialized(uint64 version);
3281    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
3282    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
3283    event PermissionedProverNotRequired();
3284    event PermissionedProverRequired(address permissionedProver);
3285    event Upgrade(address implementation);
3286    event Upgraded(address indexed implementation);
3287
3288    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
3289    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
3290    function currentBlockNumber() external view returns (uint256);
3291    function disablePermissionedProverMode() external;
3292    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3293    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
3294    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
3295    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
3296    function getStateHistoryCount() external view returns (uint256);
3297    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
3298    function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
3299    function isPermissionedProverEnabled() external view returns (bool);
3300    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
3301    function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
3302    function owner() external view returns (address);
3303    function permissionedProver() external view returns (address);
3304    function proxiableUUID() external view returns (bytes32);
3305    function renounceOwnership() external;
3306    function setFinalizedState(LightClient.LightClientState memory state) external;
3307    function setHotShotDownSince(uint256 l1Height) external;
3308    function setHotShotUp() external;
3309    function setPermissionedProver(address prover) external;
3310    function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
3311    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
3312    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
3313    function stateHistoryFirstIndex() external view returns (uint64);
3314    function stateHistoryRetentionPeriod() external view returns (uint32);
3315    function transferOwnership(address newOwner) external;
3316    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
3317}
3318```
3319
3320...which was generated by the following JSON ABI:
3321```json
3322[
3323  {
3324    "type": "function",
3325    "name": "UPGRADE_INTERFACE_VERSION",
3326    "inputs": [],
3327    "outputs": [
3328      {
3329        "name": "",
3330        "type": "string",
3331        "internalType": "string"
3332      }
3333    ],
3334    "stateMutability": "view"
3335  },
3336  {
3337    "type": "function",
3338    "name": "_getVk",
3339    "inputs": [],
3340    "outputs": [
3341      {
3342        "name": "vk",
3343        "type": "tuple",
3344        "internalType": "struct IPlonkVerifier.VerifyingKey",
3345        "components": [
3346          {
3347            "name": "domainSize",
3348            "type": "uint256",
3349            "internalType": "uint256"
3350          },
3351          {
3352            "name": "numInputs",
3353            "type": "uint256",
3354            "internalType": "uint256"
3355          },
3356          {
3357            "name": "sigma0",
3358            "type": "tuple",
3359            "internalType": "struct BN254.G1Point",
3360            "components": [
3361              {
3362                "name": "x",
3363                "type": "uint256",
3364                "internalType": "BN254.BaseField"
3365              },
3366              {
3367                "name": "y",
3368                "type": "uint256",
3369                "internalType": "BN254.BaseField"
3370              }
3371            ]
3372          },
3373          {
3374            "name": "sigma1",
3375            "type": "tuple",
3376            "internalType": "struct BN254.G1Point",
3377            "components": [
3378              {
3379                "name": "x",
3380                "type": "uint256",
3381                "internalType": "BN254.BaseField"
3382              },
3383              {
3384                "name": "y",
3385                "type": "uint256",
3386                "internalType": "BN254.BaseField"
3387              }
3388            ]
3389          },
3390          {
3391            "name": "sigma2",
3392            "type": "tuple",
3393            "internalType": "struct BN254.G1Point",
3394            "components": [
3395              {
3396                "name": "x",
3397                "type": "uint256",
3398                "internalType": "BN254.BaseField"
3399              },
3400              {
3401                "name": "y",
3402                "type": "uint256",
3403                "internalType": "BN254.BaseField"
3404              }
3405            ]
3406          },
3407          {
3408            "name": "sigma3",
3409            "type": "tuple",
3410            "internalType": "struct BN254.G1Point",
3411            "components": [
3412              {
3413                "name": "x",
3414                "type": "uint256",
3415                "internalType": "BN254.BaseField"
3416              },
3417              {
3418                "name": "y",
3419                "type": "uint256",
3420                "internalType": "BN254.BaseField"
3421              }
3422            ]
3423          },
3424          {
3425            "name": "sigma4",
3426            "type": "tuple",
3427            "internalType": "struct BN254.G1Point",
3428            "components": [
3429              {
3430                "name": "x",
3431                "type": "uint256",
3432                "internalType": "BN254.BaseField"
3433              },
3434              {
3435                "name": "y",
3436                "type": "uint256",
3437                "internalType": "BN254.BaseField"
3438              }
3439            ]
3440          },
3441          {
3442            "name": "q1",
3443            "type": "tuple",
3444            "internalType": "struct BN254.G1Point",
3445            "components": [
3446              {
3447                "name": "x",
3448                "type": "uint256",
3449                "internalType": "BN254.BaseField"
3450              },
3451              {
3452                "name": "y",
3453                "type": "uint256",
3454                "internalType": "BN254.BaseField"
3455              }
3456            ]
3457          },
3458          {
3459            "name": "q2",
3460            "type": "tuple",
3461            "internalType": "struct BN254.G1Point",
3462            "components": [
3463              {
3464                "name": "x",
3465                "type": "uint256",
3466                "internalType": "BN254.BaseField"
3467              },
3468              {
3469                "name": "y",
3470                "type": "uint256",
3471                "internalType": "BN254.BaseField"
3472              }
3473            ]
3474          },
3475          {
3476            "name": "q3",
3477            "type": "tuple",
3478            "internalType": "struct BN254.G1Point",
3479            "components": [
3480              {
3481                "name": "x",
3482                "type": "uint256",
3483                "internalType": "BN254.BaseField"
3484              },
3485              {
3486                "name": "y",
3487                "type": "uint256",
3488                "internalType": "BN254.BaseField"
3489              }
3490            ]
3491          },
3492          {
3493            "name": "q4",
3494            "type": "tuple",
3495            "internalType": "struct BN254.G1Point",
3496            "components": [
3497              {
3498                "name": "x",
3499                "type": "uint256",
3500                "internalType": "BN254.BaseField"
3501              },
3502              {
3503                "name": "y",
3504                "type": "uint256",
3505                "internalType": "BN254.BaseField"
3506              }
3507            ]
3508          },
3509          {
3510            "name": "qM12",
3511            "type": "tuple",
3512            "internalType": "struct BN254.G1Point",
3513            "components": [
3514              {
3515                "name": "x",
3516                "type": "uint256",
3517                "internalType": "BN254.BaseField"
3518              },
3519              {
3520                "name": "y",
3521                "type": "uint256",
3522                "internalType": "BN254.BaseField"
3523              }
3524            ]
3525          },
3526          {
3527            "name": "qM34",
3528            "type": "tuple",
3529            "internalType": "struct BN254.G1Point",
3530            "components": [
3531              {
3532                "name": "x",
3533                "type": "uint256",
3534                "internalType": "BN254.BaseField"
3535              },
3536              {
3537                "name": "y",
3538                "type": "uint256",
3539                "internalType": "BN254.BaseField"
3540              }
3541            ]
3542          },
3543          {
3544            "name": "qO",
3545            "type": "tuple",
3546            "internalType": "struct BN254.G1Point",
3547            "components": [
3548              {
3549                "name": "x",
3550                "type": "uint256",
3551                "internalType": "BN254.BaseField"
3552              },
3553              {
3554                "name": "y",
3555                "type": "uint256",
3556                "internalType": "BN254.BaseField"
3557              }
3558            ]
3559          },
3560          {
3561            "name": "qC",
3562            "type": "tuple",
3563            "internalType": "struct BN254.G1Point",
3564            "components": [
3565              {
3566                "name": "x",
3567                "type": "uint256",
3568                "internalType": "BN254.BaseField"
3569              },
3570              {
3571                "name": "y",
3572                "type": "uint256",
3573                "internalType": "BN254.BaseField"
3574              }
3575            ]
3576          },
3577          {
3578            "name": "qH1",
3579            "type": "tuple",
3580            "internalType": "struct BN254.G1Point",
3581            "components": [
3582              {
3583                "name": "x",
3584                "type": "uint256",
3585                "internalType": "BN254.BaseField"
3586              },
3587              {
3588                "name": "y",
3589                "type": "uint256",
3590                "internalType": "BN254.BaseField"
3591              }
3592            ]
3593          },
3594          {
3595            "name": "qH2",
3596            "type": "tuple",
3597            "internalType": "struct BN254.G1Point",
3598            "components": [
3599              {
3600                "name": "x",
3601                "type": "uint256",
3602                "internalType": "BN254.BaseField"
3603              },
3604              {
3605                "name": "y",
3606                "type": "uint256",
3607                "internalType": "BN254.BaseField"
3608              }
3609            ]
3610          },
3611          {
3612            "name": "qH3",
3613            "type": "tuple",
3614            "internalType": "struct BN254.G1Point",
3615            "components": [
3616              {
3617                "name": "x",
3618                "type": "uint256",
3619                "internalType": "BN254.BaseField"
3620              },
3621              {
3622                "name": "y",
3623                "type": "uint256",
3624                "internalType": "BN254.BaseField"
3625              }
3626            ]
3627          },
3628          {
3629            "name": "qH4",
3630            "type": "tuple",
3631            "internalType": "struct BN254.G1Point",
3632            "components": [
3633              {
3634                "name": "x",
3635                "type": "uint256",
3636                "internalType": "BN254.BaseField"
3637              },
3638              {
3639                "name": "y",
3640                "type": "uint256",
3641                "internalType": "BN254.BaseField"
3642              }
3643            ]
3644          },
3645          {
3646            "name": "qEcc",
3647            "type": "tuple",
3648            "internalType": "struct BN254.G1Point",
3649            "components": [
3650              {
3651                "name": "x",
3652                "type": "uint256",
3653                "internalType": "BN254.BaseField"
3654              },
3655              {
3656                "name": "y",
3657                "type": "uint256",
3658                "internalType": "BN254.BaseField"
3659              }
3660            ]
3661          },
3662          {
3663            "name": "g2LSB",
3664            "type": "bytes32",
3665            "internalType": "bytes32"
3666          },
3667          {
3668            "name": "g2MSB",
3669            "type": "bytes32",
3670            "internalType": "bytes32"
3671          }
3672        ]
3673      }
3674    ],
3675    "stateMutability": "pure"
3676  },
3677  {
3678    "type": "function",
3679    "name": "currentBlockNumber",
3680    "inputs": [],
3681    "outputs": [
3682      {
3683        "name": "",
3684        "type": "uint256",
3685        "internalType": "uint256"
3686      }
3687    ],
3688    "stateMutability": "view"
3689  },
3690  {
3691    "type": "function",
3692    "name": "disablePermissionedProverMode",
3693    "inputs": [],
3694    "outputs": [],
3695    "stateMutability": "nonpayable"
3696  },
3697  {
3698    "type": "function",
3699    "name": "finalizedState",
3700    "inputs": [],
3701    "outputs": [
3702      {
3703        "name": "viewNum",
3704        "type": "uint64",
3705        "internalType": "uint64"
3706      },
3707      {
3708        "name": "blockHeight",
3709        "type": "uint64",
3710        "internalType": "uint64"
3711      },
3712      {
3713        "name": "blockCommRoot",
3714        "type": "uint256",
3715        "internalType": "BN254.ScalarField"
3716      }
3717    ],
3718    "stateMutability": "view"
3719  },
3720  {
3721    "type": "function",
3722    "name": "genesisStakeTableState",
3723    "inputs": [],
3724    "outputs": [
3725      {
3726        "name": "threshold",
3727        "type": "uint256",
3728        "internalType": "uint256"
3729      },
3730      {
3731        "name": "blsKeyComm",
3732        "type": "uint256",
3733        "internalType": "BN254.ScalarField"
3734      },
3735      {
3736        "name": "schnorrKeyComm",
3737        "type": "uint256",
3738        "internalType": "BN254.ScalarField"
3739      },
3740      {
3741        "name": "amountComm",
3742        "type": "uint256",
3743        "internalType": "BN254.ScalarField"
3744      }
3745    ],
3746    "stateMutability": "view"
3747  },
3748  {
3749    "type": "function",
3750    "name": "genesisState",
3751    "inputs": [],
3752    "outputs": [
3753      {
3754        "name": "viewNum",
3755        "type": "uint64",
3756        "internalType": "uint64"
3757      },
3758      {
3759        "name": "blockHeight",
3760        "type": "uint64",
3761        "internalType": "uint64"
3762      },
3763      {
3764        "name": "blockCommRoot",
3765        "type": "uint256",
3766        "internalType": "BN254.ScalarField"
3767      }
3768    ],
3769    "stateMutability": "view"
3770  },
3771  {
3772    "type": "function",
3773    "name": "getHotShotCommitment",
3774    "inputs": [
3775      {
3776        "name": "hotShotBlockHeight",
3777        "type": "uint256",
3778        "internalType": "uint256"
3779      }
3780    ],
3781    "outputs": [
3782      {
3783        "name": "hotShotBlockCommRoot",
3784        "type": "uint256",
3785        "internalType": "BN254.ScalarField"
3786      },
3787      {
3788        "name": "hotshotBlockHeight",
3789        "type": "uint64",
3790        "internalType": "uint64"
3791      }
3792    ],
3793    "stateMutability": "view"
3794  },
3795  {
3796    "type": "function",
3797    "name": "getStateHistoryCount",
3798    "inputs": [],
3799    "outputs": [
3800      {
3801        "name": "",
3802        "type": "uint256",
3803        "internalType": "uint256"
3804      }
3805    ],
3806    "stateMutability": "view"
3807  },
3808  {
3809    "type": "function",
3810    "name": "getVersion",
3811    "inputs": [],
3812    "outputs": [
3813      {
3814        "name": "majorVersion",
3815        "type": "uint8",
3816        "internalType": "uint8"
3817      },
3818      {
3819        "name": "minorVersion",
3820        "type": "uint8",
3821        "internalType": "uint8"
3822      },
3823      {
3824        "name": "patchVersion",
3825        "type": "uint8",
3826        "internalType": "uint8"
3827      }
3828    ],
3829    "stateMutability": "pure"
3830  },
3831  {
3832    "type": "function",
3833    "name": "initialize",
3834    "inputs": [
3835      {
3836        "name": "_genesis",
3837        "type": "tuple",
3838        "internalType": "struct LightClient.LightClientState",
3839        "components": [
3840          {
3841            "name": "viewNum",
3842            "type": "uint64",
3843            "internalType": "uint64"
3844          },
3845          {
3846            "name": "blockHeight",
3847            "type": "uint64",
3848            "internalType": "uint64"
3849          },
3850          {
3851            "name": "blockCommRoot",
3852            "type": "uint256",
3853            "internalType": "BN254.ScalarField"
3854          }
3855        ]
3856      },
3857      {
3858        "name": "_genesisStakeTableState",
3859        "type": "tuple",
3860        "internalType": "struct LightClient.StakeTableState",
3861        "components": [
3862          {
3863            "name": "threshold",
3864            "type": "uint256",
3865            "internalType": "uint256"
3866          },
3867          {
3868            "name": "blsKeyComm",
3869            "type": "uint256",
3870            "internalType": "BN254.ScalarField"
3871          },
3872          {
3873            "name": "schnorrKeyComm",
3874            "type": "uint256",
3875            "internalType": "BN254.ScalarField"
3876          },
3877          {
3878            "name": "amountComm",
3879            "type": "uint256",
3880            "internalType": "BN254.ScalarField"
3881          }
3882        ]
3883      },
3884      {
3885        "name": "_stateHistoryRetentionPeriod",
3886        "type": "uint32",
3887        "internalType": "uint32"
3888      },
3889      {
3890        "name": "owner",
3891        "type": "address",
3892        "internalType": "address"
3893      }
3894    ],
3895    "outputs": [],
3896    "stateMutability": "nonpayable"
3897  },
3898  {
3899    "type": "function",
3900    "name": "isPermissionedProverEnabled",
3901    "inputs": [],
3902    "outputs": [
3903      {
3904        "name": "",
3905        "type": "bool",
3906        "internalType": "bool"
3907      }
3908    ],
3909    "stateMutability": "view"
3910  },
3911  {
3912    "type": "function",
3913    "name": "lagOverEscapeHatchThreshold",
3914    "inputs": [
3915      {
3916        "name": "blockNumber",
3917        "type": "uint256",
3918        "internalType": "uint256"
3919      },
3920      {
3921        "name": "threshold",
3922        "type": "uint256",
3923        "internalType": "uint256"
3924      }
3925    ],
3926    "outputs": [
3927      {
3928        "name": "",
3929        "type": "bool",
3930        "internalType": "bool"
3931      }
3932    ],
3933    "stateMutability": "view"
3934  },
3935  {
3936    "type": "function",
3937    "name": "newFinalizedState",
3938    "inputs": [
3939      {
3940        "name": "newState",
3941        "type": "tuple",
3942        "internalType": "struct LightClient.LightClientState",
3943        "components": [
3944          {
3945            "name": "viewNum",
3946            "type": "uint64",
3947            "internalType": "uint64"
3948          },
3949          {
3950            "name": "blockHeight",
3951            "type": "uint64",
3952            "internalType": "uint64"
3953          },
3954          {
3955            "name": "blockCommRoot",
3956            "type": "uint256",
3957            "internalType": "BN254.ScalarField"
3958          }
3959        ]
3960      },
3961      {
3962        "name": "proof",
3963        "type": "tuple",
3964        "internalType": "struct IPlonkVerifier.PlonkProof",
3965        "components": [
3966          {
3967            "name": "wire0",
3968            "type": "tuple",
3969            "internalType": "struct BN254.G1Point",
3970            "components": [
3971              {
3972                "name": "x",
3973                "type": "uint256",
3974                "internalType": "BN254.BaseField"
3975              },
3976              {
3977                "name": "y",
3978                "type": "uint256",
3979                "internalType": "BN254.BaseField"
3980              }
3981            ]
3982          },
3983          {
3984            "name": "wire1",
3985            "type": "tuple",
3986            "internalType": "struct BN254.G1Point",
3987            "components": [
3988              {
3989                "name": "x",
3990                "type": "uint256",
3991                "internalType": "BN254.BaseField"
3992              },
3993              {
3994                "name": "y",
3995                "type": "uint256",
3996                "internalType": "BN254.BaseField"
3997              }
3998            ]
3999          },
4000          {
4001            "name": "wire2",
4002            "type": "tuple",
4003            "internalType": "struct BN254.G1Point",
4004            "components": [
4005              {
4006                "name": "x",
4007                "type": "uint256",
4008                "internalType": "BN254.BaseField"
4009              },
4010              {
4011                "name": "y",
4012                "type": "uint256",
4013                "internalType": "BN254.BaseField"
4014              }
4015            ]
4016          },
4017          {
4018            "name": "wire3",
4019            "type": "tuple",
4020            "internalType": "struct BN254.G1Point",
4021            "components": [
4022              {
4023                "name": "x",
4024                "type": "uint256",
4025                "internalType": "BN254.BaseField"
4026              },
4027              {
4028                "name": "y",
4029                "type": "uint256",
4030                "internalType": "BN254.BaseField"
4031              }
4032            ]
4033          },
4034          {
4035            "name": "wire4",
4036            "type": "tuple",
4037            "internalType": "struct BN254.G1Point",
4038            "components": [
4039              {
4040                "name": "x",
4041                "type": "uint256",
4042                "internalType": "BN254.BaseField"
4043              },
4044              {
4045                "name": "y",
4046                "type": "uint256",
4047                "internalType": "BN254.BaseField"
4048              }
4049            ]
4050          },
4051          {
4052            "name": "prodPerm",
4053            "type": "tuple",
4054            "internalType": "struct BN254.G1Point",
4055            "components": [
4056              {
4057                "name": "x",
4058                "type": "uint256",
4059                "internalType": "BN254.BaseField"
4060              },
4061              {
4062                "name": "y",
4063                "type": "uint256",
4064                "internalType": "BN254.BaseField"
4065              }
4066            ]
4067          },
4068          {
4069            "name": "split0",
4070            "type": "tuple",
4071            "internalType": "struct BN254.G1Point",
4072            "components": [
4073              {
4074                "name": "x",
4075                "type": "uint256",
4076                "internalType": "BN254.BaseField"
4077              },
4078              {
4079                "name": "y",
4080                "type": "uint256",
4081                "internalType": "BN254.BaseField"
4082              }
4083            ]
4084          },
4085          {
4086            "name": "split1",
4087            "type": "tuple",
4088            "internalType": "struct BN254.G1Point",
4089            "components": [
4090              {
4091                "name": "x",
4092                "type": "uint256",
4093                "internalType": "BN254.BaseField"
4094              },
4095              {
4096                "name": "y",
4097                "type": "uint256",
4098                "internalType": "BN254.BaseField"
4099              }
4100            ]
4101          },
4102          {
4103            "name": "split2",
4104            "type": "tuple",
4105            "internalType": "struct BN254.G1Point",
4106            "components": [
4107              {
4108                "name": "x",
4109                "type": "uint256",
4110                "internalType": "BN254.BaseField"
4111              },
4112              {
4113                "name": "y",
4114                "type": "uint256",
4115                "internalType": "BN254.BaseField"
4116              }
4117            ]
4118          },
4119          {
4120            "name": "split3",
4121            "type": "tuple",
4122            "internalType": "struct BN254.G1Point",
4123            "components": [
4124              {
4125                "name": "x",
4126                "type": "uint256",
4127                "internalType": "BN254.BaseField"
4128              },
4129              {
4130                "name": "y",
4131                "type": "uint256",
4132                "internalType": "BN254.BaseField"
4133              }
4134            ]
4135          },
4136          {
4137            "name": "split4",
4138            "type": "tuple",
4139            "internalType": "struct BN254.G1Point",
4140            "components": [
4141              {
4142                "name": "x",
4143                "type": "uint256",
4144                "internalType": "BN254.BaseField"
4145              },
4146              {
4147                "name": "y",
4148                "type": "uint256",
4149                "internalType": "BN254.BaseField"
4150              }
4151            ]
4152          },
4153          {
4154            "name": "zeta",
4155            "type": "tuple",
4156            "internalType": "struct BN254.G1Point",
4157            "components": [
4158              {
4159                "name": "x",
4160                "type": "uint256",
4161                "internalType": "BN254.BaseField"
4162              },
4163              {
4164                "name": "y",
4165                "type": "uint256",
4166                "internalType": "BN254.BaseField"
4167              }
4168            ]
4169          },
4170          {
4171            "name": "zetaOmega",
4172            "type": "tuple",
4173            "internalType": "struct BN254.G1Point",
4174            "components": [
4175              {
4176                "name": "x",
4177                "type": "uint256",
4178                "internalType": "BN254.BaseField"
4179              },
4180              {
4181                "name": "y",
4182                "type": "uint256",
4183                "internalType": "BN254.BaseField"
4184              }
4185            ]
4186          },
4187          {
4188            "name": "wireEval0",
4189            "type": "uint256",
4190            "internalType": "BN254.ScalarField"
4191          },
4192          {
4193            "name": "wireEval1",
4194            "type": "uint256",
4195            "internalType": "BN254.ScalarField"
4196          },
4197          {
4198            "name": "wireEval2",
4199            "type": "uint256",
4200            "internalType": "BN254.ScalarField"
4201          },
4202          {
4203            "name": "wireEval3",
4204            "type": "uint256",
4205            "internalType": "BN254.ScalarField"
4206          },
4207          {
4208            "name": "wireEval4",
4209            "type": "uint256",
4210            "internalType": "BN254.ScalarField"
4211          },
4212          {
4213            "name": "sigmaEval0",
4214            "type": "uint256",
4215            "internalType": "BN254.ScalarField"
4216          },
4217          {
4218            "name": "sigmaEval1",
4219            "type": "uint256",
4220            "internalType": "BN254.ScalarField"
4221          },
4222          {
4223            "name": "sigmaEval2",
4224            "type": "uint256",
4225            "internalType": "BN254.ScalarField"
4226          },
4227          {
4228            "name": "sigmaEval3",
4229            "type": "uint256",
4230            "internalType": "BN254.ScalarField"
4231          },
4232          {
4233            "name": "prodPermZetaOmegaEval",
4234            "type": "uint256",
4235            "internalType": "BN254.ScalarField"
4236          }
4237        ]
4238      }
4239    ],
4240    "outputs": [],
4241    "stateMutability": "nonpayable"
4242  },
4243  {
4244    "type": "function",
4245    "name": "owner",
4246    "inputs": [],
4247    "outputs": [
4248      {
4249        "name": "",
4250        "type": "address",
4251        "internalType": "address"
4252      }
4253    ],
4254    "stateMutability": "view"
4255  },
4256  {
4257    "type": "function",
4258    "name": "permissionedProver",
4259    "inputs": [],
4260    "outputs": [
4261      {
4262        "name": "",
4263        "type": "address",
4264        "internalType": "address"
4265      }
4266    ],
4267    "stateMutability": "view"
4268  },
4269  {
4270    "type": "function",
4271    "name": "proxiableUUID",
4272    "inputs": [],
4273    "outputs": [
4274      {
4275        "name": "",
4276        "type": "bytes32",
4277        "internalType": "bytes32"
4278      }
4279    ],
4280    "stateMutability": "view"
4281  },
4282  {
4283    "type": "function",
4284    "name": "renounceOwnership",
4285    "inputs": [],
4286    "outputs": [],
4287    "stateMutability": "nonpayable"
4288  },
4289  {
4290    "type": "function",
4291    "name": "setFinalizedState",
4292    "inputs": [
4293      {
4294        "name": "state",
4295        "type": "tuple",
4296        "internalType": "struct LightClient.LightClientState",
4297        "components": [
4298          {
4299            "name": "viewNum",
4300            "type": "uint64",
4301            "internalType": "uint64"
4302          },
4303          {
4304            "name": "blockHeight",
4305            "type": "uint64",
4306            "internalType": "uint64"
4307          },
4308          {
4309            "name": "blockCommRoot",
4310            "type": "uint256",
4311            "internalType": "BN254.ScalarField"
4312          }
4313        ]
4314      }
4315    ],
4316    "outputs": [],
4317    "stateMutability": "nonpayable"
4318  },
4319  {
4320    "type": "function",
4321    "name": "setHotShotDownSince",
4322    "inputs": [
4323      {
4324        "name": "l1Height",
4325        "type": "uint256",
4326        "internalType": "uint256"
4327      }
4328    ],
4329    "outputs": [],
4330    "stateMutability": "nonpayable"
4331  },
4332  {
4333    "type": "function",
4334    "name": "setHotShotUp",
4335    "inputs": [],
4336    "outputs": [],
4337    "stateMutability": "nonpayable"
4338  },
4339  {
4340    "type": "function",
4341    "name": "setPermissionedProver",
4342    "inputs": [
4343      {
4344        "name": "prover",
4345        "type": "address",
4346        "internalType": "address"
4347      }
4348    ],
4349    "outputs": [],
4350    "stateMutability": "nonpayable"
4351  },
4352  {
4353    "type": "function",
4354    "name": "setStateHistory",
4355    "inputs": [
4356      {
4357        "name": "_stateHistoryCommitments",
4358        "type": "tuple[]",
4359        "internalType": "struct LightClient.StateHistoryCommitment[]",
4360        "components": [
4361          {
4362            "name": "l1BlockHeight",
4363            "type": "uint64",
4364            "internalType": "uint64"
4365          },
4366          {
4367            "name": "l1BlockTimestamp",
4368            "type": "uint64",
4369            "internalType": "uint64"
4370          },
4371          {
4372            "name": "hotShotBlockHeight",
4373            "type": "uint64",
4374            "internalType": "uint64"
4375          },
4376          {
4377            "name": "hotShotBlockCommRoot",
4378            "type": "uint256",
4379            "internalType": "BN254.ScalarField"
4380          }
4381        ]
4382      }
4383    ],
4384    "outputs": [],
4385    "stateMutability": "nonpayable"
4386  },
4387  {
4388    "type": "function",
4389    "name": "setstateHistoryRetentionPeriod",
4390    "inputs": [
4391      {
4392        "name": "historySeconds",
4393        "type": "uint32",
4394        "internalType": "uint32"
4395      }
4396    ],
4397    "outputs": [],
4398    "stateMutability": "nonpayable"
4399  },
4400  {
4401    "type": "function",
4402    "name": "stateHistoryCommitments",
4403    "inputs": [
4404      {
4405        "name": "",
4406        "type": "uint256",
4407        "internalType": "uint256"
4408      }
4409    ],
4410    "outputs": [
4411      {
4412        "name": "l1BlockHeight",
4413        "type": "uint64",
4414        "internalType": "uint64"
4415      },
4416      {
4417        "name": "l1BlockTimestamp",
4418        "type": "uint64",
4419        "internalType": "uint64"
4420      },
4421      {
4422        "name": "hotShotBlockHeight",
4423        "type": "uint64",
4424        "internalType": "uint64"
4425      },
4426      {
4427        "name": "hotShotBlockCommRoot",
4428        "type": "uint256",
4429        "internalType": "BN254.ScalarField"
4430      }
4431    ],
4432    "stateMutability": "view"
4433  },
4434  {
4435    "type": "function",
4436    "name": "stateHistoryFirstIndex",
4437    "inputs": [],
4438    "outputs": [
4439      {
4440        "name": "",
4441        "type": "uint64",
4442        "internalType": "uint64"
4443      }
4444    ],
4445    "stateMutability": "view"
4446  },
4447  {
4448    "type": "function",
4449    "name": "stateHistoryRetentionPeriod",
4450    "inputs": [],
4451    "outputs": [
4452      {
4453        "name": "",
4454        "type": "uint32",
4455        "internalType": "uint32"
4456      }
4457    ],
4458    "stateMutability": "view"
4459  },
4460  {
4461    "type": "function",
4462    "name": "transferOwnership",
4463    "inputs": [
4464      {
4465        "name": "newOwner",
4466        "type": "address",
4467        "internalType": "address"
4468      }
4469    ],
4470    "outputs": [],
4471    "stateMutability": "nonpayable"
4472  },
4473  {
4474    "type": "function",
4475    "name": "upgradeToAndCall",
4476    "inputs": [
4477      {
4478        "name": "newImplementation",
4479        "type": "address",
4480        "internalType": "address"
4481      },
4482      {
4483        "name": "data",
4484        "type": "bytes",
4485        "internalType": "bytes"
4486      }
4487    ],
4488    "outputs": [],
4489    "stateMutability": "payable"
4490  },
4491  {
4492    "type": "event",
4493    "name": "Initialized",
4494    "inputs": [
4495      {
4496        "name": "version",
4497        "type": "uint64",
4498        "indexed": false,
4499        "internalType": "uint64"
4500      }
4501    ],
4502    "anonymous": false
4503  },
4504  {
4505    "type": "event",
4506    "name": "NewState",
4507    "inputs": [
4508      {
4509        "name": "viewNum",
4510        "type": "uint64",
4511        "indexed": true,
4512        "internalType": "uint64"
4513      },
4514      {
4515        "name": "blockHeight",
4516        "type": "uint64",
4517        "indexed": true,
4518        "internalType": "uint64"
4519      },
4520      {
4521        "name": "blockCommRoot",
4522        "type": "uint256",
4523        "indexed": false,
4524        "internalType": "BN254.ScalarField"
4525      }
4526    ],
4527    "anonymous": false
4528  },
4529  {
4530    "type": "event",
4531    "name": "OwnershipTransferred",
4532    "inputs": [
4533      {
4534        "name": "previousOwner",
4535        "type": "address",
4536        "indexed": true,
4537        "internalType": "address"
4538      },
4539      {
4540        "name": "newOwner",
4541        "type": "address",
4542        "indexed": true,
4543        "internalType": "address"
4544      }
4545    ],
4546    "anonymous": false
4547  },
4548  {
4549    "type": "event",
4550    "name": "PermissionedProverNotRequired",
4551    "inputs": [],
4552    "anonymous": false
4553  },
4554  {
4555    "type": "event",
4556    "name": "PermissionedProverRequired",
4557    "inputs": [
4558      {
4559        "name": "permissionedProver",
4560        "type": "address",
4561        "indexed": false,
4562        "internalType": "address"
4563      }
4564    ],
4565    "anonymous": false
4566  },
4567  {
4568    "type": "event",
4569    "name": "Upgrade",
4570    "inputs": [
4571      {
4572        "name": "implementation",
4573        "type": "address",
4574        "indexed": false,
4575        "internalType": "address"
4576      }
4577    ],
4578    "anonymous": false
4579  },
4580  {
4581    "type": "event",
4582    "name": "Upgraded",
4583    "inputs": [
4584      {
4585        "name": "implementation",
4586        "type": "address",
4587        "indexed": true,
4588        "internalType": "address"
4589      }
4590    ],
4591    "anonymous": false
4592  },
4593  {
4594    "type": "error",
4595    "name": "AddressEmptyCode",
4596    "inputs": [
4597      {
4598        "name": "target",
4599        "type": "address",
4600        "internalType": "address"
4601      }
4602    ]
4603  },
4604  {
4605    "type": "error",
4606    "name": "ERC1967InvalidImplementation",
4607    "inputs": [
4608      {
4609        "name": "implementation",
4610        "type": "address",
4611        "internalType": "address"
4612      }
4613    ]
4614  },
4615  {
4616    "type": "error",
4617    "name": "ERC1967NonPayable",
4618    "inputs": []
4619  },
4620  {
4621    "type": "error",
4622    "name": "FailedInnerCall",
4623    "inputs": []
4624  },
4625  {
4626    "type": "error",
4627    "name": "InsufficientSnapshotHistory",
4628    "inputs": []
4629  },
4630  {
4631    "type": "error",
4632    "name": "InvalidAddress",
4633    "inputs": []
4634  },
4635  {
4636    "type": "error",
4637    "name": "InvalidArgs",
4638    "inputs": []
4639  },
4640  {
4641    "type": "error",
4642    "name": "InvalidHotShotBlockForCommitmentCheck",
4643    "inputs": []
4644  },
4645  {
4646    "type": "error",
4647    "name": "InvalidInitialization",
4648    "inputs": []
4649  },
4650  {
4651    "type": "error",
4652    "name": "InvalidMaxStateHistory",
4653    "inputs": []
4654  },
4655  {
4656    "type": "error",
4657    "name": "InvalidProof",
4658    "inputs": []
4659  },
4660  {
4661    "type": "error",
4662    "name": "InvalidScalar",
4663    "inputs": []
4664  },
4665  {
4666    "type": "error",
4667    "name": "NoChangeRequired",
4668    "inputs": []
4669  },
4670  {
4671    "type": "error",
4672    "name": "NotInitializing",
4673    "inputs": []
4674  },
4675  {
4676    "type": "error",
4677    "name": "OutdatedState",
4678    "inputs": []
4679  },
4680  {
4681    "type": "error",
4682    "name": "OwnableInvalidOwner",
4683    "inputs": [
4684      {
4685        "name": "owner",
4686        "type": "address",
4687        "internalType": "address"
4688      }
4689    ]
4690  },
4691  {
4692    "type": "error",
4693    "name": "OwnableUnauthorizedAccount",
4694    "inputs": [
4695      {
4696        "name": "account",
4697        "type": "address",
4698        "internalType": "address"
4699      }
4700    ]
4701  },
4702  {
4703    "type": "error",
4704    "name": "OwnershipCannotBeRenounced",
4705    "inputs": []
4706  },
4707  {
4708    "type": "error",
4709    "name": "ProverNotPermissioned",
4710    "inputs": []
4711  },
4712  {
4713    "type": "error",
4714    "name": "UUPSUnauthorizedCallContext",
4715    "inputs": []
4716  },
4717  {
4718    "type": "error",
4719    "name": "UUPSUnsupportedProxiableUUID",
4720    "inputs": [
4721      {
4722        "name": "slot",
4723        "type": "bytes32",
4724        "internalType": "bytes32"
4725      }
4726    ]
4727  },
4728  {
4729    "type": "error",
4730    "name": "WrongStakeTableUsed",
4731    "inputs": []
4732  }
4733]
4734```*/
4735#[allow(
4736    non_camel_case_types,
4737    non_snake_case,
4738    clippy::pub_underscore_fields,
4739    clippy::style,
4740    clippy::empty_structs_with_brackets
4741)]
4742pub mod LightClientMock {
4743    use super::*;
4744    use alloy::sol_types as alloy_sol_types;
4745    /// The creation / init bytecode of the contract.
4746    ///
4747    /// ```text
4748    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612e8c6100f95f395f8181611791015281816117ba01526119370152612e8c5ff3fe6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612189565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a2565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b9565b348015610293575f5ffd5b506101dd6102a2366004612510565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a2565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126c0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a2565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612776565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278f565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612817565b348015610572575f5ffd5b506101dd61058136600461284c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612866565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612189565b610cf0565b348015610689575f5ffd5b506101dd610698366004612886565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e605f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612992565b81548110610a0957610a096129a5565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a5565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a5565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a5565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612992565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a5565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612127565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b95565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db5565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a5565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd4565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a5565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1d565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e605f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a5565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612992565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a5565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a5565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e34565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612992565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e49565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d2f9190612145565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561216a5780546001600160c01b03191681555f6001820155600201612146565b5090565b80356001600160a01b0381168114612184575f5ffd5b919050565b5f60208284031215612199575f5ffd5b610ce78261216e565b5f602082840312156121b2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121eb604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123f1576123f16123ba565b60405290565b604051608081016001600160401b03811182821017156123f1576123f16123ba565b604051601f8201601f191681016001600160401b0381118282101715612441576124416123ba565b604052919050565b80356001600160401b0381168114612184575f5ffd5b5f6060828403121561246f575f5ffd5b604051606081016001600160401b0381118282101715612491576124916123ba565b6040529050806124a083612449565b81526124ae60208401612449565b6020820152604092830135920191909152919050565b5f604082840312156124d4575f5ffd5b604080519081016001600160401b03811182821017156124f6576124f66123ba565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612523575f5ffd5b61252d858561245f565b9250610480605f1982011215612541575f5ffd5b5061254a6123ce565b61255785606086016124c4565b81526125668560a086016124c4565b60208201526125788560e086016124c4565b604082015261258b8561012086016124c4565b606082015261259e8561016086016124c4565b60808201526125b1856101a086016124c4565b60a08201526125c4856101e086016124c4565b60c08201526125d78561022086016124c4565b60e08201526125ea8561026086016124c4565b6101008201526125fe856102a086016124c4565b610120820152612612856102e086016124c4565b6101408201526126268561032086016124c4565b61016082015261263a8561036086016124c4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126d1575f5ffd5b6126da8361216e565b915060208301356001600160401b038111156126f4575f5ffd5b8301601f81018513612704575f5ffd5b80356001600160401b0381111561271d5761271d6123ba565b612730601f8201601f1916602001612419565b818152866020838501011115612744575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612184575f5ffd5b5f60208284031215612786575f5ffd5b610ce782612763565b5f5f5f5f8486036101208112156127a4575f5ffd5b6127ae878761245f565b94506080605f19820112156127c1575f5ffd5b506127ca6123f7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fd60e08601612763565b915061280c610100860161216e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285c575f5ffd5b610ce7838361245f565b5f5f60408385031215612877575f5ffd5b50508035926020909101359150565b5f60208284031215612896575f5ffd5b81356001600160401b038111156128ab575f5ffd5b8201601f810184136128bb575f5ffd5b80356001600160401b038111156128d4576128d46123ba565b6128e360208260051b01612419565b8082825260208201915060208360071b850101925086831115612904575f5ffd5b6020840193505b828410156129745760808488031215612922575f5ffd5b61292a6123f7565b61293385612449565b815261294160208601612449565b602082015261295260408601612449565b604082015260608581013590820152825260809093019260209091019061290b565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129bc565b6129f082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9f6105008301856129b9565b612dad6105e08301846129db565b949350505050565b5f60208284031215612dc5575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297e565b5f6001600160401b0382166001600160401b038103612e1457612e1461297e565b60010192915050565b5f60208284031215612e2d575f5ffd5b5051919050565b5f81612e4257612e4261297e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4749    /// ```
4750    #[rustfmt::skip]
4751    #[allow(clippy::all)]
4752    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4753        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[`\x80Qa.\x8Ca\0\xF9_9_\x81\x81a\x17\x91\x01R\x81\x81a\x17\xBA\x01Ra\x197\x01Ra.\x8C_\xF3\xFE`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x89V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA2V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x10V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA2V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xC0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA2V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'vV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8FV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x17V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(LV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(fV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x89V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x86V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@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\x0FW`@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\x07sW_\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\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.`_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x92V[\x81T\x81\x10a\n\tWa\n\ta)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@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\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA5V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA5V[\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\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@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\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@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\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x92V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\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\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!'V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x95V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB5V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\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\x15\xDDWa\x15\xDDa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA5V[_\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\x16\x7F\x83a-\xF3V[\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[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\x18\x0CWP\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\x18\0_Q` a.`_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@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\x07YV[\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\x18\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1DV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x92V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.4V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x92V[\x11\x97\x96PPPPPPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1C\x8B\x82a\x1D(V[`@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\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_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\x1D\xA7\x91\x90a.IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\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\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r/\x91\x90a!EV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!jW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!FV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x99W__\xFD[a\x0C\xE7\x82a!nV[_` \x82\x84\x03\x12\x15a!\xB2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xEB`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$AWa$Aa#\xBAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[_``\x82\x84\x03\x12\x15a$oW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x91Wa$\x91a#\xBAV[`@R\x90P\x80a$\xA0\x83a$IV[\x81Ra$\xAE` \x84\x01a$IV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF6Wa$\xF6a#\xBAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%#W__\xFD[a%-\x85\x85a$_V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%AW__\xFD[Pa%Ja#\xCEV[a%W\x85``\x86\x01a$\xC4V[\x81Ra%f\x85`\xA0\x86\x01a$\xC4V[` \x82\x01Ra%x\x85`\xE0\x86\x01a$\xC4V[`@\x82\x01Ra%\x8B\x85a\x01 \x86\x01a$\xC4V[``\x82\x01Ra%\x9E\x85a\x01`\x86\x01a$\xC4V[`\x80\x82\x01Ra%\xB1\x85a\x01\xA0\x86\x01a$\xC4V[`\xA0\x82\x01Ra%\xC4\x85a\x01\xE0\x86\x01a$\xC4V[`\xC0\x82\x01Ra%\xD7\x85a\x02 \x86\x01a$\xC4V[`\xE0\x82\x01Ra%\xEA\x85a\x02`\x86\x01a$\xC4V[a\x01\0\x82\x01Ra%\xFE\x85a\x02\xA0\x86\x01a$\xC4V[a\x01 \x82\x01Ra&\x12\x85a\x02\xE0\x86\x01a$\xC4V[a\x01@\x82\x01Ra&&\x85a\x03 \x86\x01a$\xC4V[a\x01`\x82\x01Ra&:\x85a\x03`\x86\x01a$\xC4V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xD1W__\xFD[a&\xDA\x83a!nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x04W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1DWa'\x1Da#\xBAV[a'0`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x19V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x84W__\xFD[_` \x82\x84\x03\x12\x15a'\x86W__\xFD[a\x0C\xE7\x82a'cV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA4W__\xFD[a'\xAE\x87\x87a$_V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xC1W__\xFD[Pa'\xCAa#\xF7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFD`\xE0\x86\x01a'cV[\x91Pa(\x0Ca\x01\0\x86\x01a!nV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(\\W__\xFD[a\x0C\xE7\x83\x83a$_V[__`@\x83\x85\x03\x12\x15a(wW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xABW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xBBW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD4Wa(\xD4a#\xBAV[a(\xE3` \x82`\x05\x1B\x01a$\x19V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x04W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)tW`\x80\x84\x88\x03\x12\x15a)\"W__\xFD[a)*a#\xF7V[a)3\x85a$IV[\x81Ra)A` \x86\x01a$IV[` \x82\x01Ra)R`@\x86\x01a$IV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\x0BV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBCV[a)\xF0\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`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xC7`@\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\x01Ra-\x9Fa\x05\0\x83\x01\x85a)\xB9V[a-\xADa\x05\xE0\x83\x01\x84a)\xDBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x14Wa.\x14a)~V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.-W__\xFD[PQ\x91\x90PV[_\x81a.BWa.Ba)~V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4754    );
4755    /// The runtime bytecode of the contract, as deployed on the network.
4756    ///
4757    /// ```text
4758    ///0x6080604052600436106101ba575f3560e01c8063826e41fc116100f2578063b5adea3c11610092578063e030330111610062578063e030330114610640578063f2fde38b1461065f578063f56761601461067e578063f9e50d191461069d575f5ffd5b8063b5adea3c14610567578063c23b9e9e146105be578063c8e5e498146105f6578063d24d933d14610611575f5ffd5b806396c1ca61116100cd57806396c1ca61146104975780639baa3cc9146104b65780639fdb54a7146104d5578063ad3cb1cc1461052a575f5ffd5b8063826e41fc146103f45780638584d23f1461041f5780638da5cb5b1461045b575f5ffd5b8063313df7b11161015d5780634f1ef286116101385780634f1ef286146103a557806352d1902d146103b857806369cc6a04146103cc578063715018a6146103e0575f5ffd5b8063313df7b114610311578063378ec23b14610348578063426d319414610364575f5ffd5b806312173c2c1161019857806312173c2c146102675780632063d4f7146102885780632d52aad6146102a75780632f79889d146102d3575f5ffd5b8063013fa5fc146101be57806302b592f3146101df5780630d8e6e2c1461023c575b5f5ffd5b3480156101c9575f5ffd5b506101dd6101d8366004612189565b6106b1565b005b3480156101ea575f5ffd5b506101fe6101f93660046121a2565b610764565b60405161023394939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b348015610247575f5ffd5b5060408051600181525f6020820181905291810191909152606001610233565b348015610272575f5ffd5b5061027b6107ad565b60405161023391906121b9565b348015610293575f5ffd5b506101dd6102a2366004612510565b6107c2565b3480156102b2575f5ffd5b506101dd6102c13660046121a2565b600a805460ff19166001179055600b55565b3480156102de575f5ffd5b506008546102f990600160c01b90046001600160401b031681565b6040516001600160401b039091168152602001610233565b34801561031c575f5ffd5b50600854610330906001600160a01b031681565b6040516001600160a01b039091168152602001610233565b348015610353575f5ffd5b50435b604051908152602001610233565b34801561036f575f5ffd5b505f546001546002546003546103859392919084565b604080519485526020850193909352918301526060820152608001610233565b6101dd6103b33660046126c0565b61091c565b3480156103c3575f5ffd5b5061035661093b565b3480156103d7575f5ffd5b506101dd610956565b3480156103eb575f5ffd5b506101dd6109c4565b3480156103ff575f5ffd5b506008546001600160a01b031615155b6040519015158152602001610233565b34801561042a575f5ffd5b5061043e6104393660046121a2565b6109e5565b604080519283526001600160401b03909116602083015201610233565b348015610466575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b0316610330565b3480156104a2575f5ffd5b506101dd6104b1366004612776565b610b10565b3480156104c1575f5ffd5b506101dd6104d036600461278f565b610b99565b3480156104e0575f5ffd5b50600654600754610504916001600160401b0380821692600160401b909204169083565b604080516001600160401b03948516815293909216602084015290820152606001610233565b348015610535575f5ffd5b5061055a604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516102339190612817565b348015610572575f5ffd5b506101dd61058136600461284c565b80516006805460208401516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560400151600755565b3480156105c9575f5ffd5b506008546105e190600160a01b900463ffffffff1681565b60405163ffffffff9091168152602001610233565b348015610601575f5ffd5b506101dd600a805460ff19169055565b34801561061c575f5ffd5b50600454600554610504916001600160401b0380821692600160401b909204169083565b34801561064b575f5ffd5b5061040f61065a366004612866565b610cbb565b34801561066a575f5ffd5b506101dd610679366004612189565b610cf0565b348015610689575f5ffd5b506101dd610698366004612886565b610d32565b3480156106a8575f5ffd5b50600954610356565b6106b9610ddd565b6001600160a01b0381166106e05760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b039081169082160361070f5760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b60098181548110610773575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b6107b5611ea4565b6107bd610e38565b905090565b6008546001600160a01b0316151580156107e757506008546001600160a01b03163314155b15610805576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b03918216911611158061083e575060065460208301516001600160401b03600160401b9092048216911611155b1561085c5760405163051c46ef60e01b815260040160405180910390fd5b6108698260400151611468565b61087382826114a9565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556108c06108b94390565b428461159d565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6846040015160405161091091815260200190565b60405180910390a35050565b610924611786565b61092d8261182a565b610937828261186b565b5050565b5f61094461192c565b505f516020612e605f395f51905f5290565b61095e610ddd565b6008546001600160a01b0316156109a957600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6109cc610ddd565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906109f9600183612992565b81548110610a0957610a096129a5565b5f918252602090912060029091020154600160801b90046001600160401b03168410610a4857604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b81811015610b09578460098281548110610a7857610a786129a5565b5f918252602090912060029091020154600160801b90046001600160401b03161115610b015760098181548110610ab157610ab16129a5565b905f5260205f2090600202016001015460098281548110610ad457610ad46129a5565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610a5c565b5050915091565b610b18610ddd565b610e108163ffffffff161080610b3757506301e133808163ffffffff16115b80610b55575060085463ffffffff600160a01b909104811690821611155b15610b73576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610bdd5750825b90505f826001600160401b03166001148015610bf85750303b155b905081158015610c06575080155b15610c245760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610c4e57845460ff60401b1916600160401b1785555b610c5786611975565b610c5f611986565b610c6a89898961198e565b8315610cb057845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b600a545f9060ff16610cd657610cd18383611aba565b610ce7565b81600b5484610ce59190612992565b115b90505b92915050565b610cf8610ddd565b6001600160a01b038116610d2657604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d2f81611c12565b50565b610d3d60095f612109565b5f5b8151811015610937576009828281518110610d5c57610d5c6129a5565b6020908102919091018101518254600181810185555f94855293839020825160029092020180549383015160408401516001600160401b03908116600160801b0267ffffffffffffffff60801b19928216600160401b026001600160801b031990971691909416179490941793909316178255606001519082015501610d3f565b33610e0f7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146109c25760405163118cdaa760e01b8152336004820152602401610d1d565b610e40611ea4565b620100008152600760208201527f1369aa78dc50135ad756d62c97a64a0edcd30066584168200d9d1facf82ca4f56040820151527f2cf23456d712b06f8e3aa5bf0acc3e46a3d094602a3a2b99d873bba05a4391476020604083015101527f08a35f379d2d2c490a51006697275e4db79b67b4a175c1477e262d29e25e42316060820151527f218828131bb7940ccc88c561b299755af4bf0b71ed930b129e8be0a1218139ea6020606083015101527f23a2172436c1145b36d5bc6d3b31fa1610c73a543ea443918aaa3ee175f9921b6080820151527f2502adf404d62877c310214ae9942e93c40b154d34c024bab48a3ca057e60a116020608083015101527f1bb88ada91ab7734882f7826b81275320081ac485f9cf8bfbc3ba54b6eb4dff360a0820151527f25c74a27e9a3b20114a3a91f31c20f01777e7ed913e0ef949f0285e2e7c2069b602060a083015101527f12b0ce76ac8b0dbd405ebc5dd0bae0f91aed50033c7ea36fc62aaba2b98333dc60c0820151527f185b42af49dd1cbe337a84f74b704172428e754a0bea024ab3eb2f996afb2c47602060c083015101527f21f53ad4538b45438bbf0521446070223920e3df6f9022a64cc16d7f94e85c0860e0820151527f2278ac3dedfdac7feb9725a022497175518eada52c8932fc40e6e75bea889fb8602060e083015101527f0876136f81c16298487bfb1be74d4a3487ec45645ab1d09dc2e5b865d62230df610100820151527f098c641c947ecd798dfd5e1b2fe428024cdf03061a53ff774ea8a9e3de9d3f2b602061010083015101527f15eaac2c6232d2268bf79dc47ed9666f992fb3d96ad23fb21690c21586c5472e610120820151527f0f10f1ffc54881287fda6f200bc85d8245b508d844a974098a41119867b325d0602061012083015101527f0895ceea40b085534e9739ca5442ba48b3a3592affde2b509df74521b47d8ab0610140820151527f2e12ec5800ac92fe2a8e7040bc5b435b9eb71e31380173fa7688bf81fcbba455602061014083015101527f2f5384eb5653e47576efe248e7903f463243414bfed5237dda750df3996bd918610160820151527f1c3cd6b11da8704cdc871ab4fa323d7ee57bd40ce165b49a56d5ef6489cd251a602061016083015101527f13579994957ce1554cc1e5b194fb63c9513707f627414f8442681ae736e36450610180820151527f26c9bdcd96d8e420b12974ade93ad9c312c4185213d2f6831a7c625a18890e95602061018083015101527f0cc70a1d542a9a1535ae5d9201696adc5c99c1bcebd9951dfa8afec79fa0b6446101a0820151527f10b043d9f1869181b96579d6616efc17a5df7b84c4d431d966c9094bf1e8815360206101a083015101527f198a65309d131a43b0ab1c47659d0336cfbf62b27f4727106b4fd971c73dd4036101c0820151527f23df99eac3c1947903b211b800efeb76f47d5e87b7414866543492e8c7798d1a60206101c083015101527f221cc5e47b81ce8dcfa72ef981916a8eddef12fcde59c56c62830c126ebef0de6101e0820151527f231f99340c35c9e09652a6df73c9cec5d88738cb71ff45716fdc9e9e45a4926e60206101e083015101527f2c9f1489fce0f263e03f3e97bf0a72273aafcca9325ff47786adb04a52a6d22c610200820151527f21f66e28f17e01e9fd593e16d022c4eca25bd5db96daec606d97b604cc414838602061020083015101527f2015745604a9571e226bd99043cfaf1f96267cc5de67f497563ff81100531d26610220820151527f206889ff4c58dd08ee1107191a2a5bc5dbae55c49d7d8397801799868d10f805602061022083015101527f21062ab8f8ecd8932b429a1eb8614b1e03db61bff6a5cd2d5d7ea193e90e9927610240820151527f217f9b27b934b88ffe555d682dfe6e8b6d503f86b14bbd96342bc48487a60b27602061024083015101527f1c9eda2d195cb731f903235ead6a4f7c66db49da713ecb27afee076f0eea7154610260820151527f2647c161c00b90258e1cefebb17481f8a5d91b5f9dca626e3e89a9215bcca16a602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806109375760405163016c173360e21b815260040160405180910390fd5b5f6114b26107ad565b90506114bc612127565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061153b90859085908890600401612b95565b602060405180830381865af4158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a9190612db5565b611597576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611612575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b03169081106115dd576115dd6129a5565b5f91825260209091206002909102015461160790600160401b90046001600160401b031684612dd4565b6001600160401b0316115b156116a557600854600980549091600160c01b90046001600160401b031690811061163f5761163f6129a5565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b031690601861167f83612df3565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061180c57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166118005f516020612e605f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156109c25760405163703e46dd60e11b815260040160405180910390fd5b611832610ddd565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610759565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa9250505080156118c5575060408051601f3d908101601f191682019092526118c291810190612e1d565b60015b6118ed57604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d1d565b5f516020612e605f395f51905f52811461191d57604051632a87526960e21b815260048101829052602401610d1d565b6119278383611c82565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109c25760405163703e46dd60e11b815260040160405180910390fd5b61197d611cd7565b610d2f81611d20565b6109c2611cd7565b82516001600160401b03161515806119b2575060208301516001600160401b031615155b806119bf57506020820151155b806119cc57506040820151155b806119d957506060820151155b806119e357508151155b806119f55750610e108163ffffffff16105b80611a0957506301e133808163ffffffff16115b15611a27576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b6009545f9043841180611acb575080155b80611b155750600854600980549091600160c01b90046001600160401b0316908110611af957611af96129a5565b5f9182526020909120600290910201546001600160401b031684105b15611b335760405163b0b4387760e01b815260040160405180910390fd5b5f8080611b41600185612992565b90505b81611bdd57600854600160c01b90046001600160401b03168110611bdd578660098281548110611b7657611b766129a5565b5f9182526020909120600290910201546001600160401b031611611bcb576001915060098181548110611bab57611bab6129a5565b5f9182526020909120600290910201546001600160401b03169250611bdd565b80611bd581612e34565b915050611b44565b81611bfb5760405163b0b4387760e01b815260040160405180910390fd5b85611c068489612992565b11979650505050505050565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611c8b82611d28565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ccf576119278282611d8b565b610937611dfd565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166109c257604051631afcd79f60e31b815260040160405180910390fd5b610cf8611cd7565b806001600160a01b03163b5f03611d5d57604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d1d565b5f516020612e605f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611da79190612e49565b5f60405180830381855af49150503d805f8114611ddf576040519150601f19603f3d011682016040523d82523d5f602084013e611de4565b606091505b5091509150611df4858383611e1c565b95945050505050565b34156109c25760405163b398979f60e01b815260040160405180910390fd5b606082611e3157611e2c82611e7b565b611e74565b8151158015611e4857506001600160a01b0384163b155b15611e7157604051639996b31560e01b81526001600160a01b0385166004820152602401610d1d565b50805b9392505050565b805115611e8b5780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ed760405180604001604052805f81526020015f81525090565b8152602001611ef760405180604001604052805f81526020015f81525090565b8152602001611f1760405180604001604052805f81526020015f81525090565b8152602001611f3760405180604001604052805f81526020015f81525090565b8152602001611f5760405180604001604052805f81526020015f81525090565b8152602001611f7760405180604001604052805f81526020015f81525090565b8152602001611f9760405180604001604052805f81526020015f81525090565b8152602001611fb760405180604001604052805f81526020015f81525090565b8152602001611fd760405180604001604052805f81526020015f81525090565b8152602001611ff760405180604001604052805f81526020015f81525090565b815260200161201760405180604001604052805f81526020015f81525090565b815260200161203760405180604001604052805f81526020015f81525090565b815260200161205760405180604001604052805f81526020015f81525090565b815260200161207760405180604001604052805f81526020015f81525090565b815260200161209760405180604001604052805f81526020015f81525090565b81526020016120b760405180604001604052805f81526020015f81525090565b81526020016120d760405180604001604052805f81526020015f81525090565b81526020016120f760405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b5080545f8255600202905f5260205f2090810190610d2f9190612145565b6040518060e001604052806007906020820280368337509192915050565b5b8082111561216a5780546001600160c01b03191681555f6001820155600201612146565b5090565b80356001600160a01b0381168114612184575f5ffd5b919050565b5f60208284031215612199575f5ffd5b610ce78261216e565b5f602082840312156121b2575f5ffd5b5035919050565b5f61050082019050825182526020830151602083015260408301516121eb604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156123f1576123f16123ba565b60405290565b604051608081016001600160401b03811182821017156123f1576123f16123ba565b604051601f8201601f191681016001600160401b0381118282101715612441576124416123ba565b604052919050565b80356001600160401b0381168114612184575f5ffd5b5f6060828403121561246f575f5ffd5b604051606081016001600160401b0381118282101715612491576124916123ba565b6040529050806124a083612449565b81526124ae60208401612449565b6020820152604092830135920191909152919050565b5f604082840312156124d4575f5ffd5b604080519081016001600160401b03811182821017156124f6576124f66123ba565b604052823581526020928301359281019290925250919050565b5f5f8284036104e0811215612523575f5ffd5b61252d858561245f565b9250610480605f1982011215612541575f5ffd5b5061254a6123ce565b61255785606086016124c4565b81526125668560a086016124c4565b60208201526125788560e086016124c4565b604082015261258b8561012086016124c4565b606082015261259e8561016086016124c4565b60808201526125b1856101a086016124c4565b60a08201526125c4856101e086016124c4565b60c08201526125d78561022086016124c4565b60e08201526125ea8561026086016124c4565b6101008201526125fe856102a086016124c4565b610120820152612612856102e086016124c4565b6101408201526126268561032086016124c4565b61016082015261263a8561036086016124c4565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f604083850312156126d1575f5ffd5b6126da8361216e565b915060208301356001600160401b038111156126f4575f5ffd5b8301601f81018513612704575f5ffd5b80356001600160401b0381111561271d5761271d6123ba565b612730601f8201601f1916602001612419565b818152866020838501011115612744575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114612184575f5ffd5b5f60208284031215612786575f5ffd5b610ce782612763565b5f5f5f5f8486036101208112156127a4575f5ffd5b6127ae878761245f565b94506080605f19820112156127c1575f5ffd5b506127ca6123f7565b60608681013582526080870135602083015260a0870135604083015260c08701359082015292506127fd60e08601612763565b915061280c610100860161216e565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f6060828403121561285c575f5ffd5b610ce7838361245f565b5f5f60408385031215612877575f5ffd5b50508035926020909101359150565b5f60208284031215612896575f5ffd5b81356001600160401b038111156128ab575f5ffd5b8201601f810184136128bb575f5ffd5b80356001600160401b038111156128d4576128d46123ba565b6128e360208260051b01612419565b8082825260208201915060208360071b850101925086831115612904575f5ffd5b6020840193505b828410156129745760808488031215612922575f5ffd5b61292a6123f7565b61293385612449565b815261294160208601612449565b602082015261295260408601612449565b604082015260608581013590820152825260809093019260209091019061290b565b9695505050505050565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cea57610cea61297e565b634e487b7160e01b5f52603260045260245ffd5b805f5b60078110156115975781518452602093840193909101906001016129bc565b6129f082825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a608201905084518252602085015160208301526040850151612bc7604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612d9f6105008301856129b9565b612dad6105e08301846129db565b949350505050565b5f60208284031215612dc5575f5ffd5b81518015158114611e74575f5ffd5b6001600160401b038281168282160390811115610cea57610cea61297e565b5f6001600160401b0382166001600160401b038103612e1457612e1461297e565b60010192915050565b5f60208284031215612e2d575f5ffd5b5051919050565b5f81612e4257612e4261297e565b505f190190565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
4759    /// ```
4760    #[rustfmt::skip]
4761    #[allow(clippy::all)]
4762    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
4763        b"`\x80`@R`\x046\x10a\x01\xBAW_5`\xE0\x1C\x80c\x82nA\xFC\x11a\0\xF2W\x80c\xB5\xAD\xEA<\x11a\0\x92W\x80c\xE003\x01\x11a\0bW\x80c\xE003\x01\x14a\x06@W\x80c\xF2\xFD\xE3\x8B\x14a\x06_W\x80c\xF5ga`\x14a\x06~W\x80c\xF9\xE5\r\x19\x14a\x06\x9DW__\xFD[\x80c\xB5\xAD\xEA<\x14a\x05gW\x80c\xC2;\x9E\x9E\x14a\x05\xBEW\x80c\xC8\xE5\xE4\x98\x14a\x05\xF6W\x80c\xD2M\x93=\x14a\x06\x11W__\xFD[\x80c\x96\xC1\xCAa\x11a\0\xCDW\x80c\x96\xC1\xCAa\x14a\x04\x97W\x80c\x9B\xAA<\xC9\x14a\x04\xB6W\x80c\x9F\xDBT\xA7\x14a\x04\xD5W\x80c\xAD<\xB1\xCC\x14a\x05*W__\xFD[\x80c\x82nA\xFC\x14a\x03\xF4W\x80c\x85\x84\xD2?\x14a\x04\x1FW\x80c\x8D\xA5\xCB[\x14a\x04[W__\xFD[\x80c1=\xF7\xB1\x11a\x01]W\x80cO\x1E\xF2\x86\x11a\x018W\x80cO\x1E\xF2\x86\x14a\x03\xA5W\x80cR\xD1\x90-\x14a\x03\xB8W\x80ci\xCCj\x04\x14a\x03\xCCW\x80cqP\x18\xA6\x14a\x03\xE0W__\xFD[\x80c1=\xF7\xB1\x14a\x03\x11W\x80c7\x8E\xC2;\x14a\x03HW\x80cBm1\x94\x14a\x03dW__\xFD[\x80c\x12\x17<,\x11a\x01\x98W\x80c\x12\x17<,\x14a\x02gW\x80c c\xD4\xF7\x14a\x02\x88W\x80c-R\xAA\xD6\x14a\x02\xA7W\x80c/y\x88\x9D\x14a\x02\xD3W__\xFD[\x80c\x01?\xA5\xFC\x14a\x01\xBEW\x80c\x02\xB5\x92\xF3\x14a\x01\xDFW\x80c\r\x8En,\x14a\x02<W[__\xFD[4\x80\x15a\x01\xC9W__\xFD[Pa\x01\xDDa\x01\xD86`\x04a!\x89V[a\x06\xB1V[\0[4\x80\x15a\x01\xEAW__\xFD[Pa\x01\xFEa\x01\xF96`\x04a!\xA2V[a\x07dV[`@Qa\x023\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\x02GW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x023V[4\x80\x15a\x02rW__\xFD[Pa\x02{a\x07\xADV[`@Qa\x023\x91\x90a!\xB9V[4\x80\x15a\x02\x93W__\xFD[Pa\x01\xDDa\x02\xA26`\x04a%\x10V[a\x07\xC2V[4\x80\x15a\x02\xB2W__\xFD[Pa\x01\xDDa\x02\xC16`\x04a!\xA2V[`\n\x80T`\xFF\x19\x16`\x01\x17\x90U`\x0BUV[4\x80\x15a\x02\xDEW__\xFD[P`\x08Ta\x02\xF9\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03\x1CW__\xFD[P`\x08Ta\x030\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x03SW__\xFD[PC[`@Q\x90\x81R` \x01a\x023V[4\x80\x15a\x03oW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\x85\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x023V[a\x01\xDDa\x03\xB36`\x04a&\xC0V[a\t\x1CV[4\x80\x15a\x03\xC3W__\xFD[Pa\x03Va\t;V[4\x80\x15a\x03\xD7W__\xFD[Pa\x01\xDDa\tVV[4\x80\x15a\x03\xEBW__\xFD[Pa\x01\xDDa\t\xC4V[4\x80\x15a\x03\xFFW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x023V[4\x80\x15a\x04*W__\xFD[Pa\x04>a\x0496`\x04a!\xA2V[a\t\xE5V[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x023V[4\x80\x15a\x04fW__\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\x030V[4\x80\x15a\x04\xA2W__\xFD[Pa\x01\xDDa\x04\xB16`\x04a'vV[a\x0B\x10V[4\x80\x15a\x04\xC1W__\xFD[Pa\x01\xDDa\x04\xD06`\x04a'\x8FV[a\x0B\x99V[4\x80\x15a\x04\xE0W__\xFD[P`\x06T`\x07Ta\x05\x04\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\x023V[4\x80\x15a\x055W__\xFD[Pa\x05Z`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x023\x91\x90a(\x17V[4\x80\x15a\x05rW__\xFD[Pa\x01\xDDa\x05\x816`\x04a(LV[\x80Q`\x06\x80T` \x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x01Q`\x07UV[4\x80\x15a\x05\xC9W__\xFD[P`\x08Ta\x05\xE1\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x023V[4\x80\x15a\x06\x01W__\xFD[Pa\x01\xDD`\n\x80T`\xFF\x19\x16\x90UV[4\x80\x15a\x06\x1CW__\xFD[P`\x04T`\x05Ta\x05\x04\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x06KW__\xFD[Pa\x04\x0Fa\x06Z6`\x04a(fV[a\x0C\xBBV[4\x80\x15a\x06jW__\xFD[Pa\x01\xDDa\x06y6`\x04a!\x89V[a\x0C\xF0V[4\x80\x15a\x06\x89W__\xFD[Pa\x01\xDDa\x06\x986`\x04a(\x86V[a\r2V[4\x80\x15a\x06\xA8W__\xFD[P`\tTa\x03VV[a\x06\xB9a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x06\xE0W`@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\x0FW`@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\x07sW_\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\x07\xB5a\x1E\xA4V[a\x07\xBDa\x0E8V[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x07\xE7WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x08\x05W`@Qc\x01GL\x8F`\xE7\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\x06T\x82Q`\x01`\x01`@\x1B\x03\x91\x82\x16\x91\x16\x11\x15\x80a\x08>WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x08\\W`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x08i\x82`@\x01Qa\x14hV[a\x08s\x82\x82a\x14\xA9V[\x81Q`\x06\x80T` \x85\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x92\x16\x93\x16\x92\x90\x92\x17\x91\x90\x91\x17\x90U`@\x82\x01Q`\x07Ua\x08\xC0a\x08\xB9C\x90V[B\x84a\x15\x9DV[\x81` \x01Q`\x01`\x01`@\x1B\x03\x16\x82_\x01Q`\x01`\x01`@\x1B\x03\x16\x7F\xA0Jw9$PZA\x85d67%\xF5h2\xF5w.k\x8D\r\xBDn\xFC\xE7$\xDF\xE8\x03\xDA\xE6\x84`@\x01Q`@Qa\t\x10\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\t$a\x17\x86V[a\t-\x82a\x18*V[a\t7\x82\x82a\x18kV[PPV[_a\tDa\x19,V[P_Q` a.`_9_Q\x90_R\x90V[a\t^a\r\xDDV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\t\xA9W`\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\t\xCCa\r\xDDV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\t\xF9`\x01\x83a)\x92V[\x81T\x81\x10a\n\tWa\n\ta)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\nHW`@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\x0B\tW\x84`\t\x82\x81T\x81\x10a\nxWa\nxa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\x0B\x01W`\t\x81\x81T\x81\x10a\n\xB1Wa\n\xB1a)\xA5V[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\n\xD4Wa\n\xD4a)\xA5V[\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\n\\V[PP\x91P\x91V[a\x0B\x18a\r\xDDV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\x0B7WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\x0BUWP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\x0BsW`@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\x0B\xDDWP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\x0B\xF8WP0;\x15[\x90P\x81\x15\x80\x15a\x0C\x06WP\x80\x15[\x15a\x0C$W`@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\x0CNW\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0CW\x86a\x19uV[a\x0C_a\x19\x86V[a\x0Cj\x89\x89\x89a\x19\x8EV[\x83\x15a\x0C\xB0W\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[`\nT_\x90`\xFF\x16a\x0C\xD6Wa\x0C\xD1\x83\x83a\x1A\xBAV[a\x0C\xE7V[\x81`\x0BT\x84a\x0C\xE5\x91\x90a)\x92V[\x11[\x90P[\x92\x91PPV[a\x0C\xF8a\r\xDDV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r&W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r/\x81a\x1C\x12V[PV[a\r=`\t_a!\tV[_[\x81Q\x81\x10\x15a\t7W`\t\x82\x82\x81Q\x81\x10a\r\\Wa\r\\a)\xA5V[` \x90\x81\x02\x91\x90\x91\x01\x81\x01Q\x82T`\x01\x81\x81\x01\x85U_\x94\x85R\x93\x83\x90 \x82Q`\x02\x90\x92\x02\x01\x80T\x93\x83\x01Q`@\x84\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`\x80\x1B\x02g\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF`\x80\x1B\x19\x92\x82\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x90\x97\x16\x91\x90\x94\x16\x17\x94\x90\x94\x17\x93\x90\x93\x16\x17\x82U``\x01Q\x90\x82\x01U\x01a\r?V[3a\x0E\x0F\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\t\xC2W`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r\x1DV[a\x0E@a\x1E\xA4V[b\x01\0\0\x81R`\x07` \x82\x01R\x7F\x13i\xAAx\xDCP\x13Z\xD7V\xD6,\x97\xA6J\x0E\xDC\xD3\0fXAh \r\x9D\x1F\xAC\xF8,\xA4\xF5`@\x82\x01QR\x7F,\xF24V\xD7\x12\xB0o\x8E:\xA5\xBF\n\xCC>F\xA3\xD0\x94`*:+\x99\xD8s\xBB\xA0ZC\x91G` `@\x83\x01Q\x01R\x7F\x08\xA3_7\x9D-,I\nQ\0f\x97'^M\xB7\x9Bg\xB4\xA1u\xC1G~&-)\xE2^B1``\x82\x01QR\x7F!\x88(\x13\x1B\xB7\x94\x0C\xCC\x88\xC5a\xB2\x99uZ\xF4\xBF\x0Bq\xED\x93\x0B\x12\x9E\x8B\xE0\xA1!\x819\xEA` ``\x83\x01Q\x01R\x7F#\xA2\x17$6\xC1\x14[6\xD5\xBCm;1\xFA\x16\x10\xC7:T>\xA4C\x91\x8A\xAA>\xE1u\xF9\x92\x1B`\x80\x82\x01QR\x7F%\x02\xAD\xF4\x04\xD6(w\xC3\x10!J\xE9\x94.\x93\xC4\x0B\x15M4\xC0$\xBA\xB4\x8A<\xA0W\xE6\n\x11` `\x80\x83\x01Q\x01R\x7F\x1B\xB8\x8A\xDA\x91\xABw4\x88/x&\xB8\x12u2\0\x81\xACH_\x9C\xF8\xBF\xBC;\xA5Kn\xB4\xDF\xF3`\xA0\x82\x01QR\x7F%\xC7J'\xE9\xA3\xB2\x01\x14\xA3\xA9\x1F1\xC2\x0F\x01w~~\xD9\x13\xE0\xEF\x94\x9F\x02\x85\xE2\xE7\xC2\x06\x9B` `\xA0\x83\x01Q\x01R\x7F\x12\xB0\xCEv\xAC\x8B\r\xBD@^\xBC]\xD0\xBA\xE0\xF9\x1A\xEDP\x03<~\xA3o\xC6*\xAB\xA2\xB9\x833\xDC`\xC0\x82\x01QR\x7F\x18[B\xAFI\xDD\x1C\xBE3z\x84\xF7KpArB\x8EuJ\x0B\xEA\x02J\xB3\xEB/\x99j\xFB,G` `\xC0\x83\x01Q\x01R\x7F!\xF5:\xD4S\x8BEC\x8B\xBF\x05!D`p\"9 \xE3\xDFo\x90\"\xA6L\xC1m\x7F\x94\xE8\\\x08`\xE0\x82\x01QR\x7F\"x\xAC=\xED\xFD\xAC\x7F\xEB\x97%\xA0\"IquQ\x8E\xAD\xA5,\x892\xFC@\xE6\xE7[\xEA\x88\x9F\xB8` `\xE0\x83\x01Q\x01R\x7F\x08v\x13o\x81\xC1b\x98H{\xFB\x1B\xE7MJ4\x87\xECEdZ\xB1\xD0\x9D\xC2\xE5\xB8e\xD6\"0\xDFa\x01\0\x82\x01QR\x7F\t\x8Cd\x1C\x94~\xCDy\x8D\xFD^\x1B/\xE4(\x02L\xDF\x03\x06\x1AS\xFFwN\xA8\xA9\xE3\xDE\x9D?+` a\x01\0\x83\x01Q\x01R\x7F\x15\xEA\xAC,b2\xD2&\x8B\xF7\x9D\xC4~\xD9fo\x99/\xB3\xD9j\xD2?\xB2\x16\x90\xC2\x15\x86\xC5G.a\x01 \x82\x01QR\x7F\x0F\x10\xF1\xFF\xC5H\x81(\x7F\xDAo \x0B\xC8]\x82E\xB5\x08\xD8D\xA9t\t\x8AA\x11\x98g\xB3%\xD0` a\x01 \x83\x01Q\x01R\x7F\x08\x95\xCE\xEA@\xB0\x85SN\x979\xCATB\xBAH\xB3\xA3Y*\xFF\xDE+P\x9D\xF7E!\xB4}\x8A\xB0a\x01@\x82\x01QR\x7F.\x12\xECX\0\xAC\x92\xFE*\x8Ep@\xBC[C[\x9E\xB7\x1E18\x01s\xFAv\x88\xBF\x81\xFC\xBB\xA4U` a\x01@\x83\x01Q\x01R\x7F/S\x84\xEBVS\xE4uv\xEF\xE2H\xE7\x90?F2CAK\xFE\xD5#}\xDAu\r\xF3\x99k\xD9\x18a\x01`\x82\x01QR\x7F\x1C<\xD6\xB1\x1D\xA8pL\xDC\x87\x1A\xB4\xFA2=~\xE5{\xD4\x0C\xE1e\xB4\x9AV\xD5\xEFd\x89\xCD%\x1A` a\x01`\x83\x01Q\x01R\x7F\x13W\x99\x94\x95|\xE1UL\xC1\xE5\xB1\x94\xFBc\xC9Q7\x07\xF6'AO\x84Bh\x1A\xE76\xE3dPa\x01\x80\x82\x01QR\x7F&\xC9\xBD\xCD\x96\xD8\xE4 \xB1)t\xAD\xE9:\xD9\xC3\x12\xC4\x18R\x13\xD2\xF6\x83\x1A|bZ\x18\x89\x0E\x95` a\x01\x80\x83\x01Q\x01R\x7F\x0C\xC7\n\x1DT*\x9A\x155\xAE]\x92\x01ij\xDC\\\x99\xC1\xBC\xEB\xD9\x95\x1D\xFA\x8A\xFE\xC7\x9F\xA0\xB6Da\x01\xA0\x82\x01QR\x7F\x10\xB0C\xD9\xF1\x86\x91\x81\xB9ey\xD6an\xFC\x17\xA5\xDF{\x84\xC4\xD41\xD9f\xC9\tK\xF1\xE8\x81S` a\x01\xA0\x83\x01Q\x01R\x7F\x19\x8Ae0\x9D\x13\x1AC\xB0\xAB\x1CGe\x9D\x036\xCF\xBFb\xB2\x7FG'\x10kO\xD9q\xC7=\xD4\x03a\x01\xC0\x82\x01QR\x7F#\xDF\x99\xEA\xC3\xC1\x94y\x03\xB2\x11\xB8\0\xEF\xEBv\xF4}^\x87\xB7AHfT4\x92\xE8\xC7y\x8D\x1A` a\x01\xC0\x83\x01Q\x01R\x7F\"\x1C\xC5\xE4{\x81\xCE\x8D\xCF\xA7.\xF9\x81\x91j\x8E\xDD\xEF\x12\xFC\xDEY\xC5lb\x83\x0C\x12n\xBE\xF0\xDEa\x01\xE0\x82\x01QR\x7F#\x1F\x994\x0C5\xC9\xE0\x96R\xA6\xDFs\xC9\xCE\xC5\xD8\x878\xCBq\xFFEqo\xDC\x9E\x9EE\xA4\x92n` a\x01\xE0\x83\x01Q\x01R\x7F,\x9F\x14\x89\xFC\xE0\xF2c\xE0?>\x97\xBF\nr':\xAF\xCC\xA92_\xF4w\x86\xAD\xB0JR\xA6\xD2,a\x02\0\x82\x01QR\x7F!\xF6n(\xF1~\x01\xE9\xFDY>\x16\xD0\"\xC4\xEC\xA2[\xD5\xDB\x96\xDA\xEC`m\x97\xB6\x04\xCCAH8` a\x02\0\x83\x01Q\x01R\x7F \x15tV\x04\xA9W\x1E\"k\xD9\x90C\xCF\xAF\x1F\x96&|\xC5\xDEg\xF4\x97V?\xF8\x11\0S\x1D&a\x02 \x82\x01QR\x7F h\x89\xFFLX\xDD\x08\xEE\x11\x07\x19\x1A*[\xC5\xDB\xAEU\xC4\x9D}\x83\x97\x80\x17\x99\x86\x8D\x10\xF8\x05` a\x02 \x83\x01Q\x01R\x7F!\x06*\xB8\xF8\xEC\xD8\x93+B\x9A\x1E\xB8aK\x1E\x03\xDBa\xBF\xF6\xA5\xCD-]~\xA1\x93\xE9\x0E\x99'a\x02@\x82\x01QR\x7F!\x7F\x9B'\xB94\xB8\x8F\xFEU]h-\xFEn\x8BmP?\x86\xB1K\xBD\x964+\xC4\x84\x87\xA6\x0B'` a\x02@\x83\x01Q\x01R\x7F\x1C\x9E\xDA-\x19\\\xB71\xF9\x03#^\xADjO|f\xDBI\xDAq>\xCB'\xAF\xEE\x07o\x0E\xEAqTa\x02`\x82\x01QR\x7F&G\xC1a\xC0\x0B\x90%\x8E\x1C\xEF\xEB\xB1t\x81\xF8\xA5\xD9\x1B_\x9D\xCAbn>\x89\xA9![\xCC\xA1j` 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[\x7F0dNr\xE11\xA0)\xB8PE\xB6\x81\x81X](3\xE8Hy\xB9p\x91C\xE1\xF5\x93\xF0\0\0\x01\x81\x10\x80a\t7W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\xB2a\x07\xADV[\x90Pa\x14\xBCa!'V[\x83Q`\x01`\x01`@\x1B\x03\x90\x81\x16\x82R` \x85\x01Q\x16\x81`\x01` \x02\x01R`@\x84\x81\x01Q\x82\x82\x01R`\x01T``\x83\x01R`\x02T`\x80\x83\x01R`\x03T`\xA0\x83\x01R_T`\xC0\x83\x01RQc\xCESzw`\xE0\x1B\x81Rs\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x90c\xCESzw\x90a\x15;\x90\x85\x90\x85\x90\x88\x90`\x04\x01a+\x95V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x15VW=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x15z\x91\x90a-\xB5V[a\x15\x97W`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x16\x12WP`\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\x15\xDDWa\x15\xDDa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x16\x07\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a-\xD4V[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\xA5W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x16?Wa\x16?a)\xA5V[_\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\x16\x7F\x83a-\xF3V[\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[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\x18\x0CWP\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\x18\0_Q` a.`_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x182a\r\xDDV[`@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\x07YV[\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\x18\xC5WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18\xC2\x91\x81\x01\x90a.\x1DV[`\x01[a\x18\xEDW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_9_Q\x90_R\x81\x14a\x19\x1DW`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r\x1DV[a\x19'\x83\x83a\x1C\x82V[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\t\xC2W`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x19}a\x1C\xD7V[a\r/\x81a\x1D V[a\t\xC2a\x1C\xD7V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\xB2WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\xBFWP` \x82\x01Q\x15[\x80a\x19\xCCWP`@\x82\x01Q\x15[\x80a\x19\xD9WP``\x82\x01Q\x15[\x80a\x19\xE3WP\x81Q\x15[\x80a\x19\xF5WPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x1A\tWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x1A'W`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[`\tT_\x90C\x84\x11\x80a\x1A\xCBWP\x80\x15[\x80a\x1B\x15WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x1A\xF9Wa\x1A\xF9a)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x1B3W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x1BA`\x01\x85a)\x92V[\x90P[\x81a\x1B\xDDW`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x1B\xDDW\x86`\t\x82\x81T\x81\x10a\x1BvWa\x1Bva)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x1B\xCBW`\x01\x91P`\t\x81\x81T\x81\x10a\x1B\xABWa\x1B\xABa)\xA5V[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x1B\xDDV[\x80a\x1B\xD5\x81a.4V[\x91PPa\x1BDV[\x81a\x1B\xFBW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x1C\x06\x84\x89a)\x92V[\x11\x97\x96PPPPPPPV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1C\x8B\x82a\x1D(V[`@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\x1C\xCFWa\x19'\x82\x82a\x1D\x8BV[a\t7a\x1D\xFDV[\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\t\xC2W`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x0C\xF8a\x1C\xD7V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1D]W`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r\x1DV[_Q` a.`_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\x1D\xA7\x91\x90a.IV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1D\xDFW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1D\xE4V[``\x91P[P\x91P\x91Pa\x1D\xF4\x85\x83\x83a\x1E\x1CV[\x95\x94PPPPPV[4\x15a\t\xC2W`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1E1Wa\x1E,\x82a\x1E{V[a\x1EtV[\x81Q\x15\x80\x15a\x1EHWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1EqW`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r\x1DV[P\x80[\x93\x92PPPV[\x80Q\x15a\x1E\x8BW\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\x1E\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1FW`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Fw`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x17`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a 7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a W`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a w`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \x97`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xB7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xD7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a \xF7`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[P\x80T_\x82U`\x02\x02\x90_R` _ \x90\x81\x01\x90a\r/\x91\x90a!EV[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[[\x80\x82\x11\x15a!jW\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U_`\x01\x82\x01U`\x02\x01a!FV[P\x90V[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a!\x99W__\xFD[a\x0C\xE7\x82a!nV[_` \x82\x84\x03\x12\x15a!\xB2W__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa!\xEB`@\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[cNH{q`\xE0\x1B_R`A`\x04R`$_\xFD[`@Qa\x02\xE0\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@R\x90V[`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a#\xF1Wa#\xF1a#\xBAV[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$AWa$Aa#\xBAV[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a!\x84W__\xFD[_``\x82\x84\x03\x12\x15a$oW__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\x91Wa$\x91a#\xBAV[`@R\x90P\x80a$\xA0\x83a$IV[\x81Ra$\xAE` \x84\x01a$IV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a$\xD4W__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a$\xF6Wa$\xF6a#\xBAV[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a%#W__\xFD[a%-\x85\x85a$_V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a%AW__\xFD[Pa%Ja#\xCEV[a%W\x85``\x86\x01a$\xC4V[\x81Ra%f\x85`\xA0\x86\x01a$\xC4V[` \x82\x01Ra%x\x85`\xE0\x86\x01a$\xC4V[`@\x82\x01Ra%\x8B\x85a\x01 \x86\x01a$\xC4V[``\x82\x01Ra%\x9E\x85a\x01`\x86\x01a$\xC4V[`\x80\x82\x01Ra%\xB1\x85a\x01\xA0\x86\x01a$\xC4V[`\xA0\x82\x01Ra%\xC4\x85a\x01\xE0\x86\x01a$\xC4V[`\xC0\x82\x01Ra%\xD7\x85a\x02 \x86\x01a$\xC4V[`\xE0\x82\x01Ra%\xEA\x85a\x02`\x86\x01a$\xC4V[a\x01\0\x82\x01Ra%\xFE\x85a\x02\xA0\x86\x01a$\xC4V[a\x01 \x82\x01Ra&\x12\x85a\x02\xE0\x86\x01a$\xC4V[a\x01@\x82\x01Ra&&\x85a\x03 \x86\x01a$\xC4V[a\x01`\x82\x01Ra&:\x85a\x03`\x86\x01a$\xC4V[a\x01\x80\x82\x01Ra\x03\xA0\x84\x015a\x01\xA0\x82\x01Ra\x03\xC0\x84\x015a\x01\xC0\x82\x01Ra\x03\xE0\x84\x015a\x01\xE0\x82\x01Ra\x04\0\x84\x015a\x02\0\x82\x01Ra\x04 \x84\x015a\x02 \x82\x01Ra\x04@\x84\x015a\x02@\x82\x01Ra\x04`\x84\x015a\x02`\x82\x01Ra\x04\x80\x84\x015a\x02\x80\x82\x01Ra\x04\xA0\x84\x015a\x02\xA0\x82\x01Ra\x04\xC0\x90\x93\x015a\x02\xC0\x84\x01RP\x92\x90\x91PV[__`@\x83\x85\x03\x12\x15a&\xD1W__\xFD[a&\xDA\x83a!nV[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a&\xF4W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a'\x04W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a'\x1DWa'\x1Da#\xBAV[a'0`\x1F\x82\x01`\x1F\x19\x16` \x01a$\x19V[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a'DW__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a!\x84W__\xFD[_` \x82\x84\x03\x12\x15a'\x86W__\xFD[a\x0C\xE7\x82a'cV[____\x84\x86\x03a\x01 \x81\x12\x15a'\xA4W__\xFD[a'\xAE\x87\x87a$_V[\x94P`\x80`_\x19\x82\x01\x12\x15a'\xC1W__\xFD[Pa'\xCAa#\xF7V[``\x86\x81\x015\x82R`\x80\x87\x015` \x83\x01R`\xA0\x87\x015`@\x83\x01R`\xC0\x87\x015\x90\x82\x01R\x92Pa'\xFD`\xE0\x86\x01a'cV[\x91Pa(\x0Ca\x01\0\x86\x01a!nV[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[_``\x82\x84\x03\x12\x15a(\\W__\xFD[a\x0C\xE7\x83\x83a$_V[__`@\x83\x85\x03\x12\x15a(wW__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[_` \x82\x84\x03\x12\x15a(\x96W__\xFD[\x815`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xABW__\xFD[\x82\x01`\x1F\x81\x01\x84\x13a(\xBBW__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a(\xD4Wa(\xD4a#\xBAV[a(\xE3` \x82`\x05\x1B\x01a$\x19V[\x80\x82\x82R` \x82\x01\x91P` \x83`\x07\x1B\x85\x01\x01\x92P\x86\x83\x11\x15a)\x04W__\xFD[` \x84\x01\x93P[\x82\x84\x10\x15a)tW`\x80\x84\x88\x03\x12\x15a)\"W__\xFD[a)*a#\xF7V[a)3\x85a$IV[\x81Ra)A` \x86\x01a$IV[` \x82\x01Ra)R`@\x86\x01a$IV[`@\x82\x01R``\x85\x81\x015\x90\x82\x01R\x82R`\x80\x90\x93\x01\x92` \x90\x91\x01\x90a)\x0BV[\x96\x95PPPPPPV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[\x80_[`\x07\x81\x10\x15a\x15\x97W\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a)\xBCV[a)\xF0\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`\x82\x01\x90P\x84Q\x82R` \x85\x01Q` \x83\x01R`@\x85\x01Qa+\xC7`@\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\x01Ra-\x9Fa\x05\0\x83\x01\x85a)\xB9V[a-\xADa\x05\xE0\x83\x01\x84a)\xDBV[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a-\xC5W__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1EtW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xEAWa\x0C\xEAa)~V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a.\x14Wa.\x14a)~V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a.-W__\xFD[PQ\x91\x90PV[_\x81a.BWa.Ba)~V[P_\x19\x01\x90V[_\x82Q\x80` \x85\x01\x84^_\x92\x01\x91\x82RP\x91\x90PV\xFE6\x08\x94\xA1;\xA1\xA3!\x06g\xC8(I-\xB9\x8D\xCA> v\xCC75\xA9 \xA3\xCAP]8+\xBC\xA1dsolcC\0\x08\x1C\0\n",
4764    );
4765    #[derive(serde::Serialize, serde::Deserialize)]
4766    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4767    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4768```solidity
4769error AddressEmptyCode(address target);
4770```*/
4771    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4772    #[derive(Clone)]
4773    pub struct AddressEmptyCode {
4774        #[allow(missing_docs)]
4775        pub target: alloy::sol_types::private::Address,
4776    }
4777    #[allow(
4778        non_camel_case_types,
4779        non_snake_case,
4780        clippy::pub_underscore_fields,
4781        clippy::style
4782    )]
4783    const _: () = {
4784        use alloy::sol_types as alloy_sol_types;
4785        #[doc(hidden)]
4786        #[allow(dead_code)]
4787        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4788        #[doc(hidden)]
4789        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4790        #[cfg(test)]
4791        #[allow(dead_code, unreachable_patterns)]
4792        fn _type_assertion(
4793            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4794        ) {
4795            match _t {
4796                alloy_sol_types::private::AssertTypeEq::<
4797                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4798                >(_) => {}
4799            }
4800        }
4801        #[automatically_derived]
4802        #[doc(hidden)]
4803        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4804            fn from(value: AddressEmptyCode) -> Self {
4805                (value.target,)
4806            }
4807        }
4808        #[automatically_derived]
4809        #[doc(hidden)]
4810        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4811            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4812                Self { target: tuple.0 }
4813            }
4814        }
4815        #[automatically_derived]
4816        impl alloy_sol_types::SolError for AddressEmptyCode {
4817            type Parameters<'a> = UnderlyingSolTuple<'a>;
4818            type Token<'a> = <Self::Parameters<
4819                'a,
4820            > as alloy_sol_types::SolType>::Token<'a>;
4821            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4822            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4823            #[inline]
4824            fn new<'a>(
4825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4826            ) -> Self {
4827                tuple.into()
4828            }
4829            #[inline]
4830            fn tokenize(&self) -> Self::Token<'_> {
4831                (
4832                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4833                        &self.target,
4834                    ),
4835                )
4836            }
4837            #[inline]
4838            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4839                <Self::Parameters<
4840                    '_,
4841                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4842                    .map(Self::new)
4843            }
4844        }
4845    };
4846    #[derive(serde::Serialize, serde::Deserialize)]
4847    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4848    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4849```solidity
4850error ERC1967InvalidImplementation(address implementation);
4851```*/
4852    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4853    #[derive(Clone)]
4854    pub struct ERC1967InvalidImplementation {
4855        #[allow(missing_docs)]
4856        pub implementation: alloy::sol_types::private::Address,
4857    }
4858    #[allow(
4859        non_camel_case_types,
4860        non_snake_case,
4861        clippy::pub_underscore_fields,
4862        clippy::style
4863    )]
4864    const _: () = {
4865        use alloy::sol_types as alloy_sol_types;
4866        #[doc(hidden)]
4867        #[allow(dead_code)]
4868        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4869        #[doc(hidden)]
4870        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4871        #[cfg(test)]
4872        #[allow(dead_code, unreachable_patterns)]
4873        fn _type_assertion(
4874            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4875        ) {
4876            match _t {
4877                alloy_sol_types::private::AssertTypeEq::<
4878                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4879                >(_) => {}
4880            }
4881        }
4882        #[automatically_derived]
4883        #[doc(hidden)]
4884        impl ::core::convert::From<ERC1967InvalidImplementation>
4885        for UnderlyingRustTuple<'_> {
4886            fn from(value: ERC1967InvalidImplementation) -> Self {
4887                (value.implementation,)
4888            }
4889        }
4890        #[automatically_derived]
4891        #[doc(hidden)]
4892        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4893        for ERC1967InvalidImplementation {
4894            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4895                Self { implementation: tuple.0 }
4896            }
4897        }
4898        #[automatically_derived]
4899        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4900            type Parameters<'a> = UnderlyingSolTuple<'a>;
4901            type Token<'a> = <Self::Parameters<
4902                'a,
4903            > as alloy_sol_types::SolType>::Token<'a>;
4904            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4905            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4906            #[inline]
4907            fn new<'a>(
4908                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4909            ) -> Self {
4910                tuple.into()
4911            }
4912            #[inline]
4913            fn tokenize(&self) -> Self::Token<'_> {
4914                (
4915                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4916                        &self.implementation,
4917                    ),
4918                )
4919            }
4920            #[inline]
4921            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4922                <Self::Parameters<
4923                    '_,
4924                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4925                    .map(Self::new)
4926            }
4927        }
4928    };
4929    #[derive(serde::Serialize, serde::Deserialize)]
4930    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4931    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4932```solidity
4933error ERC1967NonPayable();
4934```*/
4935    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4936    #[derive(Clone)]
4937    pub struct ERC1967NonPayable;
4938    #[allow(
4939        non_camel_case_types,
4940        non_snake_case,
4941        clippy::pub_underscore_fields,
4942        clippy::style
4943    )]
4944    const _: () = {
4945        use alloy::sol_types as alloy_sol_types;
4946        #[doc(hidden)]
4947        #[allow(dead_code)]
4948        type UnderlyingSolTuple<'a> = ();
4949        #[doc(hidden)]
4950        type UnderlyingRustTuple<'a> = ();
4951        #[cfg(test)]
4952        #[allow(dead_code, unreachable_patterns)]
4953        fn _type_assertion(
4954            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4955        ) {
4956            match _t {
4957                alloy_sol_types::private::AssertTypeEq::<
4958                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4959                >(_) => {}
4960            }
4961        }
4962        #[automatically_derived]
4963        #[doc(hidden)]
4964        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4965            fn from(value: ERC1967NonPayable) -> Self {
4966                ()
4967            }
4968        }
4969        #[automatically_derived]
4970        #[doc(hidden)]
4971        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4972            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4973                Self
4974            }
4975        }
4976        #[automatically_derived]
4977        impl alloy_sol_types::SolError for ERC1967NonPayable {
4978            type Parameters<'a> = UnderlyingSolTuple<'a>;
4979            type Token<'a> = <Self::Parameters<
4980                'a,
4981            > as alloy_sol_types::SolType>::Token<'a>;
4982            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4983            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4984            #[inline]
4985            fn new<'a>(
4986                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4987            ) -> Self {
4988                tuple.into()
4989            }
4990            #[inline]
4991            fn tokenize(&self) -> Self::Token<'_> {
4992                ()
4993            }
4994            #[inline]
4995            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4996                <Self::Parameters<
4997                    '_,
4998                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4999                    .map(Self::new)
5000            }
5001        }
5002    };
5003    #[derive(serde::Serialize, serde::Deserialize)]
5004    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5005    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
5006```solidity
5007error FailedInnerCall();
5008```*/
5009    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5010    #[derive(Clone)]
5011    pub struct FailedInnerCall;
5012    #[allow(
5013        non_camel_case_types,
5014        non_snake_case,
5015        clippy::pub_underscore_fields,
5016        clippy::style
5017    )]
5018    const _: () = {
5019        use alloy::sol_types as alloy_sol_types;
5020        #[doc(hidden)]
5021        #[allow(dead_code)]
5022        type UnderlyingSolTuple<'a> = ();
5023        #[doc(hidden)]
5024        type UnderlyingRustTuple<'a> = ();
5025        #[cfg(test)]
5026        #[allow(dead_code, unreachable_patterns)]
5027        fn _type_assertion(
5028            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5029        ) {
5030            match _t {
5031                alloy_sol_types::private::AssertTypeEq::<
5032                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5033                >(_) => {}
5034            }
5035        }
5036        #[automatically_derived]
5037        #[doc(hidden)]
5038        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
5039            fn from(value: FailedInnerCall) -> Self {
5040                ()
5041            }
5042        }
5043        #[automatically_derived]
5044        #[doc(hidden)]
5045        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
5046            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5047                Self
5048            }
5049        }
5050        #[automatically_derived]
5051        impl alloy_sol_types::SolError for FailedInnerCall {
5052            type Parameters<'a> = UnderlyingSolTuple<'a>;
5053            type Token<'a> = <Self::Parameters<
5054                'a,
5055            > as alloy_sol_types::SolType>::Token<'a>;
5056            const SIGNATURE: &'static str = "FailedInnerCall()";
5057            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
5058            #[inline]
5059            fn new<'a>(
5060                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5061            ) -> Self {
5062                tuple.into()
5063            }
5064            #[inline]
5065            fn tokenize(&self) -> Self::Token<'_> {
5066                ()
5067            }
5068            #[inline]
5069            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5070                <Self::Parameters<
5071                    '_,
5072                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5073                    .map(Self::new)
5074            }
5075        }
5076    };
5077    #[derive(serde::Serialize, serde::Deserialize)]
5078    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5079    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
5080```solidity
5081error InsufficientSnapshotHistory();
5082```*/
5083    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5084    #[derive(Clone)]
5085    pub struct InsufficientSnapshotHistory;
5086    #[allow(
5087        non_camel_case_types,
5088        non_snake_case,
5089        clippy::pub_underscore_fields,
5090        clippy::style
5091    )]
5092    const _: () = {
5093        use alloy::sol_types as alloy_sol_types;
5094        #[doc(hidden)]
5095        #[allow(dead_code)]
5096        type UnderlyingSolTuple<'a> = ();
5097        #[doc(hidden)]
5098        type UnderlyingRustTuple<'a> = ();
5099        #[cfg(test)]
5100        #[allow(dead_code, unreachable_patterns)]
5101        fn _type_assertion(
5102            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5103        ) {
5104            match _t {
5105                alloy_sol_types::private::AssertTypeEq::<
5106                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5107                >(_) => {}
5108            }
5109        }
5110        #[automatically_derived]
5111        #[doc(hidden)]
5112        impl ::core::convert::From<InsufficientSnapshotHistory>
5113        for UnderlyingRustTuple<'_> {
5114            fn from(value: InsufficientSnapshotHistory) -> Self {
5115                ()
5116            }
5117        }
5118        #[automatically_derived]
5119        #[doc(hidden)]
5120        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5121        for InsufficientSnapshotHistory {
5122            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5123                Self
5124            }
5125        }
5126        #[automatically_derived]
5127        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
5128            type Parameters<'a> = UnderlyingSolTuple<'a>;
5129            type Token<'a> = <Self::Parameters<
5130                'a,
5131            > as alloy_sol_types::SolType>::Token<'a>;
5132            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
5133            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
5134            #[inline]
5135            fn new<'a>(
5136                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5137            ) -> Self {
5138                tuple.into()
5139            }
5140            #[inline]
5141            fn tokenize(&self) -> Self::Token<'_> {
5142                ()
5143            }
5144            #[inline]
5145            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5146                <Self::Parameters<
5147                    '_,
5148                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5149                    .map(Self::new)
5150            }
5151        }
5152    };
5153    #[derive(serde::Serialize, serde::Deserialize)]
5154    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5155    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
5156```solidity
5157error InvalidAddress();
5158```*/
5159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5160    #[derive(Clone)]
5161    pub struct InvalidAddress;
5162    #[allow(
5163        non_camel_case_types,
5164        non_snake_case,
5165        clippy::pub_underscore_fields,
5166        clippy::style
5167    )]
5168    const _: () = {
5169        use alloy::sol_types as alloy_sol_types;
5170        #[doc(hidden)]
5171        #[allow(dead_code)]
5172        type UnderlyingSolTuple<'a> = ();
5173        #[doc(hidden)]
5174        type UnderlyingRustTuple<'a> = ();
5175        #[cfg(test)]
5176        #[allow(dead_code, unreachable_patterns)]
5177        fn _type_assertion(
5178            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5179        ) {
5180            match _t {
5181                alloy_sol_types::private::AssertTypeEq::<
5182                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5183                >(_) => {}
5184            }
5185        }
5186        #[automatically_derived]
5187        #[doc(hidden)]
5188        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
5189            fn from(value: InvalidAddress) -> Self {
5190                ()
5191            }
5192        }
5193        #[automatically_derived]
5194        #[doc(hidden)]
5195        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
5196            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5197                Self
5198            }
5199        }
5200        #[automatically_derived]
5201        impl alloy_sol_types::SolError for InvalidAddress {
5202            type Parameters<'a> = UnderlyingSolTuple<'a>;
5203            type Token<'a> = <Self::Parameters<
5204                'a,
5205            > as alloy_sol_types::SolType>::Token<'a>;
5206            const SIGNATURE: &'static str = "InvalidAddress()";
5207            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
5208            #[inline]
5209            fn new<'a>(
5210                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5211            ) -> Self {
5212                tuple.into()
5213            }
5214            #[inline]
5215            fn tokenize(&self) -> Self::Token<'_> {
5216                ()
5217            }
5218            #[inline]
5219            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5220                <Self::Parameters<
5221                    '_,
5222                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5223                    .map(Self::new)
5224            }
5225        }
5226    };
5227    #[derive(serde::Serialize, serde::Deserialize)]
5228    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5229    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
5230```solidity
5231error InvalidArgs();
5232```*/
5233    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5234    #[derive(Clone)]
5235    pub struct InvalidArgs;
5236    #[allow(
5237        non_camel_case_types,
5238        non_snake_case,
5239        clippy::pub_underscore_fields,
5240        clippy::style
5241    )]
5242    const _: () = {
5243        use alloy::sol_types as alloy_sol_types;
5244        #[doc(hidden)]
5245        #[allow(dead_code)]
5246        type UnderlyingSolTuple<'a> = ();
5247        #[doc(hidden)]
5248        type UnderlyingRustTuple<'a> = ();
5249        #[cfg(test)]
5250        #[allow(dead_code, unreachable_patterns)]
5251        fn _type_assertion(
5252            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5253        ) {
5254            match _t {
5255                alloy_sol_types::private::AssertTypeEq::<
5256                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5257                >(_) => {}
5258            }
5259        }
5260        #[automatically_derived]
5261        #[doc(hidden)]
5262        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
5263            fn from(value: InvalidArgs) -> Self {
5264                ()
5265            }
5266        }
5267        #[automatically_derived]
5268        #[doc(hidden)]
5269        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
5270            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5271                Self
5272            }
5273        }
5274        #[automatically_derived]
5275        impl alloy_sol_types::SolError for InvalidArgs {
5276            type Parameters<'a> = UnderlyingSolTuple<'a>;
5277            type Token<'a> = <Self::Parameters<
5278                'a,
5279            > as alloy_sol_types::SolType>::Token<'a>;
5280            const SIGNATURE: &'static str = "InvalidArgs()";
5281            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
5282            #[inline]
5283            fn new<'a>(
5284                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5285            ) -> Self {
5286                tuple.into()
5287            }
5288            #[inline]
5289            fn tokenize(&self) -> Self::Token<'_> {
5290                ()
5291            }
5292            #[inline]
5293            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5294                <Self::Parameters<
5295                    '_,
5296                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5297                    .map(Self::new)
5298            }
5299        }
5300    };
5301    #[derive(serde::Serialize, serde::Deserialize)]
5302    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5303    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
5304```solidity
5305error InvalidHotShotBlockForCommitmentCheck();
5306```*/
5307    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5308    #[derive(Clone)]
5309    pub struct InvalidHotShotBlockForCommitmentCheck;
5310    #[allow(
5311        non_camel_case_types,
5312        non_snake_case,
5313        clippy::pub_underscore_fields,
5314        clippy::style
5315    )]
5316    const _: () = {
5317        use alloy::sol_types as alloy_sol_types;
5318        #[doc(hidden)]
5319        #[allow(dead_code)]
5320        type UnderlyingSolTuple<'a> = ();
5321        #[doc(hidden)]
5322        type UnderlyingRustTuple<'a> = ();
5323        #[cfg(test)]
5324        #[allow(dead_code, unreachable_patterns)]
5325        fn _type_assertion(
5326            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5327        ) {
5328            match _t {
5329                alloy_sol_types::private::AssertTypeEq::<
5330                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5331                >(_) => {}
5332            }
5333        }
5334        #[automatically_derived]
5335        #[doc(hidden)]
5336        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
5337        for UnderlyingRustTuple<'_> {
5338            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
5339                ()
5340            }
5341        }
5342        #[automatically_derived]
5343        #[doc(hidden)]
5344        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5345        for InvalidHotShotBlockForCommitmentCheck {
5346            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5347                Self
5348            }
5349        }
5350        #[automatically_derived]
5351        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
5352            type Parameters<'a> = UnderlyingSolTuple<'a>;
5353            type Token<'a> = <Self::Parameters<
5354                'a,
5355            > as alloy_sol_types::SolType>::Token<'a>;
5356            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
5357            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
5358            #[inline]
5359            fn new<'a>(
5360                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5361            ) -> Self {
5362                tuple.into()
5363            }
5364            #[inline]
5365            fn tokenize(&self) -> Self::Token<'_> {
5366                ()
5367            }
5368            #[inline]
5369            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5370                <Self::Parameters<
5371                    '_,
5372                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5373                    .map(Self::new)
5374            }
5375        }
5376    };
5377    #[derive(serde::Serialize, serde::Deserialize)]
5378    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5379    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
5380```solidity
5381error InvalidInitialization();
5382```*/
5383    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5384    #[derive(Clone)]
5385    pub struct InvalidInitialization;
5386    #[allow(
5387        non_camel_case_types,
5388        non_snake_case,
5389        clippy::pub_underscore_fields,
5390        clippy::style
5391    )]
5392    const _: () = {
5393        use alloy::sol_types as alloy_sol_types;
5394        #[doc(hidden)]
5395        #[allow(dead_code)]
5396        type UnderlyingSolTuple<'a> = ();
5397        #[doc(hidden)]
5398        type UnderlyingRustTuple<'a> = ();
5399        #[cfg(test)]
5400        #[allow(dead_code, unreachable_patterns)]
5401        fn _type_assertion(
5402            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5403        ) {
5404            match _t {
5405                alloy_sol_types::private::AssertTypeEq::<
5406                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5407                >(_) => {}
5408            }
5409        }
5410        #[automatically_derived]
5411        #[doc(hidden)]
5412        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
5413            fn from(value: InvalidInitialization) -> Self {
5414                ()
5415            }
5416        }
5417        #[automatically_derived]
5418        #[doc(hidden)]
5419        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
5420            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5421                Self
5422            }
5423        }
5424        #[automatically_derived]
5425        impl alloy_sol_types::SolError for InvalidInitialization {
5426            type Parameters<'a> = UnderlyingSolTuple<'a>;
5427            type Token<'a> = <Self::Parameters<
5428                'a,
5429            > as alloy_sol_types::SolType>::Token<'a>;
5430            const SIGNATURE: &'static str = "InvalidInitialization()";
5431            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
5432            #[inline]
5433            fn new<'a>(
5434                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5435            ) -> Self {
5436                tuple.into()
5437            }
5438            #[inline]
5439            fn tokenize(&self) -> Self::Token<'_> {
5440                ()
5441            }
5442            #[inline]
5443            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5444                <Self::Parameters<
5445                    '_,
5446                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5447                    .map(Self::new)
5448            }
5449        }
5450    };
5451    #[derive(serde::Serialize, serde::Deserialize)]
5452    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5453    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
5454```solidity
5455error InvalidMaxStateHistory();
5456```*/
5457    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5458    #[derive(Clone)]
5459    pub struct InvalidMaxStateHistory;
5460    #[allow(
5461        non_camel_case_types,
5462        non_snake_case,
5463        clippy::pub_underscore_fields,
5464        clippy::style
5465    )]
5466    const _: () = {
5467        use alloy::sol_types as alloy_sol_types;
5468        #[doc(hidden)]
5469        #[allow(dead_code)]
5470        type UnderlyingSolTuple<'a> = ();
5471        #[doc(hidden)]
5472        type UnderlyingRustTuple<'a> = ();
5473        #[cfg(test)]
5474        #[allow(dead_code, unreachable_patterns)]
5475        fn _type_assertion(
5476            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5477        ) {
5478            match _t {
5479                alloy_sol_types::private::AssertTypeEq::<
5480                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5481                >(_) => {}
5482            }
5483        }
5484        #[automatically_derived]
5485        #[doc(hidden)]
5486        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
5487            fn from(value: InvalidMaxStateHistory) -> Self {
5488                ()
5489            }
5490        }
5491        #[automatically_derived]
5492        #[doc(hidden)]
5493        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
5494            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5495                Self
5496            }
5497        }
5498        #[automatically_derived]
5499        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
5500            type Parameters<'a> = UnderlyingSolTuple<'a>;
5501            type Token<'a> = <Self::Parameters<
5502                'a,
5503            > as alloy_sol_types::SolType>::Token<'a>;
5504            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
5505            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
5506            #[inline]
5507            fn new<'a>(
5508                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5509            ) -> Self {
5510                tuple.into()
5511            }
5512            #[inline]
5513            fn tokenize(&self) -> Self::Token<'_> {
5514                ()
5515            }
5516            #[inline]
5517            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5518                <Self::Parameters<
5519                    '_,
5520                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5521                    .map(Self::new)
5522            }
5523        }
5524    };
5525    #[derive(serde::Serialize, serde::Deserialize)]
5526    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5527    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5528```solidity
5529error InvalidProof();
5530```*/
5531    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5532    #[derive(Clone)]
5533    pub struct InvalidProof;
5534    #[allow(
5535        non_camel_case_types,
5536        non_snake_case,
5537        clippy::pub_underscore_fields,
5538        clippy::style
5539    )]
5540    const _: () = {
5541        use alloy::sol_types as alloy_sol_types;
5542        #[doc(hidden)]
5543        #[allow(dead_code)]
5544        type UnderlyingSolTuple<'a> = ();
5545        #[doc(hidden)]
5546        type UnderlyingRustTuple<'a> = ();
5547        #[cfg(test)]
5548        #[allow(dead_code, unreachable_patterns)]
5549        fn _type_assertion(
5550            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5551        ) {
5552            match _t {
5553                alloy_sol_types::private::AssertTypeEq::<
5554                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5555                >(_) => {}
5556            }
5557        }
5558        #[automatically_derived]
5559        #[doc(hidden)]
5560        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5561            fn from(value: InvalidProof) -> Self {
5562                ()
5563            }
5564        }
5565        #[automatically_derived]
5566        #[doc(hidden)]
5567        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5568            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5569                Self
5570            }
5571        }
5572        #[automatically_derived]
5573        impl alloy_sol_types::SolError for InvalidProof {
5574            type Parameters<'a> = UnderlyingSolTuple<'a>;
5575            type Token<'a> = <Self::Parameters<
5576                'a,
5577            > as alloy_sol_types::SolType>::Token<'a>;
5578            const SIGNATURE: &'static str = "InvalidProof()";
5579            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5580            #[inline]
5581            fn new<'a>(
5582                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5583            ) -> Self {
5584                tuple.into()
5585            }
5586            #[inline]
5587            fn tokenize(&self) -> Self::Token<'_> {
5588                ()
5589            }
5590            #[inline]
5591            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5592                <Self::Parameters<
5593                    '_,
5594                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5595                    .map(Self::new)
5596            }
5597        }
5598    };
5599    #[derive(serde::Serialize, serde::Deserialize)]
5600    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5601    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5602```solidity
5603error InvalidScalar();
5604```*/
5605    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5606    #[derive(Clone)]
5607    pub struct InvalidScalar;
5608    #[allow(
5609        non_camel_case_types,
5610        non_snake_case,
5611        clippy::pub_underscore_fields,
5612        clippy::style
5613    )]
5614    const _: () = {
5615        use alloy::sol_types as alloy_sol_types;
5616        #[doc(hidden)]
5617        #[allow(dead_code)]
5618        type UnderlyingSolTuple<'a> = ();
5619        #[doc(hidden)]
5620        type UnderlyingRustTuple<'a> = ();
5621        #[cfg(test)]
5622        #[allow(dead_code, unreachable_patterns)]
5623        fn _type_assertion(
5624            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5625        ) {
5626            match _t {
5627                alloy_sol_types::private::AssertTypeEq::<
5628                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5629                >(_) => {}
5630            }
5631        }
5632        #[automatically_derived]
5633        #[doc(hidden)]
5634        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5635            fn from(value: InvalidScalar) -> Self {
5636                ()
5637            }
5638        }
5639        #[automatically_derived]
5640        #[doc(hidden)]
5641        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5642            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5643                Self
5644            }
5645        }
5646        #[automatically_derived]
5647        impl alloy_sol_types::SolError for InvalidScalar {
5648            type Parameters<'a> = UnderlyingSolTuple<'a>;
5649            type Token<'a> = <Self::Parameters<
5650                'a,
5651            > as alloy_sol_types::SolType>::Token<'a>;
5652            const SIGNATURE: &'static str = "InvalidScalar()";
5653            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
5654            #[inline]
5655            fn new<'a>(
5656                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5657            ) -> Self {
5658                tuple.into()
5659            }
5660            #[inline]
5661            fn tokenize(&self) -> Self::Token<'_> {
5662                ()
5663            }
5664            #[inline]
5665            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5666                <Self::Parameters<
5667                    '_,
5668                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5669                    .map(Self::new)
5670            }
5671        }
5672    };
5673    #[derive(serde::Serialize, serde::Deserialize)]
5674    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5675    /**Custom error with signature `NoChangeRequired()` and selector `0xa863aec9`.
5676```solidity
5677error NoChangeRequired();
5678```*/
5679    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5680    #[derive(Clone)]
5681    pub struct NoChangeRequired;
5682    #[allow(
5683        non_camel_case_types,
5684        non_snake_case,
5685        clippy::pub_underscore_fields,
5686        clippy::style
5687    )]
5688    const _: () = {
5689        use alloy::sol_types as alloy_sol_types;
5690        #[doc(hidden)]
5691        #[allow(dead_code)]
5692        type UnderlyingSolTuple<'a> = ();
5693        #[doc(hidden)]
5694        type UnderlyingRustTuple<'a> = ();
5695        #[cfg(test)]
5696        #[allow(dead_code, unreachable_patterns)]
5697        fn _type_assertion(
5698            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5699        ) {
5700            match _t {
5701                alloy_sol_types::private::AssertTypeEq::<
5702                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5703                >(_) => {}
5704            }
5705        }
5706        #[automatically_derived]
5707        #[doc(hidden)]
5708        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5709            fn from(value: NoChangeRequired) -> Self {
5710                ()
5711            }
5712        }
5713        #[automatically_derived]
5714        #[doc(hidden)]
5715        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5716            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5717                Self
5718            }
5719        }
5720        #[automatically_derived]
5721        impl alloy_sol_types::SolError for NoChangeRequired {
5722            type Parameters<'a> = UnderlyingSolTuple<'a>;
5723            type Token<'a> = <Self::Parameters<
5724                'a,
5725            > as alloy_sol_types::SolType>::Token<'a>;
5726            const SIGNATURE: &'static str = "NoChangeRequired()";
5727            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5728            #[inline]
5729            fn new<'a>(
5730                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5731            ) -> Self {
5732                tuple.into()
5733            }
5734            #[inline]
5735            fn tokenize(&self) -> Self::Token<'_> {
5736                ()
5737            }
5738            #[inline]
5739            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5740                <Self::Parameters<
5741                    '_,
5742                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5743                    .map(Self::new)
5744            }
5745        }
5746    };
5747    #[derive(serde::Serialize, serde::Deserialize)]
5748    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5749    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5750```solidity
5751error NotInitializing();
5752```*/
5753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5754    #[derive(Clone)]
5755    pub struct NotInitializing;
5756    #[allow(
5757        non_camel_case_types,
5758        non_snake_case,
5759        clippy::pub_underscore_fields,
5760        clippy::style
5761    )]
5762    const _: () = {
5763        use alloy::sol_types as alloy_sol_types;
5764        #[doc(hidden)]
5765        #[allow(dead_code)]
5766        type UnderlyingSolTuple<'a> = ();
5767        #[doc(hidden)]
5768        type UnderlyingRustTuple<'a> = ();
5769        #[cfg(test)]
5770        #[allow(dead_code, unreachable_patterns)]
5771        fn _type_assertion(
5772            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5773        ) {
5774            match _t {
5775                alloy_sol_types::private::AssertTypeEq::<
5776                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5777                >(_) => {}
5778            }
5779        }
5780        #[automatically_derived]
5781        #[doc(hidden)]
5782        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5783            fn from(value: NotInitializing) -> Self {
5784                ()
5785            }
5786        }
5787        #[automatically_derived]
5788        #[doc(hidden)]
5789        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5790            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5791                Self
5792            }
5793        }
5794        #[automatically_derived]
5795        impl alloy_sol_types::SolError for NotInitializing {
5796            type Parameters<'a> = UnderlyingSolTuple<'a>;
5797            type Token<'a> = <Self::Parameters<
5798                'a,
5799            > as alloy_sol_types::SolType>::Token<'a>;
5800            const SIGNATURE: &'static str = "NotInitializing()";
5801            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5802            #[inline]
5803            fn new<'a>(
5804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5805            ) -> Self {
5806                tuple.into()
5807            }
5808            #[inline]
5809            fn tokenize(&self) -> Self::Token<'_> {
5810                ()
5811            }
5812            #[inline]
5813            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5814                <Self::Parameters<
5815                    '_,
5816                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5817                    .map(Self::new)
5818            }
5819        }
5820    };
5821    #[derive(serde::Serialize, serde::Deserialize)]
5822    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5823    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5824```solidity
5825error OutdatedState();
5826```*/
5827    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5828    #[derive(Clone)]
5829    pub struct OutdatedState;
5830    #[allow(
5831        non_camel_case_types,
5832        non_snake_case,
5833        clippy::pub_underscore_fields,
5834        clippy::style
5835    )]
5836    const _: () = {
5837        use alloy::sol_types as alloy_sol_types;
5838        #[doc(hidden)]
5839        #[allow(dead_code)]
5840        type UnderlyingSolTuple<'a> = ();
5841        #[doc(hidden)]
5842        type UnderlyingRustTuple<'a> = ();
5843        #[cfg(test)]
5844        #[allow(dead_code, unreachable_patterns)]
5845        fn _type_assertion(
5846            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5847        ) {
5848            match _t {
5849                alloy_sol_types::private::AssertTypeEq::<
5850                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5851                >(_) => {}
5852            }
5853        }
5854        #[automatically_derived]
5855        #[doc(hidden)]
5856        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5857            fn from(value: OutdatedState) -> Self {
5858                ()
5859            }
5860        }
5861        #[automatically_derived]
5862        #[doc(hidden)]
5863        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5864            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5865                Self
5866            }
5867        }
5868        #[automatically_derived]
5869        impl alloy_sol_types::SolError for OutdatedState {
5870            type Parameters<'a> = UnderlyingSolTuple<'a>;
5871            type Token<'a> = <Self::Parameters<
5872                'a,
5873            > as alloy_sol_types::SolType>::Token<'a>;
5874            const SIGNATURE: &'static str = "OutdatedState()";
5875            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5876            #[inline]
5877            fn new<'a>(
5878                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5879            ) -> Self {
5880                tuple.into()
5881            }
5882            #[inline]
5883            fn tokenize(&self) -> Self::Token<'_> {
5884                ()
5885            }
5886            #[inline]
5887            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5888                <Self::Parameters<
5889                    '_,
5890                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5891                    .map(Self::new)
5892            }
5893        }
5894    };
5895    #[derive(serde::Serialize, serde::Deserialize)]
5896    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5897    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5898```solidity
5899error OwnableInvalidOwner(address owner);
5900```*/
5901    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5902    #[derive(Clone)]
5903    pub struct OwnableInvalidOwner {
5904        #[allow(missing_docs)]
5905        pub owner: alloy::sol_types::private::Address,
5906    }
5907    #[allow(
5908        non_camel_case_types,
5909        non_snake_case,
5910        clippy::pub_underscore_fields,
5911        clippy::style
5912    )]
5913    const _: () = {
5914        use alloy::sol_types as alloy_sol_types;
5915        #[doc(hidden)]
5916        #[allow(dead_code)]
5917        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5918        #[doc(hidden)]
5919        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5920        #[cfg(test)]
5921        #[allow(dead_code, unreachable_patterns)]
5922        fn _type_assertion(
5923            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5924        ) {
5925            match _t {
5926                alloy_sol_types::private::AssertTypeEq::<
5927                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5928                >(_) => {}
5929            }
5930        }
5931        #[automatically_derived]
5932        #[doc(hidden)]
5933        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5934            fn from(value: OwnableInvalidOwner) -> Self {
5935                (value.owner,)
5936            }
5937        }
5938        #[automatically_derived]
5939        #[doc(hidden)]
5940        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5941            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5942                Self { owner: tuple.0 }
5943            }
5944        }
5945        #[automatically_derived]
5946        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5947            type Parameters<'a> = UnderlyingSolTuple<'a>;
5948            type Token<'a> = <Self::Parameters<
5949                'a,
5950            > as alloy_sol_types::SolType>::Token<'a>;
5951            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5952            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5953            #[inline]
5954            fn new<'a>(
5955                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5956            ) -> Self {
5957                tuple.into()
5958            }
5959            #[inline]
5960            fn tokenize(&self) -> Self::Token<'_> {
5961                (
5962                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5963                        &self.owner,
5964                    ),
5965                )
5966            }
5967            #[inline]
5968            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5969                <Self::Parameters<
5970                    '_,
5971                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5972                    .map(Self::new)
5973            }
5974        }
5975    };
5976    #[derive(serde::Serialize, serde::Deserialize)]
5977    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5978    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5979```solidity
5980error OwnableUnauthorizedAccount(address account);
5981```*/
5982    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5983    #[derive(Clone)]
5984    pub struct OwnableUnauthorizedAccount {
5985        #[allow(missing_docs)]
5986        pub account: alloy::sol_types::private::Address,
5987    }
5988    #[allow(
5989        non_camel_case_types,
5990        non_snake_case,
5991        clippy::pub_underscore_fields,
5992        clippy::style
5993    )]
5994    const _: () = {
5995        use alloy::sol_types as alloy_sol_types;
5996        #[doc(hidden)]
5997        #[allow(dead_code)]
5998        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5999        #[doc(hidden)]
6000        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
6001        #[cfg(test)]
6002        #[allow(dead_code, unreachable_patterns)]
6003        fn _type_assertion(
6004            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6005        ) {
6006            match _t {
6007                alloy_sol_types::private::AssertTypeEq::<
6008                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6009                >(_) => {}
6010            }
6011        }
6012        #[automatically_derived]
6013        #[doc(hidden)]
6014        impl ::core::convert::From<OwnableUnauthorizedAccount>
6015        for UnderlyingRustTuple<'_> {
6016            fn from(value: OwnableUnauthorizedAccount) -> Self {
6017                (value.account,)
6018            }
6019        }
6020        #[automatically_derived]
6021        #[doc(hidden)]
6022        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6023        for OwnableUnauthorizedAccount {
6024            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6025                Self { account: tuple.0 }
6026            }
6027        }
6028        #[automatically_derived]
6029        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
6030            type Parameters<'a> = UnderlyingSolTuple<'a>;
6031            type Token<'a> = <Self::Parameters<
6032                'a,
6033            > as alloy_sol_types::SolType>::Token<'a>;
6034            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
6035            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
6036            #[inline]
6037            fn new<'a>(
6038                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6039            ) -> Self {
6040                tuple.into()
6041            }
6042            #[inline]
6043            fn tokenize(&self) -> Self::Token<'_> {
6044                (
6045                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6046                        &self.account,
6047                    ),
6048                )
6049            }
6050            #[inline]
6051            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6052                <Self::Parameters<
6053                    '_,
6054                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6055                    .map(Self::new)
6056            }
6057        }
6058    };
6059    #[derive(serde::Serialize, serde::Deserialize)]
6060    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6061    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
6062```solidity
6063error OwnershipCannotBeRenounced();
6064```*/
6065    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6066    #[derive(Clone)]
6067    pub struct OwnershipCannotBeRenounced;
6068    #[allow(
6069        non_camel_case_types,
6070        non_snake_case,
6071        clippy::pub_underscore_fields,
6072        clippy::style
6073    )]
6074    const _: () = {
6075        use alloy::sol_types as alloy_sol_types;
6076        #[doc(hidden)]
6077        #[allow(dead_code)]
6078        type UnderlyingSolTuple<'a> = ();
6079        #[doc(hidden)]
6080        type UnderlyingRustTuple<'a> = ();
6081        #[cfg(test)]
6082        #[allow(dead_code, unreachable_patterns)]
6083        fn _type_assertion(
6084            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6085        ) {
6086            match _t {
6087                alloy_sol_types::private::AssertTypeEq::<
6088                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6089                >(_) => {}
6090            }
6091        }
6092        #[automatically_derived]
6093        #[doc(hidden)]
6094        impl ::core::convert::From<OwnershipCannotBeRenounced>
6095        for UnderlyingRustTuple<'_> {
6096            fn from(value: OwnershipCannotBeRenounced) -> Self {
6097                ()
6098            }
6099        }
6100        #[automatically_derived]
6101        #[doc(hidden)]
6102        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6103        for OwnershipCannotBeRenounced {
6104            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6105                Self
6106            }
6107        }
6108        #[automatically_derived]
6109        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
6110            type Parameters<'a> = UnderlyingSolTuple<'a>;
6111            type Token<'a> = <Self::Parameters<
6112                'a,
6113            > as alloy_sol_types::SolType>::Token<'a>;
6114            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
6115            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
6116            #[inline]
6117            fn new<'a>(
6118                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6119            ) -> Self {
6120                tuple.into()
6121            }
6122            #[inline]
6123            fn tokenize(&self) -> Self::Token<'_> {
6124                ()
6125            }
6126            #[inline]
6127            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6128                <Self::Parameters<
6129                    '_,
6130                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6131                    .map(Self::new)
6132            }
6133        }
6134    };
6135    #[derive(serde::Serialize, serde::Deserialize)]
6136    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6137    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
6138```solidity
6139error ProverNotPermissioned();
6140```*/
6141    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6142    #[derive(Clone)]
6143    pub struct ProverNotPermissioned;
6144    #[allow(
6145        non_camel_case_types,
6146        non_snake_case,
6147        clippy::pub_underscore_fields,
6148        clippy::style
6149    )]
6150    const _: () = {
6151        use alloy::sol_types as alloy_sol_types;
6152        #[doc(hidden)]
6153        #[allow(dead_code)]
6154        type UnderlyingSolTuple<'a> = ();
6155        #[doc(hidden)]
6156        type UnderlyingRustTuple<'a> = ();
6157        #[cfg(test)]
6158        #[allow(dead_code, unreachable_patterns)]
6159        fn _type_assertion(
6160            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6161        ) {
6162            match _t {
6163                alloy_sol_types::private::AssertTypeEq::<
6164                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6165                >(_) => {}
6166            }
6167        }
6168        #[automatically_derived]
6169        #[doc(hidden)]
6170        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
6171            fn from(value: ProverNotPermissioned) -> Self {
6172                ()
6173            }
6174        }
6175        #[automatically_derived]
6176        #[doc(hidden)]
6177        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
6178            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6179                Self
6180            }
6181        }
6182        #[automatically_derived]
6183        impl alloy_sol_types::SolError for ProverNotPermissioned {
6184            type Parameters<'a> = UnderlyingSolTuple<'a>;
6185            type Token<'a> = <Self::Parameters<
6186                'a,
6187            > as alloy_sol_types::SolType>::Token<'a>;
6188            const SIGNATURE: &'static str = "ProverNotPermissioned()";
6189            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
6190            #[inline]
6191            fn new<'a>(
6192                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6193            ) -> Self {
6194                tuple.into()
6195            }
6196            #[inline]
6197            fn tokenize(&self) -> Self::Token<'_> {
6198                ()
6199            }
6200            #[inline]
6201            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6202                <Self::Parameters<
6203                    '_,
6204                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6205                    .map(Self::new)
6206            }
6207        }
6208    };
6209    #[derive(serde::Serialize, serde::Deserialize)]
6210    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6211    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
6212```solidity
6213error UUPSUnauthorizedCallContext();
6214```*/
6215    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6216    #[derive(Clone)]
6217    pub struct UUPSUnauthorizedCallContext;
6218    #[allow(
6219        non_camel_case_types,
6220        non_snake_case,
6221        clippy::pub_underscore_fields,
6222        clippy::style
6223    )]
6224    const _: () = {
6225        use alloy::sol_types as alloy_sol_types;
6226        #[doc(hidden)]
6227        #[allow(dead_code)]
6228        type UnderlyingSolTuple<'a> = ();
6229        #[doc(hidden)]
6230        type UnderlyingRustTuple<'a> = ();
6231        #[cfg(test)]
6232        #[allow(dead_code, unreachable_patterns)]
6233        fn _type_assertion(
6234            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6235        ) {
6236            match _t {
6237                alloy_sol_types::private::AssertTypeEq::<
6238                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6239                >(_) => {}
6240            }
6241        }
6242        #[automatically_derived]
6243        #[doc(hidden)]
6244        impl ::core::convert::From<UUPSUnauthorizedCallContext>
6245        for UnderlyingRustTuple<'_> {
6246            fn from(value: UUPSUnauthorizedCallContext) -> Self {
6247                ()
6248            }
6249        }
6250        #[automatically_derived]
6251        #[doc(hidden)]
6252        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6253        for UUPSUnauthorizedCallContext {
6254            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6255                Self
6256            }
6257        }
6258        #[automatically_derived]
6259        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
6260            type Parameters<'a> = UnderlyingSolTuple<'a>;
6261            type Token<'a> = <Self::Parameters<
6262                'a,
6263            > as alloy_sol_types::SolType>::Token<'a>;
6264            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
6265            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
6266            #[inline]
6267            fn new<'a>(
6268                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6269            ) -> Self {
6270                tuple.into()
6271            }
6272            #[inline]
6273            fn tokenize(&self) -> Self::Token<'_> {
6274                ()
6275            }
6276            #[inline]
6277            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6278                <Self::Parameters<
6279                    '_,
6280                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6281                    .map(Self::new)
6282            }
6283        }
6284    };
6285    #[derive(serde::Serialize, serde::Deserialize)]
6286    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6287    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
6288```solidity
6289error UUPSUnsupportedProxiableUUID(bytes32 slot);
6290```*/
6291    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6292    #[derive(Clone)]
6293    pub struct UUPSUnsupportedProxiableUUID {
6294        #[allow(missing_docs)]
6295        pub slot: alloy::sol_types::private::FixedBytes<32>,
6296    }
6297    #[allow(
6298        non_camel_case_types,
6299        non_snake_case,
6300        clippy::pub_underscore_fields,
6301        clippy::style
6302    )]
6303    const _: () = {
6304        use alloy::sol_types as alloy_sol_types;
6305        #[doc(hidden)]
6306        #[allow(dead_code)]
6307        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
6308        #[doc(hidden)]
6309        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
6310        #[cfg(test)]
6311        #[allow(dead_code, unreachable_patterns)]
6312        fn _type_assertion(
6313            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6314        ) {
6315            match _t {
6316                alloy_sol_types::private::AssertTypeEq::<
6317                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6318                >(_) => {}
6319            }
6320        }
6321        #[automatically_derived]
6322        #[doc(hidden)]
6323        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
6324        for UnderlyingRustTuple<'_> {
6325            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
6326                (value.slot,)
6327            }
6328        }
6329        #[automatically_derived]
6330        #[doc(hidden)]
6331        impl ::core::convert::From<UnderlyingRustTuple<'_>>
6332        for UUPSUnsupportedProxiableUUID {
6333            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6334                Self { slot: tuple.0 }
6335            }
6336        }
6337        #[automatically_derived]
6338        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
6339            type Parameters<'a> = UnderlyingSolTuple<'a>;
6340            type Token<'a> = <Self::Parameters<
6341                'a,
6342            > as alloy_sol_types::SolType>::Token<'a>;
6343            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
6344            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
6345            #[inline]
6346            fn new<'a>(
6347                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6348            ) -> Self {
6349                tuple.into()
6350            }
6351            #[inline]
6352            fn tokenize(&self) -> Self::Token<'_> {
6353                (
6354                    <alloy::sol_types::sol_data::FixedBytes<
6355                        32,
6356                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
6357                )
6358            }
6359            #[inline]
6360            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6361                <Self::Parameters<
6362                    '_,
6363                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6364                    .map(Self::new)
6365            }
6366        }
6367    };
6368    #[derive(serde::Serialize, serde::Deserialize)]
6369    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6370    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
6371```solidity
6372error WrongStakeTableUsed();
6373```*/
6374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6375    #[derive(Clone)]
6376    pub struct WrongStakeTableUsed;
6377    #[allow(
6378        non_camel_case_types,
6379        non_snake_case,
6380        clippy::pub_underscore_fields,
6381        clippy::style
6382    )]
6383    const _: () = {
6384        use alloy::sol_types as alloy_sol_types;
6385        #[doc(hidden)]
6386        #[allow(dead_code)]
6387        type UnderlyingSolTuple<'a> = ();
6388        #[doc(hidden)]
6389        type UnderlyingRustTuple<'a> = ();
6390        #[cfg(test)]
6391        #[allow(dead_code, unreachable_patterns)]
6392        fn _type_assertion(
6393            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6394        ) {
6395            match _t {
6396                alloy_sol_types::private::AssertTypeEq::<
6397                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6398                >(_) => {}
6399            }
6400        }
6401        #[automatically_derived]
6402        #[doc(hidden)]
6403        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
6404            fn from(value: WrongStakeTableUsed) -> Self {
6405                ()
6406            }
6407        }
6408        #[automatically_derived]
6409        #[doc(hidden)]
6410        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
6411            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6412                Self
6413            }
6414        }
6415        #[automatically_derived]
6416        impl alloy_sol_types::SolError for WrongStakeTableUsed {
6417            type Parameters<'a> = UnderlyingSolTuple<'a>;
6418            type Token<'a> = <Self::Parameters<
6419                'a,
6420            > as alloy_sol_types::SolType>::Token<'a>;
6421            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
6422            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
6423            #[inline]
6424            fn new<'a>(
6425                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6426            ) -> Self {
6427                tuple.into()
6428            }
6429            #[inline]
6430            fn tokenize(&self) -> Self::Token<'_> {
6431                ()
6432            }
6433            #[inline]
6434            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
6435                <Self::Parameters<
6436                    '_,
6437                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6438                    .map(Self::new)
6439            }
6440        }
6441    };
6442    #[derive(serde::Serialize, serde::Deserialize)]
6443    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6444    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
6445```solidity
6446event Initialized(uint64 version);
6447```*/
6448    #[allow(
6449        non_camel_case_types,
6450        non_snake_case,
6451        clippy::pub_underscore_fields,
6452        clippy::style
6453    )]
6454    #[derive(Clone)]
6455    pub struct Initialized {
6456        #[allow(missing_docs)]
6457        pub version: u64,
6458    }
6459    #[allow(
6460        non_camel_case_types,
6461        non_snake_case,
6462        clippy::pub_underscore_fields,
6463        clippy::style
6464    )]
6465    const _: () = {
6466        use alloy::sol_types as alloy_sol_types;
6467        #[automatically_derived]
6468        impl alloy_sol_types::SolEvent for Initialized {
6469            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
6470            type DataToken<'a> = <Self::DataTuple<
6471                'a,
6472            > as alloy_sol_types::SolType>::Token<'a>;
6473            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6474            const SIGNATURE: &'static str = "Initialized(uint64)";
6475            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6476                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
6477                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
6478                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
6479            ]);
6480            const ANONYMOUS: bool = false;
6481            #[allow(unused_variables)]
6482            #[inline]
6483            fn new(
6484                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6485                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6486            ) -> Self {
6487                Self { version: data.0 }
6488            }
6489            #[inline]
6490            fn check_signature(
6491                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6492            ) -> alloy_sol_types::Result<()> {
6493                if topics.0 != Self::SIGNATURE_HASH {
6494                    return Err(
6495                        alloy_sol_types::Error::invalid_event_signature_hash(
6496                            Self::SIGNATURE,
6497                            topics.0,
6498                            Self::SIGNATURE_HASH,
6499                        ),
6500                    );
6501                }
6502                Ok(())
6503            }
6504            #[inline]
6505            fn tokenize_body(&self) -> Self::DataToken<'_> {
6506                (
6507                    <alloy::sol_types::sol_data::Uint<
6508                        64,
6509                    > as alloy_sol_types::SolType>::tokenize(&self.version),
6510                )
6511            }
6512            #[inline]
6513            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6514                (Self::SIGNATURE_HASH.into(),)
6515            }
6516            #[inline]
6517            fn encode_topics_raw(
6518                &self,
6519                out: &mut [alloy_sol_types::abi::token::WordToken],
6520            ) -> alloy_sol_types::Result<()> {
6521                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6522                    return Err(alloy_sol_types::Error::Overrun);
6523                }
6524                out[0usize] = alloy_sol_types::abi::token::WordToken(
6525                    Self::SIGNATURE_HASH,
6526                );
6527                Ok(())
6528            }
6529        }
6530        #[automatically_derived]
6531        impl alloy_sol_types::private::IntoLogData for Initialized {
6532            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6533                From::from(self)
6534            }
6535            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6536                From::from(&self)
6537            }
6538        }
6539        #[automatically_derived]
6540        impl From<&Initialized> for alloy_sol_types::private::LogData {
6541            #[inline]
6542            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6543                alloy_sol_types::SolEvent::encode_log_data(this)
6544            }
6545        }
6546    };
6547    #[derive(serde::Serialize, serde::Deserialize)]
6548    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6549    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6550```solidity
6551event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6552```*/
6553    #[allow(
6554        non_camel_case_types,
6555        non_snake_case,
6556        clippy::pub_underscore_fields,
6557        clippy::style
6558    )]
6559    #[derive(Clone)]
6560    pub struct NewState {
6561        #[allow(missing_docs)]
6562        pub viewNum: u64,
6563        #[allow(missing_docs)]
6564        pub blockHeight: u64,
6565        #[allow(missing_docs)]
6566        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6567    }
6568    #[allow(
6569        non_camel_case_types,
6570        non_snake_case,
6571        clippy::pub_underscore_fields,
6572        clippy::style
6573    )]
6574    const _: () = {
6575        use alloy::sol_types as alloy_sol_types;
6576        #[automatically_derived]
6577        impl alloy_sol_types::SolEvent for NewState {
6578            type DataTuple<'a> = (BN254::ScalarField,);
6579            type DataToken<'a> = <Self::DataTuple<
6580                'a,
6581            > as alloy_sol_types::SolType>::Token<'a>;
6582            type TopicList = (
6583                alloy_sol_types::sol_data::FixedBytes<32>,
6584                alloy::sol_types::sol_data::Uint<64>,
6585                alloy::sol_types::sol_data::Uint<64>,
6586            );
6587            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6588            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6589                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6590                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6591                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6592            ]);
6593            const ANONYMOUS: bool = false;
6594            #[allow(unused_variables)]
6595            #[inline]
6596            fn new(
6597                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6598                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6599            ) -> Self {
6600                Self {
6601                    viewNum: topics.1,
6602                    blockHeight: topics.2,
6603                    blockCommRoot: data.0,
6604                }
6605            }
6606            #[inline]
6607            fn check_signature(
6608                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6609            ) -> alloy_sol_types::Result<()> {
6610                if topics.0 != Self::SIGNATURE_HASH {
6611                    return Err(
6612                        alloy_sol_types::Error::invalid_event_signature_hash(
6613                            Self::SIGNATURE,
6614                            topics.0,
6615                            Self::SIGNATURE_HASH,
6616                        ),
6617                    );
6618                }
6619                Ok(())
6620            }
6621            #[inline]
6622            fn tokenize_body(&self) -> Self::DataToken<'_> {
6623                (
6624                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6625                        &self.blockCommRoot,
6626                    ),
6627                )
6628            }
6629            #[inline]
6630            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6631                (
6632                    Self::SIGNATURE_HASH.into(),
6633                    self.viewNum.clone(),
6634                    self.blockHeight.clone(),
6635                )
6636            }
6637            #[inline]
6638            fn encode_topics_raw(
6639                &self,
6640                out: &mut [alloy_sol_types::abi::token::WordToken],
6641            ) -> alloy_sol_types::Result<()> {
6642                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6643                    return Err(alloy_sol_types::Error::Overrun);
6644                }
6645                out[0usize] = alloy_sol_types::abi::token::WordToken(
6646                    Self::SIGNATURE_HASH,
6647                );
6648                out[1usize] = <alloy::sol_types::sol_data::Uint<
6649                    64,
6650                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6651                out[2usize] = <alloy::sol_types::sol_data::Uint<
6652                    64,
6653                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6654                Ok(())
6655            }
6656        }
6657        #[automatically_derived]
6658        impl alloy_sol_types::private::IntoLogData for NewState {
6659            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6660                From::from(self)
6661            }
6662            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6663                From::from(&self)
6664            }
6665        }
6666        #[automatically_derived]
6667        impl From<&NewState> for alloy_sol_types::private::LogData {
6668            #[inline]
6669            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6670                alloy_sol_types::SolEvent::encode_log_data(this)
6671            }
6672        }
6673    };
6674    #[derive(serde::Serialize, serde::Deserialize)]
6675    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6676    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6677```solidity
6678event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6679```*/
6680    #[allow(
6681        non_camel_case_types,
6682        non_snake_case,
6683        clippy::pub_underscore_fields,
6684        clippy::style
6685    )]
6686    #[derive(Clone)]
6687    pub struct OwnershipTransferred {
6688        #[allow(missing_docs)]
6689        pub previousOwner: alloy::sol_types::private::Address,
6690        #[allow(missing_docs)]
6691        pub newOwner: alloy::sol_types::private::Address,
6692    }
6693    #[allow(
6694        non_camel_case_types,
6695        non_snake_case,
6696        clippy::pub_underscore_fields,
6697        clippy::style
6698    )]
6699    const _: () = {
6700        use alloy::sol_types as alloy_sol_types;
6701        #[automatically_derived]
6702        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6703            type DataTuple<'a> = ();
6704            type DataToken<'a> = <Self::DataTuple<
6705                'a,
6706            > as alloy_sol_types::SolType>::Token<'a>;
6707            type TopicList = (
6708                alloy_sol_types::sol_data::FixedBytes<32>,
6709                alloy::sol_types::sol_data::Address,
6710                alloy::sol_types::sol_data::Address,
6711            );
6712            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6713            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6714                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6715                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6716                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6717            ]);
6718            const ANONYMOUS: bool = false;
6719            #[allow(unused_variables)]
6720            #[inline]
6721            fn new(
6722                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6723                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6724            ) -> Self {
6725                Self {
6726                    previousOwner: topics.1,
6727                    newOwner: topics.2,
6728                }
6729            }
6730            #[inline]
6731            fn check_signature(
6732                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6733            ) -> alloy_sol_types::Result<()> {
6734                if topics.0 != Self::SIGNATURE_HASH {
6735                    return Err(
6736                        alloy_sol_types::Error::invalid_event_signature_hash(
6737                            Self::SIGNATURE,
6738                            topics.0,
6739                            Self::SIGNATURE_HASH,
6740                        ),
6741                    );
6742                }
6743                Ok(())
6744            }
6745            #[inline]
6746            fn tokenize_body(&self) -> Self::DataToken<'_> {
6747                ()
6748            }
6749            #[inline]
6750            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6751                (
6752                    Self::SIGNATURE_HASH.into(),
6753                    self.previousOwner.clone(),
6754                    self.newOwner.clone(),
6755                )
6756            }
6757            #[inline]
6758            fn encode_topics_raw(
6759                &self,
6760                out: &mut [alloy_sol_types::abi::token::WordToken],
6761            ) -> alloy_sol_types::Result<()> {
6762                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6763                    return Err(alloy_sol_types::Error::Overrun);
6764                }
6765                out[0usize] = alloy_sol_types::abi::token::WordToken(
6766                    Self::SIGNATURE_HASH,
6767                );
6768                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6769                    &self.previousOwner,
6770                );
6771                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6772                    &self.newOwner,
6773                );
6774                Ok(())
6775            }
6776        }
6777        #[automatically_derived]
6778        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6779            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6780                From::from(self)
6781            }
6782            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6783                From::from(&self)
6784            }
6785        }
6786        #[automatically_derived]
6787        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6788            #[inline]
6789            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6790                alloy_sol_types::SolEvent::encode_log_data(this)
6791            }
6792        }
6793    };
6794    #[derive(serde::Serialize, serde::Deserialize)]
6795    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6796    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6797```solidity
6798event PermissionedProverNotRequired();
6799```*/
6800    #[allow(
6801        non_camel_case_types,
6802        non_snake_case,
6803        clippy::pub_underscore_fields,
6804        clippy::style
6805    )]
6806    #[derive(Clone)]
6807    pub struct PermissionedProverNotRequired;
6808    #[allow(
6809        non_camel_case_types,
6810        non_snake_case,
6811        clippy::pub_underscore_fields,
6812        clippy::style
6813    )]
6814    const _: () = {
6815        use alloy::sol_types as alloy_sol_types;
6816        #[automatically_derived]
6817        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6818            type DataTuple<'a> = ();
6819            type DataToken<'a> = <Self::DataTuple<
6820                'a,
6821            > as alloy_sol_types::SolType>::Token<'a>;
6822            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6823            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6824            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6825                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6826                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6827                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6828            ]);
6829            const ANONYMOUS: bool = false;
6830            #[allow(unused_variables)]
6831            #[inline]
6832            fn new(
6833                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6834                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6835            ) -> Self {
6836                Self {}
6837            }
6838            #[inline]
6839            fn check_signature(
6840                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6841            ) -> alloy_sol_types::Result<()> {
6842                if topics.0 != Self::SIGNATURE_HASH {
6843                    return Err(
6844                        alloy_sol_types::Error::invalid_event_signature_hash(
6845                            Self::SIGNATURE,
6846                            topics.0,
6847                            Self::SIGNATURE_HASH,
6848                        ),
6849                    );
6850                }
6851                Ok(())
6852            }
6853            #[inline]
6854            fn tokenize_body(&self) -> Self::DataToken<'_> {
6855                ()
6856            }
6857            #[inline]
6858            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6859                (Self::SIGNATURE_HASH.into(),)
6860            }
6861            #[inline]
6862            fn encode_topics_raw(
6863                &self,
6864                out: &mut [alloy_sol_types::abi::token::WordToken],
6865            ) -> alloy_sol_types::Result<()> {
6866                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6867                    return Err(alloy_sol_types::Error::Overrun);
6868                }
6869                out[0usize] = alloy_sol_types::abi::token::WordToken(
6870                    Self::SIGNATURE_HASH,
6871                );
6872                Ok(())
6873            }
6874        }
6875        #[automatically_derived]
6876        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6877            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6878                From::from(self)
6879            }
6880            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6881                From::from(&self)
6882            }
6883        }
6884        #[automatically_derived]
6885        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6886            #[inline]
6887            fn from(
6888                this: &PermissionedProverNotRequired,
6889            ) -> alloy_sol_types::private::LogData {
6890                alloy_sol_types::SolEvent::encode_log_data(this)
6891            }
6892        }
6893    };
6894    #[derive(serde::Serialize, serde::Deserialize)]
6895    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6896    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6897```solidity
6898event PermissionedProverRequired(address permissionedProver);
6899```*/
6900    #[allow(
6901        non_camel_case_types,
6902        non_snake_case,
6903        clippy::pub_underscore_fields,
6904        clippy::style
6905    )]
6906    #[derive(Clone)]
6907    pub struct PermissionedProverRequired {
6908        #[allow(missing_docs)]
6909        pub permissionedProver: alloy::sol_types::private::Address,
6910    }
6911    #[allow(
6912        non_camel_case_types,
6913        non_snake_case,
6914        clippy::pub_underscore_fields,
6915        clippy::style
6916    )]
6917    const _: () = {
6918        use alloy::sol_types as alloy_sol_types;
6919        #[automatically_derived]
6920        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6921            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6922            type DataToken<'a> = <Self::DataTuple<
6923                'a,
6924            > as alloy_sol_types::SolType>::Token<'a>;
6925            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6926            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6927            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6928                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6929                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6930                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6931            ]);
6932            const ANONYMOUS: bool = false;
6933            #[allow(unused_variables)]
6934            #[inline]
6935            fn new(
6936                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6937                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6938            ) -> Self {
6939                Self { permissionedProver: data.0 }
6940            }
6941            #[inline]
6942            fn check_signature(
6943                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6944            ) -> alloy_sol_types::Result<()> {
6945                if topics.0 != Self::SIGNATURE_HASH {
6946                    return Err(
6947                        alloy_sol_types::Error::invalid_event_signature_hash(
6948                            Self::SIGNATURE,
6949                            topics.0,
6950                            Self::SIGNATURE_HASH,
6951                        ),
6952                    );
6953                }
6954                Ok(())
6955            }
6956            #[inline]
6957            fn tokenize_body(&self) -> Self::DataToken<'_> {
6958                (
6959                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6960                        &self.permissionedProver,
6961                    ),
6962                )
6963            }
6964            #[inline]
6965            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6966                (Self::SIGNATURE_HASH.into(),)
6967            }
6968            #[inline]
6969            fn encode_topics_raw(
6970                &self,
6971                out: &mut [alloy_sol_types::abi::token::WordToken],
6972            ) -> alloy_sol_types::Result<()> {
6973                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6974                    return Err(alloy_sol_types::Error::Overrun);
6975                }
6976                out[0usize] = alloy_sol_types::abi::token::WordToken(
6977                    Self::SIGNATURE_HASH,
6978                );
6979                Ok(())
6980            }
6981        }
6982        #[automatically_derived]
6983        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6984            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6985                From::from(self)
6986            }
6987            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6988                From::from(&self)
6989            }
6990        }
6991        #[automatically_derived]
6992        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6993            #[inline]
6994            fn from(
6995                this: &PermissionedProverRequired,
6996            ) -> alloy_sol_types::private::LogData {
6997                alloy_sol_types::SolEvent::encode_log_data(this)
6998            }
6999        }
7000    };
7001    #[derive(serde::Serialize, serde::Deserialize)]
7002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7003    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
7004```solidity
7005event Upgrade(address implementation);
7006```*/
7007    #[allow(
7008        non_camel_case_types,
7009        non_snake_case,
7010        clippy::pub_underscore_fields,
7011        clippy::style
7012    )]
7013    #[derive(Clone)]
7014    pub struct Upgrade {
7015        #[allow(missing_docs)]
7016        pub implementation: alloy::sol_types::private::Address,
7017    }
7018    #[allow(
7019        non_camel_case_types,
7020        non_snake_case,
7021        clippy::pub_underscore_fields,
7022        clippy::style
7023    )]
7024    const _: () = {
7025        use alloy::sol_types as alloy_sol_types;
7026        #[automatically_derived]
7027        impl alloy_sol_types::SolEvent for Upgrade {
7028            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
7029            type DataToken<'a> = <Self::DataTuple<
7030                'a,
7031            > as alloy_sol_types::SolType>::Token<'a>;
7032            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
7033            const SIGNATURE: &'static str = "Upgrade(address)";
7034            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7035                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
7036                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
7037                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
7038            ]);
7039            const ANONYMOUS: bool = false;
7040            #[allow(unused_variables)]
7041            #[inline]
7042            fn new(
7043                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7044                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7045            ) -> Self {
7046                Self { implementation: data.0 }
7047            }
7048            #[inline]
7049            fn check_signature(
7050                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7051            ) -> alloy_sol_types::Result<()> {
7052                if topics.0 != Self::SIGNATURE_HASH {
7053                    return Err(
7054                        alloy_sol_types::Error::invalid_event_signature_hash(
7055                            Self::SIGNATURE,
7056                            topics.0,
7057                            Self::SIGNATURE_HASH,
7058                        ),
7059                    );
7060                }
7061                Ok(())
7062            }
7063            #[inline]
7064            fn tokenize_body(&self) -> Self::DataToken<'_> {
7065                (
7066                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
7067                        &self.implementation,
7068                    ),
7069                )
7070            }
7071            #[inline]
7072            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7073                (Self::SIGNATURE_HASH.into(),)
7074            }
7075            #[inline]
7076            fn encode_topics_raw(
7077                &self,
7078                out: &mut [alloy_sol_types::abi::token::WordToken],
7079            ) -> alloy_sol_types::Result<()> {
7080                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
7081                    return Err(alloy_sol_types::Error::Overrun);
7082                }
7083                out[0usize] = alloy_sol_types::abi::token::WordToken(
7084                    Self::SIGNATURE_HASH,
7085                );
7086                Ok(())
7087            }
7088        }
7089        #[automatically_derived]
7090        impl alloy_sol_types::private::IntoLogData for Upgrade {
7091            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7092                From::from(self)
7093            }
7094            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7095                From::from(&self)
7096            }
7097        }
7098        #[automatically_derived]
7099        impl From<&Upgrade> for alloy_sol_types::private::LogData {
7100            #[inline]
7101            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
7102                alloy_sol_types::SolEvent::encode_log_data(this)
7103            }
7104        }
7105    };
7106    #[derive(serde::Serialize, serde::Deserialize)]
7107    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7108    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
7109```solidity
7110event Upgraded(address indexed implementation);
7111```*/
7112    #[allow(
7113        non_camel_case_types,
7114        non_snake_case,
7115        clippy::pub_underscore_fields,
7116        clippy::style
7117    )]
7118    #[derive(Clone)]
7119    pub struct Upgraded {
7120        #[allow(missing_docs)]
7121        pub implementation: alloy::sol_types::private::Address,
7122    }
7123    #[allow(
7124        non_camel_case_types,
7125        non_snake_case,
7126        clippy::pub_underscore_fields,
7127        clippy::style
7128    )]
7129    const _: () = {
7130        use alloy::sol_types as alloy_sol_types;
7131        #[automatically_derived]
7132        impl alloy_sol_types::SolEvent for Upgraded {
7133            type DataTuple<'a> = ();
7134            type DataToken<'a> = <Self::DataTuple<
7135                'a,
7136            > as alloy_sol_types::SolType>::Token<'a>;
7137            type TopicList = (
7138                alloy_sol_types::sol_data::FixedBytes<32>,
7139                alloy::sol_types::sol_data::Address,
7140            );
7141            const SIGNATURE: &'static str = "Upgraded(address)";
7142            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
7143                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
7144                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
7145                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
7146            ]);
7147            const ANONYMOUS: bool = false;
7148            #[allow(unused_variables)]
7149            #[inline]
7150            fn new(
7151                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
7152                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
7153            ) -> Self {
7154                Self { implementation: topics.1 }
7155            }
7156            #[inline]
7157            fn check_signature(
7158                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
7159            ) -> alloy_sol_types::Result<()> {
7160                if topics.0 != Self::SIGNATURE_HASH {
7161                    return Err(
7162                        alloy_sol_types::Error::invalid_event_signature_hash(
7163                            Self::SIGNATURE,
7164                            topics.0,
7165                            Self::SIGNATURE_HASH,
7166                        ),
7167                    );
7168                }
7169                Ok(())
7170            }
7171            #[inline]
7172            fn tokenize_body(&self) -> Self::DataToken<'_> {
7173                ()
7174            }
7175            #[inline]
7176            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
7177                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
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.implementation,
7192                );
7193                Ok(())
7194            }
7195        }
7196        #[automatically_derived]
7197        impl alloy_sol_types::private::IntoLogData for Upgraded {
7198            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
7199                From::from(self)
7200            }
7201            fn into_log_data(self) -> alloy_sol_types::private::LogData {
7202                From::from(&self)
7203            }
7204        }
7205        #[automatically_derived]
7206        impl From<&Upgraded> for alloy_sol_types::private::LogData {
7207            #[inline]
7208            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
7209                alloy_sol_types::SolEvent::encode_log_data(this)
7210            }
7211        }
7212    };
7213    #[derive(serde::Serialize, serde::Deserialize)]
7214    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7215    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
7216```solidity
7217function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
7218```*/
7219    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7220    #[derive(Clone)]
7221    pub struct UPGRADE_INTERFACE_VERSIONCall;
7222    #[derive(serde::Serialize, serde::Deserialize)]
7223    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7224    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
7225    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7226    #[derive(Clone)]
7227    pub struct UPGRADE_INTERFACE_VERSIONReturn {
7228        #[allow(missing_docs)]
7229        pub _0: alloy::sol_types::private::String,
7230    }
7231    #[allow(
7232        non_camel_case_types,
7233        non_snake_case,
7234        clippy::pub_underscore_fields,
7235        clippy::style
7236    )]
7237    const _: () = {
7238        use alloy::sol_types as alloy_sol_types;
7239        {
7240            #[doc(hidden)]
7241            #[allow(dead_code)]
7242            type UnderlyingSolTuple<'a> = ();
7243            #[doc(hidden)]
7244            type UnderlyingRustTuple<'a> = ();
7245            #[cfg(test)]
7246            #[allow(dead_code, unreachable_patterns)]
7247            fn _type_assertion(
7248                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7249            ) {
7250                match _t {
7251                    alloy_sol_types::private::AssertTypeEq::<
7252                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7253                    >(_) => {}
7254                }
7255            }
7256            #[automatically_derived]
7257            #[doc(hidden)]
7258            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
7259            for UnderlyingRustTuple<'_> {
7260                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
7261                    ()
7262                }
7263            }
7264            #[automatically_derived]
7265            #[doc(hidden)]
7266            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7267            for UPGRADE_INTERFACE_VERSIONCall {
7268                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7269                    Self
7270                }
7271            }
7272        }
7273        {
7274            #[doc(hidden)]
7275            #[allow(dead_code)]
7276            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
7277            #[doc(hidden)]
7278            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
7279            #[cfg(test)]
7280            #[allow(dead_code, unreachable_patterns)]
7281            fn _type_assertion(
7282                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7283            ) {
7284                match _t {
7285                    alloy_sol_types::private::AssertTypeEq::<
7286                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7287                    >(_) => {}
7288                }
7289            }
7290            #[automatically_derived]
7291            #[doc(hidden)]
7292            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
7293            for UnderlyingRustTuple<'_> {
7294                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
7295                    (value._0,)
7296                }
7297            }
7298            #[automatically_derived]
7299            #[doc(hidden)]
7300            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7301            for UPGRADE_INTERFACE_VERSIONReturn {
7302                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7303                    Self { _0: tuple.0 }
7304                }
7305            }
7306        }
7307        #[automatically_derived]
7308        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
7309            type Parameters<'a> = ();
7310            type Token<'a> = <Self::Parameters<
7311                'a,
7312            > as alloy_sol_types::SolType>::Token<'a>;
7313            type Return = alloy::sol_types::private::String;
7314            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
7315            type ReturnToken<'a> = <Self::ReturnTuple<
7316                'a,
7317            > as alloy_sol_types::SolType>::Token<'a>;
7318            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
7319            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
7320            #[inline]
7321            fn new<'a>(
7322                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7323            ) -> Self {
7324                tuple.into()
7325            }
7326            #[inline]
7327            fn tokenize(&self) -> Self::Token<'_> {
7328                ()
7329            }
7330            #[inline]
7331            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7332                (
7333                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
7334                        ret,
7335                    ),
7336                )
7337            }
7338            #[inline]
7339            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7340                <Self::ReturnTuple<
7341                    '_,
7342                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7343                    .map(|r| {
7344                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7345                        r._0
7346                    })
7347            }
7348            #[inline]
7349            fn abi_decode_returns_validate(
7350                data: &[u8],
7351            ) -> alloy_sol_types::Result<Self::Return> {
7352                <Self::ReturnTuple<
7353                    '_,
7354                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7355                    .map(|r| {
7356                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
7357                        r._0
7358                    })
7359            }
7360        }
7361    };
7362    #[derive(serde::Serialize, serde::Deserialize)]
7363    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7364    /**Function with signature `_getVk()` and selector `0x12173c2c`.
7365```solidity
7366function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
7367```*/
7368    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7369    #[derive(Clone)]
7370    pub struct _getVkCall;
7371    #[derive(serde::Serialize, serde::Deserialize)]
7372    #[derive()]
7373    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
7374    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7375    #[derive(Clone)]
7376    pub struct _getVkReturn {
7377        #[allow(missing_docs)]
7378        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7379    }
7380    #[allow(
7381        non_camel_case_types,
7382        non_snake_case,
7383        clippy::pub_underscore_fields,
7384        clippy::style
7385    )]
7386    const _: () = {
7387        use alloy::sol_types as alloy_sol_types;
7388        {
7389            #[doc(hidden)]
7390            #[allow(dead_code)]
7391            type UnderlyingSolTuple<'a> = ();
7392            #[doc(hidden)]
7393            type UnderlyingRustTuple<'a> = ();
7394            #[cfg(test)]
7395            #[allow(dead_code, unreachable_patterns)]
7396            fn _type_assertion(
7397                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7398            ) {
7399                match _t {
7400                    alloy_sol_types::private::AssertTypeEq::<
7401                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7402                    >(_) => {}
7403                }
7404            }
7405            #[automatically_derived]
7406            #[doc(hidden)]
7407            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
7408                fn from(value: _getVkCall) -> Self {
7409                    ()
7410                }
7411            }
7412            #[automatically_derived]
7413            #[doc(hidden)]
7414            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
7415                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7416                    Self
7417                }
7418            }
7419        }
7420        {
7421            #[doc(hidden)]
7422            #[allow(dead_code)]
7423            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7424            #[doc(hidden)]
7425            type UnderlyingRustTuple<'a> = (
7426                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
7427            );
7428            #[cfg(test)]
7429            #[allow(dead_code, unreachable_patterns)]
7430            fn _type_assertion(
7431                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7432            ) {
7433                match _t {
7434                    alloy_sol_types::private::AssertTypeEq::<
7435                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7436                    >(_) => {}
7437                }
7438            }
7439            #[automatically_derived]
7440            #[doc(hidden)]
7441            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
7442                fn from(value: _getVkReturn) -> Self {
7443                    (value.vk,)
7444                }
7445            }
7446            #[automatically_derived]
7447            #[doc(hidden)]
7448            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
7449                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7450                    Self { vk: tuple.0 }
7451                }
7452            }
7453        }
7454        #[automatically_derived]
7455        impl alloy_sol_types::SolCall for _getVkCall {
7456            type Parameters<'a> = ();
7457            type Token<'a> = <Self::Parameters<
7458                'a,
7459            > as alloy_sol_types::SolType>::Token<'a>;
7460            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
7461            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
7462            type ReturnToken<'a> = <Self::ReturnTuple<
7463                'a,
7464            > as alloy_sol_types::SolType>::Token<'a>;
7465            const SIGNATURE: &'static str = "_getVk()";
7466            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
7467            #[inline]
7468            fn new<'a>(
7469                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7470            ) -> Self {
7471                tuple.into()
7472            }
7473            #[inline]
7474            fn tokenize(&self) -> Self::Token<'_> {
7475                ()
7476            }
7477            #[inline]
7478            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7479                (
7480                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7481                        ret,
7482                    ),
7483                )
7484            }
7485            #[inline]
7486            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7487                <Self::ReturnTuple<
7488                    '_,
7489                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7490                    .map(|r| {
7491                        let r: _getVkReturn = r.into();
7492                        r.vk
7493                    })
7494            }
7495            #[inline]
7496            fn abi_decode_returns_validate(
7497                data: &[u8],
7498            ) -> alloy_sol_types::Result<Self::Return> {
7499                <Self::ReturnTuple<
7500                    '_,
7501                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7502                    .map(|r| {
7503                        let r: _getVkReturn = r.into();
7504                        r.vk
7505                    })
7506            }
7507        }
7508    };
7509    #[derive(serde::Serialize, serde::Deserialize)]
7510    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7511    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7512```solidity
7513function currentBlockNumber() external view returns (uint256);
7514```*/
7515    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7516    #[derive(Clone)]
7517    pub struct currentBlockNumberCall;
7518    #[derive(serde::Serialize, serde::Deserialize)]
7519    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7520    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7521    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7522    #[derive(Clone)]
7523    pub struct currentBlockNumberReturn {
7524        #[allow(missing_docs)]
7525        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7526    }
7527    #[allow(
7528        non_camel_case_types,
7529        non_snake_case,
7530        clippy::pub_underscore_fields,
7531        clippy::style
7532    )]
7533    const _: () = {
7534        use alloy::sol_types as alloy_sol_types;
7535        {
7536            #[doc(hidden)]
7537            #[allow(dead_code)]
7538            type UnderlyingSolTuple<'a> = ();
7539            #[doc(hidden)]
7540            type UnderlyingRustTuple<'a> = ();
7541            #[cfg(test)]
7542            #[allow(dead_code, unreachable_patterns)]
7543            fn _type_assertion(
7544                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7545            ) {
7546                match _t {
7547                    alloy_sol_types::private::AssertTypeEq::<
7548                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7549                    >(_) => {}
7550                }
7551            }
7552            #[automatically_derived]
7553            #[doc(hidden)]
7554            impl ::core::convert::From<currentBlockNumberCall>
7555            for UnderlyingRustTuple<'_> {
7556                fn from(value: currentBlockNumberCall) -> Self {
7557                    ()
7558                }
7559            }
7560            #[automatically_derived]
7561            #[doc(hidden)]
7562            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7563            for currentBlockNumberCall {
7564                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7565                    Self
7566                }
7567            }
7568        }
7569        {
7570            #[doc(hidden)]
7571            #[allow(dead_code)]
7572            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7573            #[doc(hidden)]
7574            type UnderlyingRustTuple<'a> = (
7575                alloy::sol_types::private::primitives::aliases::U256,
7576            );
7577            #[cfg(test)]
7578            #[allow(dead_code, unreachable_patterns)]
7579            fn _type_assertion(
7580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7581            ) {
7582                match _t {
7583                    alloy_sol_types::private::AssertTypeEq::<
7584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7585                    >(_) => {}
7586                }
7587            }
7588            #[automatically_derived]
7589            #[doc(hidden)]
7590            impl ::core::convert::From<currentBlockNumberReturn>
7591            for UnderlyingRustTuple<'_> {
7592                fn from(value: currentBlockNumberReturn) -> Self {
7593                    (value._0,)
7594                }
7595            }
7596            #[automatically_derived]
7597            #[doc(hidden)]
7598            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7599            for currentBlockNumberReturn {
7600                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7601                    Self { _0: tuple.0 }
7602                }
7603            }
7604        }
7605        #[automatically_derived]
7606        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7607            type Parameters<'a> = ();
7608            type Token<'a> = <Self::Parameters<
7609                'a,
7610            > as alloy_sol_types::SolType>::Token<'a>;
7611            type Return = alloy::sol_types::private::primitives::aliases::U256;
7612            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7613            type ReturnToken<'a> = <Self::ReturnTuple<
7614                'a,
7615            > as alloy_sol_types::SolType>::Token<'a>;
7616            const SIGNATURE: &'static str = "currentBlockNumber()";
7617            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7618            #[inline]
7619            fn new<'a>(
7620                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7621            ) -> Self {
7622                tuple.into()
7623            }
7624            #[inline]
7625            fn tokenize(&self) -> Self::Token<'_> {
7626                ()
7627            }
7628            #[inline]
7629            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7630                (
7631                    <alloy::sol_types::sol_data::Uint<
7632                        256,
7633                    > as alloy_sol_types::SolType>::tokenize(ret),
7634                )
7635            }
7636            #[inline]
7637            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7638                <Self::ReturnTuple<
7639                    '_,
7640                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7641                    .map(|r| {
7642                        let r: currentBlockNumberReturn = r.into();
7643                        r._0
7644                    })
7645            }
7646            #[inline]
7647            fn abi_decode_returns_validate(
7648                data: &[u8],
7649            ) -> alloy_sol_types::Result<Self::Return> {
7650                <Self::ReturnTuple<
7651                    '_,
7652                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7653                    .map(|r| {
7654                        let r: currentBlockNumberReturn = r.into();
7655                        r._0
7656                    })
7657            }
7658        }
7659    };
7660    #[derive(serde::Serialize, serde::Deserialize)]
7661    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7662    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7663```solidity
7664function disablePermissionedProverMode() external;
7665```*/
7666    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7667    #[derive(Clone)]
7668    pub struct disablePermissionedProverModeCall;
7669    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7671    #[derive(Clone)]
7672    pub struct disablePermissionedProverModeReturn {}
7673    #[allow(
7674        non_camel_case_types,
7675        non_snake_case,
7676        clippy::pub_underscore_fields,
7677        clippy::style
7678    )]
7679    const _: () = {
7680        use alloy::sol_types as alloy_sol_types;
7681        {
7682            #[doc(hidden)]
7683            #[allow(dead_code)]
7684            type UnderlyingSolTuple<'a> = ();
7685            #[doc(hidden)]
7686            type UnderlyingRustTuple<'a> = ();
7687            #[cfg(test)]
7688            #[allow(dead_code, unreachable_patterns)]
7689            fn _type_assertion(
7690                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7691            ) {
7692                match _t {
7693                    alloy_sol_types::private::AssertTypeEq::<
7694                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7695                    >(_) => {}
7696                }
7697            }
7698            #[automatically_derived]
7699            #[doc(hidden)]
7700            impl ::core::convert::From<disablePermissionedProverModeCall>
7701            for UnderlyingRustTuple<'_> {
7702                fn from(value: disablePermissionedProverModeCall) -> Self {
7703                    ()
7704                }
7705            }
7706            #[automatically_derived]
7707            #[doc(hidden)]
7708            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7709            for disablePermissionedProverModeCall {
7710                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7711                    Self
7712                }
7713            }
7714        }
7715        {
7716            #[doc(hidden)]
7717            #[allow(dead_code)]
7718            type UnderlyingSolTuple<'a> = ();
7719            #[doc(hidden)]
7720            type UnderlyingRustTuple<'a> = ();
7721            #[cfg(test)]
7722            #[allow(dead_code, unreachable_patterns)]
7723            fn _type_assertion(
7724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7725            ) {
7726                match _t {
7727                    alloy_sol_types::private::AssertTypeEq::<
7728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7729                    >(_) => {}
7730                }
7731            }
7732            #[automatically_derived]
7733            #[doc(hidden)]
7734            impl ::core::convert::From<disablePermissionedProverModeReturn>
7735            for UnderlyingRustTuple<'_> {
7736                fn from(value: disablePermissionedProverModeReturn) -> Self {
7737                    ()
7738                }
7739            }
7740            #[automatically_derived]
7741            #[doc(hidden)]
7742            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7743            for disablePermissionedProverModeReturn {
7744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7745                    Self {}
7746                }
7747            }
7748        }
7749        impl disablePermissionedProverModeReturn {
7750            fn _tokenize(
7751                &self,
7752            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7753                '_,
7754            > {
7755                ()
7756            }
7757        }
7758        #[automatically_derived]
7759        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7760            type Parameters<'a> = ();
7761            type Token<'a> = <Self::Parameters<
7762                'a,
7763            > as alloy_sol_types::SolType>::Token<'a>;
7764            type Return = disablePermissionedProverModeReturn;
7765            type ReturnTuple<'a> = ();
7766            type ReturnToken<'a> = <Self::ReturnTuple<
7767                'a,
7768            > as alloy_sol_types::SolType>::Token<'a>;
7769            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7770            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7771            #[inline]
7772            fn new<'a>(
7773                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7774            ) -> Self {
7775                tuple.into()
7776            }
7777            #[inline]
7778            fn tokenize(&self) -> Self::Token<'_> {
7779                ()
7780            }
7781            #[inline]
7782            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7783                disablePermissionedProverModeReturn::_tokenize(ret)
7784            }
7785            #[inline]
7786            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7787                <Self::ReturnTuple<
7788                    '_,
7789                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7790                    .map(Into::into)
7791            }
7792            #[inline]
7793            fn abi_decode_returns_validate(
7794                data: &[u8],
7795            ) -> alloy_sol_types::Result<Self::Return> {
7796                <Self::ReturnTuple<
7797                    '_,
7798                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7799                    .map(Into::into)
7800            }
7801        }
7802    };
7803    #[derive(serde::Serialize, serde::Deserialize)]
7804    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7805    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7806```solidity
7807function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7808```*/
7809    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7810    #[derive(Clone)]
7811    pub struct finalizedStateCall;
7812    #[derive(serde::Serialize, serde::Deserialize)]
7813    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7814    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7815    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7816    #[derive(Clone)]
7817    pub struct finalizedStateReturn {
7818        #[allow(missing_docs)]
7819        pub viewNum: u64,
7820        #[allow(missing_docs)]
7821        pub blockHeight: u64,
7822        #[allow(missing_docs)]
7823        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7824    }
7825    #[allow(
7826        non_camel_case_types,
7827        non_snake_case,
7828        clippy::pub_underscore_fields,
7829        clippy::style
7830    )]
7831    const _: () = {
7832        use alloy::sol_types as alloy_sol_types;
7833        {
7834            #[doc(hidden)]
7835            #[allow(dead_code)]
7836            type UnderlyingSolTuple<'a> = ();
7837            #[doc(hidden)]
7838            type UnderlyingRustTuple<'a> = ();
7839            #[cfg(test)]
7840            #[allow(dead_code, unreachable_patterns)]
7841            fn _type_assertion(
7842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7843            ) {
7844                match _t {
7845                    alloy_sol_types::private::AssertTypeEq::<
7846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7847                    >(_) => {}
7848                }
7849            }
7850            #[automatically_derived]
7851            #[doc(hidden)]
7852            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7853                fn from(value: finalizedStateCall) -> Self {
7854                    ()
7855                }
7856            }
7857            #[automatically_derived]
7858            #[doc(hidden)]
7859            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7860                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7861                    Self
7862                }
7863            }
7864        }
7865        {
7866            #[doc(hidden)]
7867            #[allow(dead_code)]
7868            type UnderlyingSolTuple<'a> = (
7869                alloy::sol_types::sol_data::Uint<64>,
7870                alloy::sol_types::sol_data::Uint<64>,
7871                BN254::ScalarField,
7872            );
7873            #[doc(hidden)]
7874            type UnderlyingRustTuple<'a> = (
7875                u64,
7876                u64,
7877                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7878            );
7879            #[cfg(test)]
7880            #[allow(dead_code, unreachable_patterns)]
7881            fn _type_assertion(
7882                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7883            ) {
7884                match _t {
7885                    alloy_sol_types::private::AssertTypeEq::<
7886                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7887                    >(_) => {}
7888                }
7889            }
7890            #[automatically_derived]
7891            #[doc(hidden)]
7892            impl ::core::convert::From<finalizedStateReturn>
7893            for UnderlyingRustTuple<'_> {
7894                fn from(value: finalizedStateReturn) -> Self {
7895                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7896                }
7897            }
7898            #[automatically_derived]
7899            #[doc(hidden)]
7900            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7901            for finalizedStateReturn {
7902                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7903                    Self {
7904                        viewNum: tuple.0,
7905                        blockHeight: tuple.1,
7906                        blockCommRoot: tuple.2,
7907                    }
7908                }
7909            }
7910        }
7911        impl finalizedStateReturn {
7912            fn _tokenize(
7913                &self,
7914            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7915                (
7916                    <alloy::sol_types::sol_data::Uint<
7917                        64,
7918                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7919                    <alloy::sol_types::sol_data::Uint<
7920                        64,
7921                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7922                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7923                        &self.blockCommRoot,
7924                    ),
7925                )
7926            }
7927        }
7928        #[automatically_derived]
7929        impl alloy_sol_types::SolCall for finalizedStateCall {
7930            type Parameters<'a> = ();
7931            type Token<'a> = <Self::Parameters<
7932                'a,
7933            > as alloy_sol_types::SolType>::Token<'a>;
7934            type Return = finalizedStateReturn;
7935            type ReturnTuple<'a> = (
7936                alloy::sol_types::sol_data::Uint<64>,
7937                alloy::sol_types::sol_data::Uint<64>,
7938                BN254::ScalarField,
7939            );
7940            type ReturnToken<'a> = <Self::ReturnTuple<
7941                'a,
7942            > as alloy_sol_types::SolType>::Token<'a>;
7943            const SIGNATURE: &'static str = "finalizedState()";
7944            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7945            #[inline]
7946            fn new<'a>(
7947                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7948            ) -> Self {
7949                tuple.into()
7950            }
7951            #[inline]
7952            fn tokenize(&self) -> Self::Token<'_> {
7953                ()
7954            }
7955            #[inline]
7956            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7957                finalizedStateReturn::_tokenize(ret)
7958            }
7959            #[inline]
7960            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7961                <Self::ReturnTuple<
7962                    '_,
7963                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7964                    .map(Into::into)
7965            }
7966            #[inline]
7967            fn abi_decode_returns_validate(
7968                data: &[u8],
7969            ) -> alloy_sol_types::Result<Self::Return> {
7970                <Self::ReturnTuple<
7971                    '_,
7972                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7973                    .map(Into::into)
7974            }
7975        }
7976    };
7977    #[derive(serde::Serialize, serde::Deserialize)]
7978    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7979    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7980```solidity
7981function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7982```*/
7983    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7984    #[derive(Clone)]
7985    pub struct genesisStakeTableStateCall;
7986    #[derive(serde::Serialize, serde::Deserialize)]
7987    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7988    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7989    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7990    #[derive(Clone)]
7991    pub struct genesisStakeTableStateReturn {
7992        #[allow(missing_docs)]
7993        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7994        #[allow(missing_docs)]
7995        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7996        #[allow(missing_docs)]
7997        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7998        #[allow(missing_docs)]
7999        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8000    }
8001    #[allow(
8002        non_camel_case_types,
8003        non_snake_case,
8004        clippy::pub_underscore_fields,
8005        clippy::style
8006    )]
8007    const _: () = {
8008        use alloy::sol_types as alloy_sol_types;
8009        {
8010            #[doc(hidden)]
8011            #[allow(dead_code)]
8012            type UnderlyingSolTuple<'a> = ();
8013            #[doc(hidden)]
8014            type UnderlyingRustTuple<'a> = ();
8015            #[cfg(test)]
8016            #[allow(dead_code, unreachable_patterns)]
8017            fn _type_assertion(
8018                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8019            ) {
8020                match _t {
8021                    alloy_sol_types::private::AssertTypeEq::<
8022                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8023                    >(_) => {}
8024                }
8025            }
8026            #[automatically_derived]
8027            #[doc(hidden)]
8028            impl ::core::convert::From<genesisStakeTableStateCall>
8029            for UnderlyingRustTuple<'_> {
8030                fn from(value: genesisStakeTableStateCall) -> Self {
8031                    ()
8032                }
8033            }
8034            #[automatically_derived]
8035            #[doc(hidden)]
8036            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8037            for genesisStakeTableStateCall {
8038                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8039                    Self
8040                }
8041            }
8042        }
8043        {
8044            #[doc(hidden)]
8045            #[allow(dead_code)]
8046            type UnderlyingSolTuple<'a> = (
8047                alloy::sol_types::sol_data::Uint<256>,
8048                BN254::ScalarField,
8049                BN254::ScalarField,
8050                BN254::ScalarField,
8051            );
8052            #[doc(hidden)]
8053            type UnderlyingRustTuple<'a> = (
8054                alloy::sol_types::private::primitives::aliases::U256,
8055                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8056                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8057                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8058            );
8059            #[cfg(test)]
8060            #[allow(dead_code, unreachable_patterns)]
8061            fn _type_assertion(
8062                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8063            ) {
8064                match _t {
8065                    alloy_sol_types::private::AssertTypeEq::<
8066                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8067                    >(_) => {}
8068                }
8069            }
8070            #[automatically_derived]
8071            #[doc(hidden)]
8072            impl ::core::convert::From<genesisStakeTableStateReturn>
8073            for UnderlyingRustTuple<'_> {
8074                fn from(value: genesisStakeTableStateReturn) -> Self {
8075                    (
8076                        value.threshold,
8077                        value.blsKeyComm,
8078                        value.schnorrKeyComm,
8079                        value.amountComm,
8080                    )
8081                }
8082            }
8083            #[automatically_derived]
8084            #[doc(hidden)]
8085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8086            for genesisStakeTableStateReturn {
8087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8088                    Self {
8089                        threshold: tuple.0,
8090                        blsKeyComm: tuple.1,
8091                        schnorrKeyComm: tuple.2,
8092                        amountComm: tuple.3,
8093                    }
8094                }
8095            }
8096        }
8097        impl genesisStakeTableStateReturn {
8098            fn _tokenize(
8099                &self,
8100            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
8101                '_,
8102            > {
8103                (
8104                    <alloy::sol_types::sol_data::Uint<
8105                        256,
8106                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
8107                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8108                        &self.blsKeyComm,
8109                    ),
8110                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8111                        &self.schnorrKeyComm,
8112                    ),
8113                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8114                        &self.amountComm,
8115                    ),
8116                )
8117            }
8118        }
8119        #[automatically_derived]
8120        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
8121            type Parameters<'a> = ();
8122            type Token<'a> = <Self::Parameters<
8123                'a,
8124            > as alloy_sol_types::SolType>::Token<'a>;
8125            type Return = genesisStakeTableStateReturn;
8126            type ReturnTuple<'a> = (
8127                alloy::sol_types::sol_data::Uint<256>,
8128                BN254::ScalarField,
8129                BN254::ScalarField,
8130                BN254::ScalarField,
8131            );
8132            type ReturnToken<'a> = <Self::ReturnTuple<
8133                'a,
8134            > as alloy_sol_types::SolType>::Token<'a>;
8135            const SIGNATURE: &'static str = "genesisStakeTableState()";
8136            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
8137            #[inline]
8138            fn new<'a>(
8139                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8140            ) -> Self {
8141                tuple.into()
8142            }
8143            #[inline]
8144            fn tokenize(&self) -> Self::Token<'_> {
8145                ()
8146            }
8147            #[inline]
8148            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8149                genesisStakeTableStateReturn::_tokenize(ret)
8150            }
8151            #[inline]
8152            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8153                <Self::ReturnTuple<
8154                    '_,
8155                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8156                    .map(Into::into)
8157            }
8158            #[inline]
8159            fn abi_decode_returns_validate(
8160                data: &[u8],
8161            ) -> alloy_sol_types::Result<Self::Return> {
8162                <Self::ReturnTuple<
8163                    '_,
8164                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8165                    .map(Into::into)
8166            }
8167        }
8168    };
8169    #[derive(serde::Serialize, serde::Deserialize)]
8170    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8171    /**Function with signature `genesisState()` and selector `0xd24d933d`.
8172```solidity
8173function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
8174```*/
8175    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8176    #[derive(Clone)]
8177    pub struct genesisStateCall;
8178    #[derive(serde::Serialize, serde::Deserialize)]
8179    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8180    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
8181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8182    #[derive(Clone)]
8183    pub struct genesisStateReturn {
8184        #[allow(missing_docs)]
8185        pub viewNum: u64,
8186        #[allow(missing_docs)]
8187        pub blockHeight: u64,
8188        #[allow(missing_docs)]
8189        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8190    }
8191    #[allow(
8192        non_camel_case_types,
8193        non_snake_case,
8194        clippy::pub_underscore_fields,
8195        clippy::style
8196    )]
8197    const _: () = {
8198        use alloy::sol_types as alloy_sol_types;
8199        {
8200            #[doc(hidden)]
8201            #[allow(dead_code)]
8202            type UnderlyingSolTuple<'a> = ();
8203            #[doc(hidden)]
8204            type UnderlyingRustTuple<'a> = ();
8205            #[cfg(test)]
8206            #[allow(dead_code, unreachable_patterns)]
8207            fn _type_assertion(
8208                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8209            ) {
8210                match _t {
8211                    alloy_sol_types::private::AssertTypeEq::<
8212                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8213                    >(_) => {}
8214                }
8215            }
8216            #[automatically_derived]
8217            #[doc(hidden)]
8218            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
8219                fn from(value: genesisStateCall) -> Self {
8220                    ()
8221                }
8222            }
8223            #[automatically_derived]
8224            #[doc(hidden)]
8225            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
8226                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8227                    Self
8228                }
8229            }
8230        }
8231        {
8232            #[doc(hidden)]
8233            #[allow(dead_code)]
8234            type UnderlyingSolTuple<'a> = (
8235                alloy::sol_types::sol_data::Uint<64>,
8236                alloy::sol_types::sol_data::Uint<64>,
8237                BN254::ScalarField,
8238            );
8239            #[doc(hidden)]
8240            type UnderlyingRustTuple<'a> = (
8241                u64,
8242                u64,
8243                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8244            );
8245            #[cfg(test)]
8246            #[allow(dead_code, unreachable_patterns)]
8247            fn _type_assertion(
8248                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8249            ) {
8250                match _t {
8251                    alloy_sol_types::private::AssertTypeEq::<
8252                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8253                    >(_) => {}
8254                }
8255            }
8256            #[automatically_derived]
8257            #[doc(hidden)]
8258            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
8259                fn from(value: genesisStateReturn) -> Self {
8260                    (value.viewNum, value.blockHeight, value.blockCommRoot)
8261                }
8262            }
8263            #[automatically_derived]
8264            #[doc(hidden)]
8265            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
8266                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8267                    Self {
8268                        viewNum: tuple.0,
8269                        blockHeight: tuple.1,
8270                        blockCommRoot: tuple.2,
8271                    }
8272                }
8273            }
8274        }
8275        impl genesisStateReturn {
8276            fn _tokenize(
8277                &self,
8278            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8279                (
8280                    <alloy::sol_types::sol_data::Uint<
8281                        64,
8282                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
8283                    <alloy::sol_types::sol_data::Uint<
8284                        64,
8285                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
8286                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8287                        &self.blockCommRoot,
8288                    ),
8289                )
8290            }
8291        }
8292        #[automatically_derived]
8293        impl alloy_sol_types::SolCall for genesisStateCall {
8294            type Parameters<'a> = ();
8295            type Token<'a> = <Self::Parameters<
8296                'a,
8297            > as alloy_sol_types::SolType>::Token<'a>;
8298            type Return = genesisStateReturn;
8299            type ReturnTuple<'a> = (
8300                alloy::sol_types::sol_data::Uint<64>,
8301                alloy::sol_types::sol_data::Uint<64>,
8302                BN254::ScalarField,
8303            );
8304            type ReturnToken<'a> = <Self::ReturnTuple<
8305                'a,
8306            > as alloy_sol_types::SolType>::Token<'a>;
8307            const SIGNATURE: &'static str = "genesisState()";
8308            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
8309            #[inline]
8310            fn new<'a>(
8311                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8312            ) -> Self {
8313                tuple.into()
8314            }
8315            #[inline]
8316            fn tokenize(&self) -> Self::Token<'_> {
8317                ()
8318            }
8319            #[inline]
8320            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8321                genesisStateReturn::_tokenize(ret)
8322            }
8323            #[inline]
8324            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8325                <Self::ReturnTuple<
8326                    '_,
8327                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8328                    .map(Into::into)
8329            }
8330            #[inline]
8331            fn abi_decode_returns_validate(
8332                data: &[u8],
8333            ) -> alloy_sol_types::Result<Self::Return> {
8334                <Self::ReturnTuple<
8335                    '_,
8336                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8337                    .map(Into::into)
8338            }
8339        }
8340    };
8341    #[derive(serde::Serialize, serde::Deserialize)]
8342    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8343    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
8344```solidity
8345function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
8346```*/
8347    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8348    #[derive(Clone)]
8349    pub struct getHotShotCommitmentCall {
8350        #[allow(missing_docs)]
8351        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
8352    }
8353    #[derive(serde::Serialize, serde::Deserialize)]
8354    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8355    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
8356    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8357    #[derive(Clone)]
8358    pub struct getHotShotCommitmentReturn {
8359        #[allow(missing_docs)]
8360        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8361        #[allow(missing_docs)]
8362        pub hotshotBlockHeight: u64,
8363    }
8364    #[allow(
8365        non_camel_case_types,
8366        non_snake_case,
8367        clippy::pub_underscore_fields,
8368        clippy::style
8369    )]
8370    const _: () = {
8371        use alloy::sol_types as alloy_sol_types;
8372        {
8373            #[doc(hidden)]
8374            #[allow(dead_code)]
8375            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8376            #[doc(hidden)]
8377            type UnderlyingRustTuple<'a> = (
8378                alloy::sol_types::private::primitives::aliases::U256,
8379            );
8380            #[cfg(test)]
8381            #[allow(dead_code, unreachable_patterns)]
8382            fn _type_assertion(
8383                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8384            ) {
8385                match _t {
8386                    alloy_sol_types::private::AssertTypeEq::<
8387                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8388                    >(_) => {}
8389                }
8390            }
8391            #[automatically_derived]
8392            #[doc(hidden)]
8393            impl ::core::convert::From<getHotShotCommitmentCall>
8394            for UnderlyingRustTuple<'_> {
8395                fn from(value: getHotShotCommitmentCall) -> Self {
8396                    (value.hotShotBlockHeight,)
8397                }
8398            }
8399            #[automatically_derived]
8400            #[doc(hidden)]
8401            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8402            for getHotShotCommitmentCall {
8403                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8404                    Self {
8405                        hotShotBlockHeight: tuple.0,
8406                    }
8407                }
8408            }
8409        }
8410        {
8411            #[doc(hidden)]
8412            #[allow(dead_code)]
8413            type UnderlyingSolTuple<'a> = (
8414                BN254::ScalarField,
8415                alloy::sol_types::sol_data::Uint<64>,
8416            );
8417            #[doc(hidden)]
8418            type UnderlyingRustTuple<'a> = (
8419                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
8420                u64,
8421            );
8422            #[cfg(test)]
8423            #[allow(dead_code, unreachable_patterns)]
8424            fn _type_assertion(
8425                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8426            ) {
8427                match _t {
8428                    alloy_sol_types::private::AssertTypeEq::<
8429                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8430                    >(_) => {}
8431                }
8432            }
8433            #[automatically_derived]
8434            #[doc(hidden)]
8435            impl ::core::convert::From<getHotShotCommitmentReturn>
8436            for UnderlyingRustTuple<'_> {
8437                fn from(value: getHotShotCommitmentReturn) -> Self {
8438                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
8439                }
8440            }
8441            #[automatically_derived]
8442            #[doc(hidden)]
8443            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8444            for getHotShotCommitmentReturn {
8445                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8446                    Self {
8447                        hotShotBlockCommRoot: tuple.0,
8448                        hotshotBlockHeight: tuple.1,
8449                    }
8450                }
8451            }
8452        }
8453        impl getHotShotCommitmentReturn {
8454            fn _tokenize(
8455                &self,
8456            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
8457                '_,
8458            > {
8459                (
8460                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
8461                        &self.hotShotBlockCommRoot,
8462                    ),
8463                    <alloy::sol_types::sol_data::Uint<
8464                        64,
8465                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
8466                )
8467            }
8468        }
8469        #[automatically_derived]
8470        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
8471            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8472            type Token<'a> = <Self::Parameters<
8473                'a,
8474            > as alloy_sol_types::SolType>::Token<'a>;
8475            type Return = getHotShotCommitmentReturn;
8476            type ReturnTuple<'a> = (
8477                BN254::ScalarField,
8478                alloy::sol_types::sol_data::Uint<64>,
8479            );
8480            type ReturnToken<'a> = <Self::ReturnTuple<
8481                'a,
8482            > as alloy_sol_types::SolType>::Token<'a>;
8483            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
8484            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
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                    <alloy::sol_types::sol_data::Uint<
8495                        256,
8496                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8497                )
8498            }
8499            #[inline]
8500            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8501                getHotShotCommitmentReturn::_tokenize(ret)
8502            }
8503            #[inline]
8504            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8505                <Self::ReturnTuple<
8506                    '_,
8507                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8508                    .map(Into::into)
8509            }
8510            #[inline]
8511            fn abi_decode_returns_validate(
8512                data: &[u8],
8513            ) -> alloy_sol_types::Result<Self::Return> {
8514                <Self::ReturnTuple<
8515                    '_,
8516                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8517                    .map(Into::into)
8518            }
8519        }
8520    };
8521    #[derive(serde::Serialize, serde::Deserialize)]
8522    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8523    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8524```solidity
8525function getStateHistoryCount() external view returns (uint256);
8526```*/
8527    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8528    #[derive(Clone)]
8529    pub struct getStateHistoryCountCall;
8530    #[derive(serde::Serialize, serde::Deserialize)]
8531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8532    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8533    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8534    #[derive(Clone)]
8535    pub struct getStateHistoryCountReturn {
8536        #[allow(missing_docs)]
8537        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8538    }
8539    #[allow(
8540        non_camel_case_types,
8541        non_snake_case,
8542        clippy::pub_underscore_fields,
8543        clippy::style
8544    )]
8545    const _: () = {
8546        use alloy::sol_types as alloy_sol_types;
8547        {
8548            #[doc(hidden)]
8549            #[allow(dead_code)]
8550            type UnderlyingSolTuple<'a> = ();
8551            #[doc(hidden)]
8552            type UnderlyingRustTuple<'a> = ();
8553            #[cfg(test)]
8554            #[allow(dead_code, unreachable_patterns)]
8555            fn _type_assertion(
8556                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8557            ) {
8558                match _t {
8559                    alloy_sol_types::private::AssertTypeEq::<
8560                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8561                    >(_) => {}
8562                }
8563            }
8564            #[automatically_derived]
8565            #[doc(hidden)]
8566            impl ::core::convert::From<getStateHistoryCountCall>
8567            for UnderlyingRustTuple<'_> {
8568                fn from(value: getStateHistoryCountCall) -> Self {
8569                    ()
8570                }
8571            }
8572            #[automatically_derived]
8573            #[doc(hidden)]
8574            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8575            for getStateHistoryCountCall {
8576                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8577                    Self
8578                }
8579            }
8580        }
8581        {
8582            #[doc(hidden)]
8583            #[allow(dead_code)]
8584            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8585            #[doc(hidden)]
8586            type UnderlyingRustTuple<'a> = (
8587                alloy::sol_types::private::primitives::aliases::U256,
8588            );
8589            #[cfg(test)]
8590            #[allow(dead_code, unreachable_patterns)]
8591            fn _type_assertion(
8592                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8593            ) {
8594                match _t {
8595                    alloy_sol_types::private::AssertTypeEq::<
8596                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8597                    >(_) => {}
8598                }
8599            }
8600            #[automatically_derived]
8601            #[doc(hidden)]
8602            impl ::core::convert::From<getStateHistoryCountReturn>
8603            for UnderlyingRustTuple<'_> {
8604                fn from(value: getStateHistoryCountReturn) -> Self {
8605                    (value._0,)
8606                }
8607            }
8608            #[automatically_derived]
8609            #[doc(hidden)]
8610            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8611            for getStateHistoryCountReturn {
8612                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8613                    Self { _0: tuple.0 }
8614                }
8615            }
8616        }
8617        #[automatically_derived]
8618        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8619            type Parameters<'a> = ();
8620            type Token<'a> = <Self::Parameters<
8621                'a,
8622            > as alloy_sol_types::SolType>::Token<'a>;
8623            type Return = alloy::sol_types::private::primitives::aliases::U256;
8624            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8625            type ReturnToken<'a> = <Self::ReturnTuple<
8626                'a,
8627            > as alloy_sol_types::SolType>::Token<'a>;
8628            const SIGNATURE: &'static str = "getStateHistoryCount()";
8629            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8630            #[inline]
8631            fn new<'a>(
8632                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8633            ) -> Self {
8634                tuple.into()
8635            }
8636            #[inline]
8637            fn tokenize(&self) -> Self::Token<'_> {
8638                ()
8639            }
8640            #[inline]
8641            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8642                (
8643                    <alloy::sol_types::sol_data::Uint<
8644                        256,
8645                    > as alloy_sol_types::SolType>::tokenize(ret),
8646                )
8647            }
8648            #[inline]
8649            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8650                <Self::ReturnTuple<
8651                    '_,
8652                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8653                    .map(|r| {
8654                        let r: getStateHistoryCountReturn = r.into();
8655                        r._0
8656                    })
8657            }
8658            #[inline]
8659            fn abi_decode_returns_validate(
8660                data: &[u8],
8661            ) -> alloy_sol_types::Result<Self::Return> {
8662                <Self::ReturnTuple<
8663                    '_,
8664                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8665                    .map(|r| {
8666                        let r: getStateHistoryCountReturn = r.into();
8667                        r._0
8668                    })
8669            }
8670        }
8671    };
8672    #[derive(serde::Serialize, serde::Deserialize)]
8673    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8674    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8675```solidity
8676function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8677```*/
8678    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8679    #[derive(Clone)]
8680    pub struct getVersionCall;
8681    #[derive(serde::Serialize, serde::Deserialize)]
8682    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8683    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8684    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8685    #[derive(Clone)]
8686    pub struct getVersionReturn {
8687        #[allow(missing_docs)]
8688        pub majorVersion: u8,
8689        #[allow(missing_docs)]
8690        pub minorVersion: u8,
8691        #[allow(missing_docs)]
8692        pub patchVersion: u8,
8693    }
8694    #[allow(
8695        non_camel_case_types,
8696        non_snake_case,
8697        clippy::pub_underscore_fields,
8698        clippy::style
8699    )]
8700    const _: () = {
8701        use alloy::sol_types as alloy_sol_types;
8702        {
8703            #[doc(hidden)]
8704            #[allow(dead_code)]
8705            type UnderlyingSolTuple<'a> = ();
8706            #[doc(hidden)]
8707            type UnderlyingRustTuple<'a> = ();
8708            #[cfg(test)]
8709            #[allow(dead_code, unreachable_patterns)]
8710            fn _type_assertion(
8711                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8712            ) {
8713                match _t {
8714                    alloy_sol_types::private::AssertTypeEq::<
8715                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8716                    >(_) => {}
8717                }
8718            }
8719            #[automatically_derived]
8720            #[doc(hidden)]
8721            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8722                fn from(value: getVersionCall) -> Self {
8723                    ()
8724                }
8725            }
8726            #[automatically_derived]
8727            #[doc(hidden)]
8728            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8729                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8730                    Self
8731                }
8732            }
8733        }
8734        {
8735            #[doc(hidden)]
8736            #[allow(dead_code)]
8737            type UnderlyingSolTuple<'a> = (
8738                alloy::sol_types::sol_data::Uint<8>,
8739                alloy::sol_types::sol_data::Uint<8>,
8740                alloy::sol_types::sol_data::Uint<8>,
8741            );
8742            #[doc(hidden)]
8743            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8744            #[cfg(test)]
8745            #[allow(dead_code, unreachable_patterns)]
8746            fn _type_assertion(
8747                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8748            ) {
8749                match _t {
8750                    alloy_sol_types::private::AssertTypeEq::<
8751                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8752                    >(_) => {}
8753                }
8754            }
8755            #[automatically_derived]
8756            #[doc(hidden)]
8757            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8758                fn from(value: getVersionReturn) -> Self {
8759                    (value.majorVersion, value.minorVersion, value.patchVersion)
8760                }
8761            }
8762            #[automatically_derived]
8763            #[doc(hidden)]
8764            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8765                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8766                    Self {
8767                        majorVersion: tuple.0,
8768                        minorVersion: tuple.1,
8769                        patchVersion: tuple.2,
8770                    }
8771                }
8772            }
8773        }
8774        impl getVersionReturn {
8775            fn _tokenize(
8776                &self,
8777            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8778                (
8779                    <alloy::sol_types::sol_data::Uint<
8780                        8,
8781                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8782                    <alloy::sol_types::sol_data::Uint<
8783                        8,
8784                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8785                    <alloy::sol_types::sol_data::Uint<
8786                        8,
8787                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8788                )
8789            }
8790        }
8791        #[automatically_derived]
8792        impl alloy_sol_types::SolCall for getVersionCall {
8793            type Parameters<'a> = ();
8794            type Token<'a> = <Self::Parameters<
8795                'a,
8796            > as alloy_sol_types::SolType>::Token<'a>;
8797            type Return = getVersionReturn;
8798            type ReturnTuple<'a> = (
8799                alloy::sol_types::sol_data::Uint<8>,
8800                alloy::sol_types::sol_data::Uint<8>,
8801                alloy::sol_types::sol_data::Uint<8>,
8802            );
8803            type ReturnToken<'a> = <Self::ReturnTuple<
8804                'a,
8805            > as alloy_sol_types::SolType>::Token<'a>;
8806            const SIGNATURE: &'static str = "getVersion()";
8807            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8808            #[inline]
8809            fn new<'a>(
8810                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8811            ) -> Self {
8812                tuple.into()
8813            }
8814            #[inline]
8815            fn tokenize(&self) -> Self::Token<'_> {
8816                ()
8817            }
8818            #[inline]
8819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8820                getVersionReturn::_tokenize(ret)
8821            }
8822            #[inline]
8823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8824                <Self::ReturnTuple<
8825                    '_,
8826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8827                    .map(Into::into)
8828            }
8829            #[inline]
8830            fn abi_decode_returns_validate(
8831                data: &[u8],
8832            ) -> alloy_sol_types::Result<Self::Return> {
8833                <Self::ReturnTuple<
8834                    '_,
8835                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8836                    .map(Into::into)
8837            }
8838        }
8839    };
8840    #[derive(serde::Serialize, serde::Deserialize)]
8841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8842    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8843```solidity
8844function initialize(LightClient.LightClientState memory _genesis, LightClient.StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8845```*/
8846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8847    #[derive(Clone)]
8848    pub struct initializeCall {
8849        #[allow(missing_docs)]
8850        pub _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8851        #[allow(missing_docs)]
8852        pub _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8853        #[allow(missing_docs)]
8854        pub _stateHistoryRetentionPeriod: u32,
8855        #[allow(missing_docs)]
8856        pub owner: alloy::sol_types::private::Address,
8857    }
8858    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8859    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8860    #[derive(Clone)]
8861    pub struct initializeReturn {}
8862    #[allow(
8863        non_camel_case_types,
8864        non_snake_case,
8865        clippy::pub_underscore_fields,
8866        clippy::style
8867    )]
8868    const _: () = {
8869        use alloy::sol_types as alloy_sol_types;
8870        {
8871            #[doc(hidden)]
8872            #[allow(dead_code)]
8873            type UnderlyingSolTuple<'a> = (
8874                LightClient::LightClientState,
8875                LightClient::StakeTableState,
8876                alloy::sol_types::sol_data::Uint<32>,
8877                alloy::sol_types::sol_data::Address,
8878            );
8879            #[doc(hidden)]
8880            type UnderlyingRustTuple<'a> = (
8881                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
8882                <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
8883                u32,
8884                alloy::sol_types::private::Address,
8885            );
8886            #[cfg(test)]
8887            #[allow(dead_code, unreachable_patterns)]
8888            fn _type_assertion(
8889                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8890            ) {
8891                match _t {
8892                    alloy_sol_types::private::AssertTypeEq::<
8893                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8894                    >(_) => {}
8895                }
8896            }
8897            #[automatically_derived]
8898            #[doc(hidden)]
8899            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8900                fn from(value: initializeCall) -> Self {
8901                    (
8902                        value._genesis,
8903                        value._genesisStakeTableState,
8904                        value._stateHistoryRetentionPeriod,
8905                        value.owner,
8906                    )
8907                }
8908            }
8909            #[automatically_derived]
8910            #[doc(hidden)]
8911            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8912                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8913                    Self {
8914                        _genesis: tuple.0,
8915                        _genesisStakeTableState: tuple.1,
8916                        _stateHistoryRetentionPeriod: tuple.2,
8917                        owner: tuple.3,
8918                    }
8919                }
8920            }
8921        }
8922        {
8923            #[doc(hidden)]
8924            #[allow(dead_code)]
8925            type UnderlyingSolTuple<'a> = ();
8926            #[doc(hidden)]
8927            type UnderlyingRustTuple<'a> = ();
8928            #[cfg(test)]
8929            #[allow(dead_code, unreachable_patterns)]
8930            fn _type_assertion(
8931                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8932            ) {
8933                match _t {
8934                    alloy_sol_types::private::AssertTypeEq::<
8935                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8936                    >(_) => {}
8937                }
8938            }
8939            #[automatically_derived]
8940            #[doc(hidden)]
8941            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8942                fn from(value: initializeReturn) -> Self {
8943                    ()
8944                }
8945            }
8946            #[automatically_derived]
8947            #[doc(hidden)]
8948            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8949                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8950                    Self {}
8951                }
8952            }
8953        }
8954        impl initializeReturn {
8955            fn _tokenize(
8956                &self,
8957            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8958                ()
8959            }
8960        }
8961        #[automatically_derived]
8962        impl alloy_sol_types::SolCall for initializeCall {
8963            type Parameters<'a> = (
8964                LightClient::LightClientState,
8965                LightClient::StakeTableState,
8966                alloy::sol_types::sol_data::Uint<32>,
8967                alloy::sol_types::sol_data::Address,
8968            );
8969            type Token<'a> = <Self::Parameters<
8970                'a,
8971            > as alloy_sol_types::SolType>::Token<'a>;
8972            type Return = initializeReturn;
8973            type ReturnTuple<'a> = ();
8974            type ReturnToken<'a> = <Self::ReturnTuple<
8975                'a,
8976            > as alloy_sol_types::SolType>::Token<'a>;
8977            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8978            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
8979            #[inline]
8980            fn new<'a>(
8981                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8982            ) -> Self {
8983                tuple.into()
8984            }
8985            #[inline]
8986            fn tokenize(&self) -> Self::Token<'_> {
8987                (
8988                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
8989                        &self._genesis,
8990                    ),
8991                    <LightClient::StakeTableState as alloy_sol_types::SolType>::tokenize(
8992                        &self._genesisStakeTableState,
8993                    ),
8994                    <alloy::sol_types::sol_data::Uint<
8995                        32,
8996                    > as alloy_sol_types::SolType>::tokenize(
8997                        &self._stateHistoryRetentionPeriod,
8998                    ),
8999                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9000                        &self.owner,
9001                    ),
9002                )
9003            }
9004            #[inline]
9005            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9006                initializeReturn::_tokenize(ret)
9007            }
9008            #[inline]
9009            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9010                <Self::ReturnTuple<
9011                    '_,
9012                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9013                    .map(Into::into)
9014            }
9015            #[inline]
9016            fn abi_decode_returns_validate(
9017                data: &[u8],
9018            ) -> alloy_sol_types::Result<Self::Return> {
9019                <Self::ReturnTuple<
9020                    '_,
9021                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9022                    .map(Into::into)
9023            }
9024        }
9025    };
9026    #[derive(serde::Serialize, serde::Deserialize)]
9027    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9028    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
9029```solidity
9030function isPermissionedProverEnabled() external view returns (bool);
9031```*/
9032    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9033    #[derive(Clone)]
9034    pub struct isPermissionedProverEnabledCall;
9035    #[derive(serde::Serialize, serde::Deserialize)]
9036    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9037    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
9038    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9039    #[derive(Clone)]
9040    pub struct isPermissionedProverEnabledReturn {
9041        #[allow(missing_docs)]
9042        pub _0: bool,
9043    }
9044    #[allow(
9045        non_camel_case_types,
9046        non_snake_case,
9047        clippy::pub_underscore_fields,
9048        clippy::style
9049    )]
9050    const _: () = {
9051        use alloy::sol_types as alloy_sol_types;
9052        {
9053            #[doc(hidden)]
9054            #[allow(dead_code)]
9055            type UnderlyingSolTuple<'a> = ();
9056            #[doc(hidden)]
9057            type UnderlyingRustTuple<'a> = ();
9058            #[cfg(test)]
9059            #[allow(dead_code, unreachable_patterns)]
9060            fn _type_assertion(
9061                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9062            ) {
9063                match _t {
9064                    alloy_sol_types::private::AssertTypeEq::<
9065                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9066                    >(_) => {}
9067                }
9068            }
9069            #[automatically_derived]
9070            #[doc(hidden)]
9071            impl ::core::convert::From<isPermissionedProverEnabledCall>
9072            for UnderlyingRustTuple<'_> {
9073                fn from(value: isPermissionedProverEnabledCall) -> Self {
9074                    ()
9075                }
9076            }
9077            #[automatically_derived]
9078            #[doc(hidden)]
9079            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9080            for isPermissionedProverEnabledCall {
9081                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9082                    Self
9083                }
9084            }
9085        }
9086        {
9087            #[doc(hidden)]
9088            #[allow(dead_code)]
9089            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9090            #[doc(hidden)]
9091            type UnderlyingRustTuple<'a> = (bool,);
9092            #[cfg(test)]
9093            #[allow(dead_code, unreachable_patterns)]
9094            fn _type_assertion(
9095                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9096            ) {
9097                match _t {
9098                    alloy_sol_types::private::AssertTypeEq::<
9099                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9100                    >(_) => {}
9101                }
9102            }
9103            #[automatically_derived]
9104            #[doc(hidden)]
9105            impl ::core::convert::From<isPermissionedProverEnabledReturn>
9106            for UnderlyingRustTuple<'_> {
9107                fn from(value: isPermissionedProverEnabledReturn) -> Self {
9108                    (value._0,)
9109                }
9110            }
9111            #[automatically_derived]
9112            #[doc(hidden)]
9113            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9114            for isPermissionedProverEnabledReturn {
9115                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9116                    Self { _0: tuple.0 }
9117                }
9118            }
9119        }
9120        #[automatically_derived]
9121        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
9122            type Parameters<'a> = ();
9123            type Token<'a> = <Self::Parameters<
9124                'a,
9125            > as alloy_sol_types::SolType>::Token<'a>;
9126            type Return = bool;
9127            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9128            type ReturnToken<'a> = <Self::ReturnTuple<
9129                'a,
9130            > as alloy_sol_types::SolType>::Token<'a>;
9131            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
9132            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
9133            #[inline]
9134            fn new<'a>(
9135                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9136            ) -> Self {
9137                tuple.into()
9138            }
9139            #[inline]
9140            fn tokenize(&self) -> Self::Token<'_> {
9141                ()
9142            }
9143            #[inline]
9144            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9145                (
9146                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9147                        ret,
9148                    ),
9149                )
9150            }
9151            #[inline]
9152            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9153                <Self::ReturnTuple<
9154                    '_,
9155                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9156                    .map(|r| {
9157                        let r: isPermissionedProverEnabledReturn = r.into();
9158                        r._0
9159                    })
9160            }
9161            #[inline]
9162            fn abi_decode_returns_validate(
9163                data: &[u8],
9164            ) -> alloy_sol_types::Result<Self::Return> {
9165                <Self::ReturnTuple<
9166                    '_,
9167                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9168                    .map(|r| {
9169                        let r: isPermissionedProverEnabledReturn = r.into();
9170                        r._0
9171                    })
9172            }
9173        }
9174    };
9175    #[derive(serde::Serialize, serde::Deserialize)]
9176    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9177    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
9178```solidity
9179function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 threshold) external view returns (bool);
9180```*/
9181    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9182    #[derive(Clone)]
9183    pub struct lagOverEscapeHatchThresholdCall {
9184        #[allow(missing_docs)]
9185        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
9186        #[allow(missing_docs)]
9187        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
9188    }
9189    #[derive(serde::Serialize, serde::Deserialize)]
9190    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9191    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
9192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9193    #[derive(Clone)]
9194    pub struct lagOverEscapeHatchThresholdReturn {
9195        #[allow(missing_docs)]
9196        pub _0: bool,
9197    }
9198    #[allow(
9199        non_camel_case_types,
9200        non_snake_case,
9201        clippy::pub_underscore_fields,
9202        clippy::style
9203    )]
9204    const _: () = {
9205        use alloy::sol_types as alloy_sol_types;
9206        {
9207            #[doc(hidden)]
9208            #[allow(dead_code)]
9209            type UnderlyingSolTuple<'a> = (
9210                alloy::sol_types::sol_data::Uint<256>,
9211                alloy::sol_types::sol_data::Uint<256>,
9212            );
9213            #[doc(hidden)]
9214            type UnderlyingRustTuple<'a> = (
9215                alloy::sol_types::private::primitives::aliases::U256,
9216                alloy::sol_types::private::primitives::aliases::U256,
9217            );
9218            #[cfg(test)]
9219            #[allow(dead_code, unreachable_patterns)]
9220            fn _type_assertion(
9221                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9222            ) {
9223                match _t {
9224                    alloy_sol_types::private::AssertTypeEq::<
9225                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9226                    >(_) => {}
9227                }
9228            }
9229            #[automatically_derived]
9230            #[doc(hidden)]
9231            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
9232            for UnderlyingRustTuple<'_> {
9233                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
9234                    (value.blockNumber, value.threshold)
9235                }
9236            }
9237            #[automatically_derived]
9238            #[doc(hidden)]
9239            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9240            for lagOverEscapeHatchThresholdCall {
9241                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9242                    Self {
9243                        blockNumber: tuple.0,
9244                        threshold: tuple.1,
9245                    }
9246                }
9247            }
9248        }
9249        {
9250            #[doc(hidden)]
9251            #[allow(dead_code)]
9252            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9253            #[doc(hidden)]
9254            type UnderlyingRustTuple<'a> = (bool,);
9255            #[cfg(test)]
9256            #[allow(dead_code, unreachable_patterns)]
9257            fn _type_assertion(
9258                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9259            ) {
9260                match _t {
9261                    alloy_sol_types::private::AssertTypeEq::<
9262                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9263                    >(_) => {}
9264                }
9265            }
9266            #[automatically_derived]
9267            #[doc(hidden)]
9268            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
9269            for UnderlyingRustTuple<'_> {
9270                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
9271                    (value._0,)
9272                }
9273            }
9274            #[automatically_derived]
9275            #[doc(hidden)]
9276            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9277            for lagOverEscapeHatchThresholdReturn {
9278                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9279                    Self { _0: tuple.0 }
9280                }
9281            }
9282        }
9283        #[automatically_derived]
9284        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
9285            type Parameters<'a> = (
9286                alloy::sol_types::sol_data::Uint<256>,
9287                alloy::sol_types::sol_data::Uint<256>,
9288            );
9289            type Token<'a> = <Self::Parameters<
9290                'a,
9291            > as alloy_sol_types::SolType>::Token<'a>;
9292            type Return = bool;
9293            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
9294            type ReturnToken<'a> = <Self::ReturnTuple<
9295                'a,
9296            > as alloy_sol_types::SolType>::Token<'a>;
9297            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
9298            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
9299            #[inline]
9300            fn new<'a>(
9301                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9302            ) -> Self {
9303                tuple.into()
9304            }
9305            #[inline]
9306            fn tokenize(&self) -> Self::Token<'_> {
9307                (
9308                    <alloy::sol_types::sol_data::Uint<
9309                        256,
9310                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
9311                    <alloy::sol_types::sol_data::Uint<
9312                        256,
9313                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
9314                )
9315            }
9316            #[inline]
9317            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9318                (
9319                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
9320                        ret,
9321                    ),
9322                )
9323            }
9324            #[inline]
9325            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9326                <Self::ReturnTuple<
9327                    '_,
9328                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9329                    .map(|r| {
9330                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9331                        r._0
9332                    })
9333            }
9334            #[inline]
9335            fn abi_decode_returns_validate(
9336                data: &[u8],
9337            ) -> alloy_sol_types::Result<Self::Return> {
9338                <Self::ReturnTuple<
9339                    '_,
9340                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9341                    .map(|r| {
9342                        let r: lagOverEscapeHatchThresholdReturn = r.into();
9343                        r._0
9344                    })
9345            }
9346        }
9347    };
9348    #[derive(serde::Serialize, serde::Deserialize)]
9349    #[derive()]
9350    /**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`.
9351```solidity
9352function newFinalizedState(LightClient.LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
9353```*/
9354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9355    #[derive(Clone)]
9356    pub struct newFinalizedStateCall {
9357        #[allow(missing_docs)]
9358        pub newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9359        #[allow(missing_docs)]
9360        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9361    }
9362    ///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))`](newFinalizedStateCall) function.
9363    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9364    #[derive(Clone)]
9365    pub struct newFinalizedStateReturn {}
9366    #[allow(
9367        non_camel_case_types,
9368        non_snake_case,
9369        clippy::pub_underscore_fields,
9370        clippy::style
9371    )]
9372    const _: () = {
9373        use alloy::sol_types as alloy_sol_types;
9374        {
9375            #[doc(hidden)]
9376            #[allow(dead_code)]
9377            type UnderlyingSolTuple<'a> = (
9378                LightClient::LightClientState,
9379                IPlonkVerifier::PlonkProof,
9380            );
9381            #[doc(hidden)]
9382            type UnderlyingRustTuple<'a> = (
9383                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
9384                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
9385            );
9386            #[cfg(test)]
9387            #[allow(dead_code, unreachable_patterns)]
9388            fn _type_assertion(
9389                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9390            ) {
9391                match _t {
9392                    alloy_sol_types::private::AssertTypeEq::<
9393                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9394                    >(_) => {}
9395                }
9396            }
9397            #[automatically_derived]
9398            #[doc(hidden)]
9399            impl ::core::convert::From<newFinalizedStateCall>
9400            for UnderlyingRustTuple<'_> {
9401                fn from(value: newFinalizedStateCall) -> Self {
9402                    (value.newState, value.proof)
9403                }
9404            }
9405            #[automatically_derived]
9406            #[doc(hidden)]
9407            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9408            for newFinalizedStateCall {
9409                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9410                    Self {
9411                        newState: tuple.0,
9412                        proof: tuple.1,
9413                    }
9414                }
9415            }
9416        }
9417        {
9418            #[doc(hidden)]
9419            #[allow(dead_code)]
9420            type UnderlyingSolTuple<'a> = ();
9421            #[doc(hidden)]
9422            type UnderlyingRustTuple<'a> = ();
9423            #[cfg(test)]
9424            #[allow(dead_code, unreachable_patterns)]
9425            fn _type_assertion(
9426                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9427            ) {
9428                match _t {
9429                    alloy_sol_types::private::AssertTypeEq::<
9430                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9431                    >(_) => {}
9432                }
9433            }
9434            #[automatically_derived]
9435            #[doc(hidden)]
9436            impl ::core::convert::From<newFinalizedStateReturn>
9437            for UnderlyingRustTuple<'_> {
9438                fn from(value: newFinalizedStateReturn) -> Self {
9439                    ()
9440                }
9441            }
9442            #[automatically_derived]
9443            #[doc(hidden)]
9444            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9445            for newFinalizedStateReturn {
9446                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9447                    Self {}
9448                }
9449            }
9450        }
9451        impl newFinalizedStateReturn {
9452            fn _tokenize(
9453                &self,
9454            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9455                ()
9456            }
9457        }
9458        #[automatically_derived]
9459        impl alloy_sol_types::SolCall for newFinalizedStateCall {
9460            type Parameters<'a> = (
9461                LightClient::LightClientState,
9462                IPlonkVerifier::PlonkProof,
9463            );
9464            type Token<'a> = <Self::Parameters<
9465                'a,
9466            > as alloy_sol_types::SolType>::Token<'a>;
9467            type Return = newFinalizedStateReturn;
9468            type ReturnTuple<'a> = ();
9469            type ReturnToken<'a> = <Self::ReturnTuple<
9470                'a,
9471            > as alloy_sol_types::SolType>::Token<'a>;
9472            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))";
9473            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
9474            #[inline]
9475            fn new<'a>(
9476                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9477            ) -> Self {
9478                tuple.into()
9479            }
9480            #[inline]
9481            fn tokenize(&self) -> Self::Token<'_> {
9482                (
9483                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
9484                        &self.newState,
9485                    ),
9486                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
9487                        &self.proof,
9488                    ),
9489                )
9490            }
9491            #[inline]
9492            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9493                newFinalizedStateReturn::_tokenize(ret)
9494            }
9495            #[inline]
9496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9497                <Self::ReturnTuple<
9498                    '_,
9499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9500                    .map(Into::into)
9501            }
9502            #[inline]
9503            fn abi_decode_returns_validate(
9504                data: &[u8],
9505            ) -> alloy_sol_types::Result<Self::Return> {
9506                <Self::ReturnTuple<
9507                    '_,
9508                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9509                    .map(Into::into)
9510            }
9511        }
9512    };
9513    #[derive(serde::Serialize, serde::Deserialize)]
9514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9515    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9516```solidity
9517function owner() external view returns (address);
9518```*/
9519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9520    #[derive(Clone)]
9521    pub struct ownerCall;
9522    #[derive(serde::Serialize, serde::Deserialize)]
9523    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9524    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9525    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9526    #[derive(Clone)]
9527    pub struct ownerReturn {
9528        #[allow(missing_docs)]
9529        pub _0: alloy::sol_types::private::Address,
9530    }
9531    #[allow(
9532        non_camel_case_types,
9533        non_snake_case,
9534        clippy::pub_underscore_fields,
9535        clippy::style
9536    )]
9537    const _: () = {
9538        use alloy::sol_types as alloy_sol_types;
9539        {
9540            #[doc(hidden)]
9541            #[allow(dead_code)]
9542            type UnderlyingSolTuple<'a> = ();
9543            #[doc(hidden)]
9544            type UnderlyingRustTuple<'a> = ();
9545            #[cfg(test)]
9546            #[allow(dead_code, unreachable_patterns)]
9547            fn _type_assertion(
9548                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9549            ) {
9550                match _t {
9551                    alloy_sol_types::private::AssertTypeEq::<
9552                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9553                    >(_) => {}
9554                }
9555            }
9556            #[automatically_derived]
9557            #[doc(hidden)]
9558            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9559                fn from(value: ownerCall) -> Self {
9560                    ()
9561                }
9562            }
9563            #[automatically_derived]
9564            #[doc(hidden)]
9565            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9566                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9567                    Self
9568                }
9569            }
9570        }
9571        {
9572            #[doc(hidden)]
9573            #[allow(dead_code)]
9574            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9575            #[doc(hidden)]
9576            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9577            #[cfg(test)]
9578            #[allow(dead_code, unreachable_patterns)]
9579            fn _type_assertion(
9580                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9581            ) {
9582                match _t {
9583                    alloy_sol_types::private::AssertTypeEq::<
9584                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9585                    >(_) => {}
9586                }
9587            }
9588            #[automatically_derived]
9589            #[doc(hidden)]
9590            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9591                fn from(value: ownerReturn) -> Self {
9592                    (value._0,)
9593                }
9594            }
9595            #[automatically_derived]
9596            #[doc(hidden)]
9597            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9598                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9599                    Self { _0: tuple.0 }
9600                }
9601            }
9602        }
9603        #[automatically_derived]
9604        impl alloy_sol_types::SolCall for ownerCall {
9605            type Parameters<'a> = ();
9606            type Token<'a> = <Self::Parameters<
9607                'a,
9608            > as alloy_sol_types::SolType>::Token<'a>;
9609            type Return = alloy::sol_types::private::Address;
9610            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9611            type ReturnToken<'a> = <Self::ReturnTuple<
9612                'a,
9613            > as alloy_sol_types::SolType>::Token<'a>;
9614            const SIGNATURE: &'static str = "owner()";
9615            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9616            #[inline]
9617            fn new<'a>(
9618                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9619            ) -> Self {
9620                tuple.into()
9621            }
9622            #[inline]
9623            fn tokenize(&self) -> Self::Token<'_> {
9624                ()
9625            }
9626            #[inline]
9627            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9628                (
9629                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9630                        ret,
9631                    ),
9632                )
9633            }
9634            #[inline]
9635            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9636                <Self::ReturnTuple<
9637                    '_,
9638                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9639                    .map(|r| {
9640                        let r: ownerReturn = r.into();
9641                        r._0
9642                    })
9643            }
9644            #[inline]
9645            fn abi_decode_returns_validate(
9646                data: &[u8],
9647            ) -> alloy_sol_types::Result<Self::Return> {
9648                <Self::ReturnTuple<
9649                    '_,
9650                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9651                    .map(|r| {
9652                        let r: ownerReturn = r.into();
9653                        r._0
9654                    })
9655            }
9656        }
9657    };
9658    #[derive(serde::Serialize, serde::Deserialize)]
9659    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9660    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9661```solidity
9662function permissionedProver() external view returns (address);
9663```*/
9664    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9665    #[derive(Clone)]
9666    pub struct permissionedProverCall;
9667    #[derive(serde::Serialize, serde::Deserialize)]
9668    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9669    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9670    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9671    #[derive(Clone)]
9672    pub struct permissionedProverReturn {
9673        #[allow(missing_docs)]
9674        pub _0: alloy::sol_types::private::Address,
9675    }
9676    #[allow(
9677        non_camel_case_types,
9678        non_snake_case,
9679        clippy::pub_underscore_fields,
9680        clippy::style
9681    )]
9682    const _: () = {
9683        use alloy::sol_types as alloy_sol_types;
9684        {
9685            #[doc(hidden)]
9686            #[allow(dead_code)]
9687            type UnderlyingSolTuple<'a> = ();
9688            #[doc(hidden)]
9689            type UnderlyingRustTuple<'a> = ();
9690            #[cfg(test)]
9691            #[allow(dead_code, unreachable_patterns)]
9692            fn _type_assertion(
9693                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9694            ) {
9695                match _t {
9696                    alloy_sol_types::private::AssertTypeEq::<
9697                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9698                    >(_) => {}
9699                }
9700            }
9701            #[automatically_derived]
9702            #[doc(hidden)]
9703            impl ::core::convert::From<permissionedProverCall>
9704            for UnderlyingRustTuple<'_> {
9705                fn from(value: permissionedProverCall) -> Self {
9706                    ()
9707                }
9708            }
9709            #[automatically_derived]
9710            #[doc(hidden)]
9711            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9712            for permissionedProverCall {
9713                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9714                    Self
9715                }
9716            }
9717        }
9718        {
9719            #[doc(hidden)]
9720            #[allow(dead_code)]
9721            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9722            #[doc(hidden)]
9723            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9724            #[cfg(test)]
9725            #[allow(dead_code, unreachable_patterns)]
9726            fn _type_assertion(
9727                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9728            ) {
9729                match _t {
9730                    alloy_sol_types::private::AssertTypeEq::<
9731                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9732                    >(_) => {}
9733                }
9734            }
9735            #[automatically_derived]
9736            #[doc(hidden)]
9737            impl ::core::convert::From<permissionedProverReturn>
9738            for UnderlyingRustTuple<'_> {
9739                fn from(value: permissionedProverReturn) -> Self {
9740                    (value._0,)
9741                }
9742            }
9743            #[automatically_derived]
9744            #[doc(hidden)]
9745            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9746            for permissionedProverReturn {
9747                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9748                    Self { _0: tuple.0 }
9749                }
9750            }
9751        }
9752        #[automatically_derived]
9753        impl alloy_sol_types::SolCall for permissionedProverCall {
9754            type Parameters<'a> = ();
9755            type Token<'a> = <Self::Parameters<
9756                'a,
9757            > as alloy_sol_types::SolType>::Token<'a>;
9758            type Return = alloy::sol_types::private::Address;
9759            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9760            type ReturnToken<'a> = <Self::ReturnTuple<
9761                'a,
9762            > as alloy_sol_types::SolType>::Token<'a>;
9763            const SIGNATURE: &'static str = "permissionedProver()";
9764            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9765            #[inline]
9766            fn new<'a>(
9767                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9768            ) -> Self {
9769                tuple.into()
9770            }
9771            #[inline]
9772            fn tokenize(&self) -> Self::Token<'_> {
9773                ()
9774            }
9775            #[inline]
9776            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9777                (
9778                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9779                        ret,
9780                    ),
9781                )
9782            }
9783            #[inline]
9784            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9785                <Self::ReturnTuple<
9786                    '_,
9787                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9788                    .map(|r| {
9789                        let r: permissionedProverReturn = r.into();
9790                        r._0
9791                    })
9792            }
9793            #[inline]
9794            fn abi_decode_returns_validate(
9795                data: &[u8],
9796            ) -> alloy_sol_types::Result<Self::Return> {
9797                <Self::ReturnTuple<
9798                    '_,
9799                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9800                    .map(|r| {
9801                        let r: permissionedProverReturn = r.into();
9802                        r._0
9803                    })
9804            }
9805        }
9806    };
9807    #[derive(serde::Serialize, serde::Deserialize)]
9808    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9809    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9810```solidity
9811function proxiableUUID() external view returns (bytes32);
9812```*/
9813    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9814    #[derive(Clone)]
9815    pub struct proxiableUUIDCall;
9816    #[derive(serde::Serialize, serde::Deserialize)]
9817    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9818    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9819    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9820    #[derive(Clone)]
9821    pub struct proxiableUUIDReturn {
9822        #[allow(missing_docs)]
9823        pub _0: alloy::sol_types::private::FixedBytes<32>,
9824    }
9825    #[allow(
9826        non_camel_case_types,
9827        non_snake_case,
9828        clippy::pub_underscore_fields,
9829        clippy::style
9830    )]
9831    const _: () = {
9832        use alloy::sol_types as alloy_sol_types;
9833        {
9834            #[doc(hidden)]
9835            #[allow(dead_code)]
9836            type UnderlyingSolTuple<'a> = ();
9837            #[doc(hidden)]
9838            type UnderlyingRustTuple<'a> = ();
9839            #[cfg(test)]
9840            #[allow(dead_code, unreachable_patterns)]
9841            fn _type_assertion(
9842                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9843            ) {
9844                match _t {
9845                    alloy_sol_types::private::AssertTypeEq::<
9846                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9847                    >(_) => {}
9848                }
9849            }
9850            #[automatically_derived]
9851            #[doc(hidden)]
9852            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9853                fn from(value: proxiableUUIDCall) -> Self {
9854                    ()
9855                }
9856            }
9857            #[automatically_derived]
9858            #[doc(hidden)]
9859            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9860                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9861                    Self
9862                }
9863            }
9864        }
9865        {
9866            #[doc(hidden)]
9867            #[allow(dead_code)]
9868            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9869            #[doc(hidden)]
9870            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9871            #[cfg(test)]
9872            #[allow(dead_code, unreachable_patterns)]
9873            fn _type_assertion(
9874                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9875            ) {
9876                match _t {
9877                    alloy_sol_types::private::AssertTypeEq::<
9878                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9879                    >(_) => {}
9880                }
9881            }
9882            #[automatically_derived]
9883            #[doc(hidden)]
9884            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9885                fn from(value: proxiableUUIDReturn) -> Self {
9886                    (value._0,)
9887                }
9888            }
9889            #[automatically_derived]
9890            #[doc(hidden)]
9891            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9892                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9893                    Self { _0: tuple.0 }
9894                }
9895            }
9896        }
9897        #[automatically_derived]
9898        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9899            type Parameters<'a> = ();
9900            type Token<'a> = <Self::Parameters<
9901                'a,
9902            > as alloy_sol_types::SolType>::Token<'a>;
9903            type Return = alloy::sol_types::private::FixedBytes<32>;
9904            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9905            type ReturnToken<'a> = <Self::ReturnTuple<
9906                'a,
9907            > as alloy_sol_types::SolType>::Token<'a>;
9908            const SIGNATURE: &'static str = "proxiableUUID()";
9909            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9910            #[inline]
9911            fn new<'a>(
9912                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9913            ) -> Self {
9914                tuple.into()
9915            }
9916            #[inline]
9917            fn tokenize(&self) -> Self::Token<'_> {
9918                ()
9919            }
9920            #[inline]
9921            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9922                (
9923                    <alloy::sol_types::sol_data::FixedBytes<
9924                        32,
9925                    > as alloy_sol_types::SolType>::tokenize(ret),
9926                )
9927            }
9928            #[inline]
9929            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9930                <Self::ReturnTuple<
9931                    '_,
9932                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9933                    .map(|r| {
9934                        let r: proxiableUUIDReturn = r.into();
9935                        r._0
9936                    })
9937            }
9938            #[inline]
9939            fn abi_decode_returns_validate(
9940                data: &[u8],
9941            ) -> alloy_sol_types::Result<Self::Return> {
9942                <Self::ReturnTuple<
9943                    '_,
9944                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9945                    .map(|r| {
9946                        let r: proxiableUUIDReturn = r.into();
9947                        r._0
9948                    })
9949            }
9950        }
9951    };
9952    #[derive(serde::Serialize, serde::Deserialize)]
9953    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9954    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9955```solidity
9956function renounceOwnership() external;
9957```*/
9958    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9959    #[derive(Clone)]
9960    pub struct renounceOwnershipCall;
9961    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9962    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9963    #[derive(Clone)]
9964    pub struct renounceOwnershipReturn {}
9965    #[allow(
9966        non_camel_case_types,
9967        non_snake_case,
9968        clippy::pub_underscore_fields,
9969        clippy::style
9970    )]
9971    const _: () = {
9972        use alloy::sol_types as alloy_sol_types;
9973        {
9974            #[doc(hidden)]
9975            #[allow(dead_code)]
9976            type UnderlyingSolTuple<'a> = ();
9977            #[doc(hidden)]
9978            type UnderlyingRustTuple<'a> = ();
9979            #[cfg(test)]
9980            #[allow(dead_code, unreachable_patterns)]
9981            fn _type_assertion(
9982                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9983            ) {
9984                match _t {
9985                    alloy_sol_types::private::AssertTypeEq::<
9986                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9987                    >(_) => {}
9988                }
9989            }
9990            #[automatically_derived]
9991            #[doc(hidden)]
9992            impl ::core::convert::From<renounceOwnershipCall>
9993            for UnderlyingRustTuple<'_> {
9994                fn from(value: renounceOwnershipCall) -> Self {
9995                    ()
9996                }
9997            }
9998            #[automatically_derived]
9999            #[doc(hidden)]
10000            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10001            for renounceOwnershipCall {
10002                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10003                    Self
10004                }
10005            }
10006        }
10007        {
10008            #[doc(hidden)]
10009            #[allow(dead_code)]
10010            type UnderlyingSolTuple<'a> = ();
10011            #[doc(hidden)]
10012            type UnderlyingRustTuple<'a> = ();
10013            #[cfg(test)]
10014            #[allow(dead_code, unreachable_patterns)]
10015            fn _type_assertion(
10016                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10017            ) {
10018                match _t {
10019                    alloy_sol_types::private::AssertTypeEq::<
10020                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10021                    >(_) => {}
10022                }
10023            }
10024            #[automatically_derived]
10025            #[doc(hidden)]
10026            impl ::core::convert::From<renounceOwnershipReturn>
10027            for UnderlyingRustTuple<'_> {
10028                fn from(value: renounceOwnershipReturn) -> Self {
10029                    ()
10030                }
10031            }
10032            #[automatically_derived]
10033            #[doc(hidden)]
10034            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10035            for renounceOwnershipReturn {
10036                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10037                    Self {}
10038                }
10039            }
10040        }
10041        impl renounceOwnershipReturn {
10042            fn _tokenize(
10043                &self,
10044            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10045                ()
10046            }
10047        }
10048        #[automatically_derived]
10049        impl alloy_sol_types::SolCall for renounceOwnershipCall {
10050            type Parameters<'a> = ();
10051            type Token<'a> = <Self::Parameters<
10052                'a,
10053            > as alloy_sol_types::SolType>::Token<'a>;
10054            type Return = renounceOwnershipReturn;
10055            type ReturnTuple<'a> = ();
10056            type ReturnToken<'a> = <Self::ReturnTuple<
10057                'a,
10058            > as alloy_sol_types::SolType>::Token<'a>;
10059            const SIGNATURE: &'static str = "renounceOwnership()";
10060            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
10061            #[inline]
10062            fn new<'a>(
10063                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10064            ) -> Self {
10065                tuple.into()
10066            }
10067            #[inline]
10068            fn tokenize(&self) -> Self::Token<'_> {
10069                ()
10070            }
10071            #[inline]
10072            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10073                renounceOwnershipReturn::_tokenize(ret)
10074            }
10075            #[inline]
10076            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10077                <Self::ReturnTuple<
10078                    '_,
10079                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10080                    .map(Into::into)
10081            }
10082            #[inline]
10083            fn abi_decode_returns_validate(
10084                data: &[u8],
10085            ) -> alloy_sol_types::Result<Self::Return> {
10086                <Self::ReturnTuple<
10087                    '_,
10088                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10089                    .map(Into::into)
10090            }
10091        }
10092    };
10093    #[derive(serde::Serialize, serde::Deserialize)]
10094    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10095    /**Function with signature `setFinalizedState((uint64,uint64,uint256))` and selector `0xb5adea3c`.
10096```solidity
10097function setFinalizedState(LightClient.LightClientState memory state) external;
10098```*/
10099    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10100    #[derive(Clone)]
10101    pub struct setFinalizedStateCall {
10102        #[allow(missing_docs)]
10103        pub state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10104    }
10105    ///Container type for the return parameters of the [`setFinalizedState((uint64,uint64,uint256))`](setFinalizedStateCall) function.
10106    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10107    #[derive(Clone)]
10108    pub struct setFinalizedStateReturn {}
10109    #[allow(
10110        non_camel_case_types,
10111        non_snake_case,
10112        clippy::pub_underscore_fields,
10113        clippy::style
10114    )]
10115    const _: () = {
10116        use alloy::sol_types as alloy_sol_types;
10117        {
10118            #[doc(hidden)]
10119            #[allow(dead_code)]
10120            type UnderlyingSolTuple<'a> = (LightClient::LightClientState,);
10121            #[doc(hidden)]
10122            type UnderlyingRustTuple<'a> = (
10123                <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
10124            );
10125            #[cfg(test)]
10126            #[allow(dead_code, unreachable_patterns)]
10127            fn _type_assertion(
10128                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10129            ) {
10130                match _t {
10131                    alloy_sol_types::private::AssertTypeEq::<
10132                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10133                    >(_) => {}
10134                }
10135            }
10136            #[automatically_derived]
10137            #[doc(hidden)]
10138            impl ::core::convert::From<setFinalizedStateCall>
10139            for UnderlyingRustTuple<'_> {
10140                fn from(value: setFinalizedStateCall) -> Self {
10141                    (value.state,)
10142                }
10143            }
10144            #[automatically_derived]
10145            #[doc(hidden)]
10146            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10147            for setFinalizedStateCall {
10148                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10149                    Self { state: tuple.0 }
10150                }
10151            }
10152        }
10153        {
10154            #[doc(hidden)]
10155            #[allow(dead_code)]
10156            type UnderlyingSolTuple<'a> = ();
10157            #[doc(hidden)]
10158            type UnderlyingRustTuple<'a> = ();
10159            #[cfg(test)]
10160            #[allow(dead_code, unreachable_patterns)]
10161            fn _type_assertion(
10162                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10163            ) {
10164                match _t {
10165                    alloy_sol_types::private::AssertTypeEq::<
10166                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10167                    >(_) => {}
10168                }
10169            }
10170            #[automatically_derived]
10171            #[doc(hidden)]
10172            impl ::core::convert::From<setFinalizedStateReturn>
10173            for UnderlyingRustTuple<'_> {
10174                fn from(value: setFinalizedStateReturn) -> Self {
10175                    ()
10176                }
10177            }
10178            #[automatically_derived]
10179            #[doc(hidden)]
10180            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10181            for setFinalizedStateReturn {
10182                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10183                    Self {}
10184                }
10185            }
10186        }
10187        impl setFinalizedStateReturn {
10188            fn _tokenize(
10189                &self,
10190            ) -> <setFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10191                ()
10192            }
10193        }
10194        #[automatically_derived]
10195        impl alloy_sol_types::SolCall for setFinalizedStateCall {
10196            type Parameters<'a> = (LightClient::LightClientState,);
10197            type Token<'a> = <Self::Parameters<
10198                'a,
10199            > as alloy_sol_types::SolType>::Token<'a>;
10200            type Return = setFinalizedStateReturn;
10201            type ReturnTuple<'a> = ();
10202            type ReturnToken<'a> = <Self::ReturnTuple<
10203                'a,
10204            > as alloy_sol_types::SolType>::Token<'a>;
10205            const SIGNATURE: &'static str = "setFinalizedState((uint64,uint64,uint256))";
10206            const SELECTOR: [u8; 4] = [181u8, 173u8, 234u8, 60u8];
10207            #[inline]
10208            fn new<'a>(
10209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10210            ) -> Self {
10211                tuple.into()
10212            }
10213            #[inline]
10214            fn tokenize(&self) -> Self::Token<'_> {
10215                (
10216                    <LightClient::LightClientState as alloy_sol_types::SolType>::tokenize(
10217                        &self.state,
10218                    ),
10219                )
10220            }
10221            #[inline]
10222            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10223                setFinalizedStateReturn::_tokenize(ret)
10224            }
10225            #[inline]
10226            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10227                <Self::ReturnTuple<
10228                    '_,
10229                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10230                    .map(Into::into)
10231            }
10232            #[inline]
10233            fn abi_decode_returns_validate(
10234                data: &[u8],
10235            ) -> alloy_sol_types::Result<Self::Return> {
10236                <Self::ReturnTuple<
10237                    '_,
10238                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10239                    .map(Into::into)
10240            }
10241        }
10242    };
10243    #[derive(serde::Serialize, serde::Deserialize)]
10244    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10245    /**Function with signature `setHotShotDownSince(uint256)` and selector `0x2d52aad6`.
10246```solidity
10247function setHotShotDownSince(uint256 l1Height) external;
10248```*/
10249    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10250    #[derive(Clone)]
10251    pub struct setHotShotDownSinceCall {
10252        #[allow(missing_docs)]
10253        pub l1Height: alloy::sol_types::private::primitives::aliases::U256,
10254    }
10255    ///Container type for the return parameters of the [`setHotShotDownSince(uint256)`](setHotShotDownSinceCall) function.
10256    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10257    #[derive(Clone)]
10258    pub struct setHotShotDownSinceReturn {}
10259    #[allow(
10260        non_camel_case_types,
10261        non_snake_case,
10262        clippy::pub_underscore_fields,
10263        clippy::style
10264    )]
10265    const _: () = {
10266        use alloy::sol_types as alloy_sol_types;
10267        {
10268            #[doc(hidden)]
10269            #[allow(dead_code)]
10270            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10271            #[doc(hidden)]
10272            type UnderlyingRustTuple<'a> = (
10273                alloy::sol_types::private::primitives::aliases::U256,
10274            );
10275            #[cfg(test)]
10276            #[allow(dead_code, unreachable_patterns)]
10277            fn _type_assertion(
10278                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10279            ) {
10280                match _t {
10281                    alloy_sol_types::private::AssertTypeEq::<
10282                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10283                    >(_) => {}
10284                }
10285            }
10286            #[automatically_derived]
10287            #[doc(hidden)]
10288            impl ::core::convert::From<setHotShotDownSinceCall>
10289            for UnderlyingRustTuple<'_> {
10290                fn from(value: setHotShotDownSinceCall) -> Self {
10291                    (value.l1Height,)
10292                }
10293            }
10294            #[automatically_derived]
10295            #[doc(hidden)]
10296            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10297            for setHotShotDownSinceCall {
10298                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10299                    Self { l1Height: tuple.0 }
10300                }
10301            }
10302        }
10303        {
10304            #[doc(hidden)]
10305            #[allow(dead_code)]
10306            type UnderlyingSolTuple<'a> = ();
10307            #[doc(hidden)]
10308            type UnderlyingRustTuple<'a> = ();
10309            #[cfg(test)]
10310            #[allow(dead_code, unreachable_patterns)]
10311            fn _type_assertion(
10312                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10313            ) {
10314                match _t {
10315                    alloy_sol_types::private::AssertTypeEq::<
10316                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10317                    >(_) => {}
10318                }
10319            }
10320            #[automatically_derived]
10321            #[doc(hidden)]
10322            impl ::core::convert::From<setHotShotDownSinceReturn>
10323            for UnderlyingRustTuple<'_> {
10324                fn from(value: setHotShotDownSinceReturn) -> Self {
10325                    ()
10326                }
10327            }
10328            #[automatically_derived]
10329            #[doc(hidden)]
10330            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10331            for setHotShotDownSinceReturn {
10332                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10333                    Self {}
10334                }
10335            }
10336        }
10337        impl setHotShotDownSinceReturn {
10338            fn _tokenize(
10339                &self,
10340            ) -> <setHotShotDownSinceCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10341                ()
10342            }
10343        }
10344        #[automatically_derived]
10345        impl alloy_sol_types::SolCall for setHotShotDownSinceCall {
10346            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10347            type Token<'a> = <Self::Parameters<
10348                'a,
10349            > as alloy_sol_types::SolType>::Token<'a>;
10350            type Return = setHotShotDownSinceReturn;
10351            type ReturnTuple<'a> = ();
10352            type ReturnToken<'a> = <Self::ReturnTuple<
10353                'a,
10354            > as alloy_sol_types::SolType>::Token<'a>;
10355            const SIGNATURE: &'static str = "setHotShotDownSince(uint256)";
10356            const SELECTOR: [u8; 4] = [45u8, 82u8, 170u8, 214u8];
10357            #[inline]
10358            fn new<'a>(
10359                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10360            ) -> Self {
10361                tuple.into()
10362            }
10363            #[inline]
10364            fn tokenize(&self) -> Self::Token<'_> {
10365                (
10366                    <alloy::sol_types::sol_data::Uint<
10367                        256,
10368                    > as alloy_sol_types::SolType>::tokenize(&self.l1Height),
10369                )
10370            }
10371            #[inline]
10372            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10373                setHotShotDownSinceReturn::_tokenize(ret)
10374            }
10375            #[inline]
10376            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10377                <Self::ReturnTuple<
10378                    '_,
10379                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10380                    .map(Into::into)
10381            }
10382            #[inline]
10383            fn abi_decode_returns_validate(
10384                data: &[u8],
10385            ) -> alloy_sol_types::Result<Self::Return> {
10386                <Self::ReturnTuple<
10387                    '_,
10388                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10389                    .map(Into::into)
10390            }
10391        }
10392    };
10393    #[derive(serde::Serialize, serde::Deserialize)]
10394    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10395    /**Function with signature `setHotShotUp()` and selector `0xc8e5e498`.
10396```solidity
10397function setHotShotUp() external;
10398```*/
10399    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10400    #[derive(Clone)]
10401    pub struct setHotShotUpCall;
10402    ///Container type for the return parameters of the [`setHotShotUp()`](setHotShotUpCall) function.
10403    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10404    #[derive(Clone)]
10405    pub struct setHotShotUpReturn {}
10406    #[allow(
10407        non_camel_case_types,
10408        non_snake_case,
10409        clippy::pub_underscore_fields,
10410        clippy::style
10411    )]
10412    const _: () = {
10413        use alloy::sol_types as alloy_sol_types;
10414        {
10415            #[doc(hidden)]
10416            #[allow(dead_code)]
10417            type UnderlyingSolTuple<'a> = ();
10418            #[doc(hidden)]
10419            type UnderlyingRustTuple<'a> = ();
10420            #[cfg(test)]
10421            #[allow(dead_code, unreachable_patterns)]
10422            fn _type_assertion(
10423                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10424            ) {
10425                match _t {
10426                    alloy_sol_types::private::AssertTypeEq::<
10427                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10428                    >(_) => {}
10429                }
10430            }
10431            #[automatically_derived]
10432            #[doc(hidden)]
10433            impl ::core::convert::From<setHotShotUpCall> for UnderlyingRustTuple<'_> {
10434                fn from(value: setHotShotUpCall) -> Self {
10435                    ()
10436                }
10437            }
10438            #[automatically_derived]
10439            #[doc(hidden)]
10440            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpCall {
10441                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10442                    Self
10443                }
10444            }
10445        }
10446        {
10447            #[doc(hidden)]
10448            #[allow(dead_code)]
10449            type UnderlyingSolTuple<'a> = ();
10450            #[doc(hidden)]
10451            type UnderlyingRustTuple<'a> = ();
10452            #[cfg(test)]
10453            #[allow(dead_code, unreachable_patterns)]
10454            fn _type_assertion(
10455                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10456            ) {
10457                match _t {
10458                    alloy_sol_types::private::AssertTypeEq::<
10459                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10460                    >(_) => {}
10461                }
10462            }
10463            #[automatically_derived]
10464            #[doc(hidden)]
10465            impl ::core::convert::From<setHotShotUpReturn> for UnderlyingRustTuple<'_> {
10466                fn from(value: setHotShotUpReturn) -> Self {
10467                    ()
10468                }
10469            }
10470            #[automatically_derived]
10471            #[doc(hidden)]
10472            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setHotShotUpReturn {
10473                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10474                    Self {}
10475                }
10476            }
10477        }
10478        impl setHotShotUpReturn {
10479            fn _tokenize(
10480                &self,
10481            ) -> <setHotShotUpCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10482                ()
10483            }
10484        }
10485        #[automatically_derived]
10486        impl alloy_sol_types::SolCall for setHotShotUpCall {
10487            type Parameters<'a> = ();
10488            type Token<'a> = <Self::Parameters<
10489                'a,
10490            > as alloy_sol_types::SolType>::Token<'a>;
10491            type Return = setHotShotUpReturn;
10492            type ReturnTuple<'a> = ();
10493            type ReturnToken<'a> = <Self::ReturnTuple<
10494                'a,
10495            > as alloy_sol_types::SolType>::Token<'a>;
10496            const SIGNATURE: &'static str = "setHotShotUp()";
10497            const SELECTOR: [u8; 4] = [200u8, 229u8, 228u8, 152u8];
10498            #[inline]
10499            fn new<'a>(
10500                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10501            ) -> Self {
10502                tuple.into()
10503            }
10504            #[inline]
10505            fn tokenize(&self) -> Self::Token<'_> {
10506                ()
10507            }
10508            #[inline]
10509            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10510                setHotShotUpReturn::_tokenize(ret)
10511            }
10512            #[inline]
10513            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10514                <Self::ReturnTuple<
10515                    '_,
10516                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10517                    .map(Into::into)
10518            }
10519            #[inline]
10520            fn abi_decode_returns_validate(
10521                data: &[u8],
10522            ) -> alloy_sol_types::Result<Self::Return> {
10523                <Self::ReturnTuple<
10524                    '_,
10525                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10526                    .map(Into::into)
10527            }
10528        }
10529    };
10530    #[derive(serde::Serialize, serde::Deserialize)]
10531    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10532    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
10533```solidity
10534function setPermissionedProver(address prover) external;
10535```*/
10536    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10537    #[derive(Clone)]
10538    pub struct setPermissionedProverCall {
10539        #[allow(missing_docs)]
10540        pub prover: alloy::sol_types::private::Address,
10541    }
10542    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
10543    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10544    #[derive(Clone)]
10545    pub struct setPermissionedProverReturn {}
10546    #[allow(
10547        non_camel_case_types,
10548        non_snake_case,
10549        clippy::pub_underscore_fields,
10550        clippy::style
10551    )]
10552    const _: () = {
10553        use alloy::sol_types as alloy_sol_types;
10554        {
10555            #[doc(hidden)]
10556            #[allow(dead_code)]
10557            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10558            #[doc(hidden)]
10559            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10560            #[cfg(test)]
10561            #[allow(dead_code, unreachable_patterns)]
10562            fn _type_assertion(
10563                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10564            ) {
10565                match _t {
10566                    alloy_sol_types::private::AssertTypeEq::<
10567                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10568                    >(_) => {}
10569                }
10570            }
10571            #[automatically_derived]
10572            #[doc(hidden)]
10573            impl ::core::convert::From<setPermissionedProverCall>
10574            for UnderlyingRustTuple<'_> {
10575                fn from(value: setPermissionedProverCall) -> Self {
10576                    (value.prover,)
10577                }
10578            }
10579            #[automatically_derived]
10580            #[doc(hidden)]
10581            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10582            for setPermissionedProverCall {
10583                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10584                    Self { prover: tuple.0 }
10585                }
10586            }
10587        }
10588        {
10589            #[doc(hidden)]
10590            #[allow(dead_code)]
10591            type UnderlyingSolTuple<'a> = ();
10592            #[doc(hidden)]
10593            type UnderlyingRustTuple<'a> = ();
10594            #[cfg(test)]
10595            #[allow(dead_code, unreachable_patterns)]
10596            fn _type_assertion(
10597                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10598            ) {
10599                match _t {
10600                    alloy_sol_types::private::AssertTypeEq::<
10601                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10602                    >(_) => {}
10603                }
10604            }
10605            #[automatically_derived]
10606            #[doc(hidden)]
10607            impl ::core::convert::From<setPermissionedProverReturn>
10608            for UnderlyingRustTuple<'_> {
10609                fn from(value: setPermissionedProverReturn) -> Self {
10610                    ()
10611                }
10612            }
10613            #[automatically_derived]
10614            #[doc(hidden)]
10615            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10616            for setPermissionedProverReturn {
10617                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10618                    Self {}
10619                }
10620            }
10621        }
10622        impl setPermissionedProverReturn {
10623            fn _tokenize(
10624                &self,
10625            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
10626                '_,
10627            > {
10628                ()
10629            }
10630        }
10631        #[automatically_derived]
10632        impl alloy_sol_types::SolCall for setPermissionedProverCall {
10633            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10634            type Token<'a> = <Self::Parameters<
10635                'a,
10636            > as alloy_sol_types::SolType>::Token<'a>;
10637            type Return = setPermissionedProverReturn;
10638            type ReturnTuple<'a> = ();
10639            type ReturnToken<'a> = <Self::ReturnTuple<
10640                'a,
10641            > as alloy_sol_types::SolType>::Token<'a>;
10642            const SIGNATURE: &'static str = "setPermissionedProver(address)";
10643            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
10644            #[inline]
10645            fn new<'a>(
10646                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10647            ) -> Self {
10648                tuple.into()
10649            }
10650            #[inline]
10651            fn tokenize(&self) -> Self::Token<'_> {
10652                (
10653                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10654                        &self.prover,
10655                    ),
10656                )
10657            }
10658            #[inline]
10659            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10660                setPermissionedProverReturn::_tokenize(ret)
10661            }
10662            #[inline]
10663            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10664                <Self::ReturnTuple<
10665                    '_,
10666                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10667                    .map(Into::into)
10668            }
10669            #[inline]
10670            fn abi_decode_returns_validate(
10671                data: &[u8],
10672            ) -> alloy_sol_types::Result<Self::Return> {
10673                <Self::ReturnTuple<
10674                    '_,
10675                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10676                    .map(Into::into)
10677            }
10678        }
10679    };
10680    #[derive(serde::Serialize, serde::Deserialize)]
10681    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10682    /**Function with signature `setStateHistory((uint64,uint64,uint64,uint256)[])` and selector `0xf5676160`.
10683```solidity
10684function setStateHistory(LightClient.StateHistoryCommitment[] memory _stateHistoryCommitments) external;
10685```*/
10686    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10687    #[derive(Clone)]
10688    pub struct setStateHistoryCall {
10689        #[allow(missing_docs)]
10690        pub _stateHistoryCommitments: alloy::sol_types::private::Vec<
10691            <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10692        >,
10693    }
10694    ///Container type for the return parameters of the [`setStateHistory((uint64,uint64,uint64,uint256)[])`](setStateHistoryCall) function.
10695    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10696    #[derive(Clone)]
10697    pub struct setStateHistoryReturn {}
10698    #[allow(
10699        non_camel_case_types,
10700        non_snake_case,
10701        clippy::pub_underscore_fields,
10702        clippy::style
10703    )]
10704    const _: () = {
10705        use alloy::sol_types as alloy_sol_types;
10706        {
10707            #[doc(hidden)]
10708            #[allow(dead_code)]
10709            type UnderlyingSolTuple<'a> = (
10710                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10711            );
10712            #[doc(hidden)]
10713            type UnderlyingRustTuple<'a> = (
10714                alloy::sol_types::private::Vec<
10715                    <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
10716                >,
10717            );
10718            #[cfg(test)]
10719            #[allow(dead_code, unreachable_patterns)]
10720            fn _type_assertion(
10721                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10722            ) {
10723                match _t {
10724                    alloy_sol_types::private::AssertTypeEq::<
10725                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10726                    >(_) => {}
10727                }
10728            }
10729            #[automatically_derived]
10730            #[doc(hidden)]
10731            impl ::core::convert::From<setStateHistoryCall> for UnderlyingRustTuple<'_> {
10732                fn from(value: setStateHistoryCall) -> Self {
10733                    (value._stateHistoryCommitments,)
10734                }
10735            }
10736            #[automatically_derived]
10737            #[doc(hidden)]
10738            impl ::core::convert::From<UnderlyingRustTuple<'_>> for setStateHistoryCall {
10739                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10740                    Self {
10741                        _stateHistoryCommitments: tuple.0,
10742                    }
10743                }
10744            }
10745        }
10746        {
10747            #[doc(hidden)]
10748            #[allow(dead_code)]
10749            type UnderlyingSolTuple<'a> = ();
10750            #[doc(hidden)]
10751            type UnderlyingRustTuple<'a> = ();
10752            #[cfg(test)]
10753            #[allow(dead_code, unreachable_patterns)]
10754            fn _type_assertion(
10755                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10756            ) {
10757                match _t {
10758                    alloy_sol_types::private::AssertTypeEq::<
10759                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10760                    >(_) => {}
10761                }
10762            }
10763            #[automatically_derived]
10764            #[doc(hidden)]
10765            impl ::core::convert::From<setStateHistoryReturn>
10766            for UnderlyingRustTuple<'_> {
10767                fn from(value: setStateHistoryReturn) -> Self {
10768                    ()
10769                }
10770            }
10771            #[automatically_derived]
10772            #[doc(hidden)]
10773            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10774            for setStateHistoryReturn {
10775                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10776                    Self {}
10777                }
10778            }
10779        }
10780        impl setStateHistoryReturn {
10781            fn _tokenize(
10782                &self,
10783            ) -> <setStateHistoryCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10784                ()
10785            }
10786        }
10787        #[automatically_derived]
10788        impl alloy_sol_types::SolCall for setStateHistoryCall {
10789            type Parameters<'a> = (
10790                alloy::sol_types::sol_data::Array<LightClient::StateHistoryCommitment>,
10791            );
10792            type Token<'a> = <Self::Parameters<
10793                'a,
10794            > as alloy_sol_types::SolType>::Token<'a>;
10795            type Return = setStateHistoryReturn;
10796            type ReturnTuple<'a> = ();
10797            type ReturnToken<'a> = <Self::ReturnTuple<
10798                'a,
10799            > as alloy_sol_types::SolType>::Token<'a>;
10800            const SIGNATURE: &'static str = "setStateHistory((uint64,uint64,uint64,uint256)[])";
10801            const SELECTOR: [u8; 4] = [245u8, 103u8, 97u8, 96u8];
10802            #[inline]
10803            fn new<'a>(
10804                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10805            ) -> Self {
10806                tuple.into()
10807            }
10808            #[inline]
10809            fn tokenize(&self) -> Self::Token<'_> {
10810                (
10811                    <alloy::sol_types::sol_data::Array<
10812                        LightClient::StateHistoryCommitment,
10813                    > as alloy_sol_types::SolType>::tokenize(
10814                        &self._stateHistoryCommitments,
10815                    ),
10816                )
10817            }
10818            #[inline]
10819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10820                setStateHistoryReturn::_tokenize(ret)
10821            }
10822            #[inline]
10823            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10824                <Self::ReturnTuple<
10825                    '_,
10826                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10827                    .map(Into::into)
10828            }
10829            #[inline]
10830            fn abi_decode_returns_validate(
10831                data: &[u8],
10832            ) -> alloy_sol_types::Result<Self::Return> {
10833                <Self::ReturnTuple<
10834                    '_,
10835                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10836                    .map(Into::into)
10837            }
10838        }
10839    };
10840    #[derive(serde::Serialize, serde::Deserialize)]
10841    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10842    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
10843```solidity
10844function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
10845```*/
10846    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10847    #[derive(Clone)]
10848    pub struct setstateHistoryRetentionPeriodCall {
10849        #[allow(missing_docs)]
10850        pub historySeconds: u32,
10851    }
10852    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
10853    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10854    #[derive(Clone)]
10855    pub struct setstateHistoryRetentionPeriodReturn {}
10856    #[allow(
10857        non_camel_case_types,
10858        non_snake_case,
10859        clippy::pub_underscore_fields,
10860        clippy::style
10861    )]
10862    const _: () = {
10863        use alloy::sol_types as alloy_sol_types;
10864        {
10865            #[doc(hidden)]
10866            #[allow(dead_code)]
10867            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10868            #[doc(hidden)]
10869            type UnderlyingRustTuple<'a> = (u32,);
10870            #[cfg(test)]
10871            #[allow(dead_code, unreachable_patterns)]
10872            fn _type_assertion(
10873                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10874            ) {
10875                match _t {
10876                    alloy_sol_types::private::AssertTypeEq::<
10877                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10878                    >(_) => {}
10879                }
10880            }
10881            #[automatically_derived]
10882            #[doc(hidden)]
10883            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
10884            for UnderlyingRustTuple<'_> {
10885                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
10886                    (value.historySeconds,)
10887                }
10888            }
10889            #[automatically_derived]
10890            #[doc(hidden)]
10891            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10892            for setstateHistoryRetentionPeriodCall {
10893                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10894                    Self { historySeconds: tuple.0 }
10895                }
10896            }
10897        }
10898        {
10899            #[doc(hidden)]
10900            #[allow(dead_code)]
10901            type UnderlyingSolTuple<'a> = ();
10902            #[doc(hidden)]
10903            type UnderlyingRustTuple<'a> = ();
10904            #[cfg(test)]
10905            #[allow(dead_code, unreachable_patterns)]
10906            fn _type_assertion(
10907                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10908            ) {
10909                match _t {
10910                    alloy_sol_types::private::AssertTypeEq::<
10911                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10912                    >(_) => {}
10913                }
10914            }
10915            #[automatically_derived]
10916            #[doc(hidden)]
10917            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
10918            for UnderlyingRustTuple<'_> {
10919                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
10920                    ()
10921                }
10922            }
10923            #[automatically_derived]
10924            #[doc(hidden)]
10925            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10926            for setstateHistoryRetentionPeriodReturn {
10927                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10928                    Self {}
10929                }
10930            }
10931        }
10932        impl setstateHistoryRetentionPeriodReturn {
10933            fn _tokenize(
10934                &self,
10935            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
10936                '_,
10937            > {
10938                ()
10939            }
10940        }
10941        #[automatically_derived]
10942        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
10943            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10944            type Token<'a> = <Self::Parameters<
10945                'a,
10946            > as alloy_sol_types::SolType>::Token<'a>;
10947            type Return = setstateHistoryRetentionPeriodReturn;
10948            type ReturnTuple<'a> = ();
10949            type ReturnToken<'a> = <Self::ReturnTuple<
10950                'a,
10951            > as alloy_sol_types::SolType>::Token<'a>;
10952            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
10953            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
10954            #[inline]
10955            fn new<'a>(
10956                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10957            ) -> Self {
10958                tuple.into()
10959            }
10960            #[inline]
10961            fn tokenize(&self) -> Self::Token<'_> {
10962                (
10963                    <alloy::sol_types::sol_data::Uint<
10964                        32,
10965                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
10966                )
10967            }
10968            #[inline]
10969            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10970                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
10971            }
10972            #[inline]
10973            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10974                <Self::ReturnTuple<
10975                    '_,
10976                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10977                    .map(Into::into)
10978            }
10979            #[inline]
10980            fn abi_decode_returns_validate(
10981                data: &[u8],
10982            ) -> alloy_sol_types::Result<Self::Return> {
10983                <Self::ReturnTuple<
10984                    '_,
10985                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10986                    .map(Into::into)
10987            }
10988        }
10989    };
10990    #[derive(serde::Serialize, serde::Deserialize)]
10991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10992    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
10993```solidity
10994function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
10995```*/
10996    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10997    #[derive(Clone)]
10998    pub struct stateHistoryCommitmentsCall(
10999        pub alloy::sol_types::private::primitives::aliases::U256,
11000    );
11001    #[derive(serde::Serialize, serde::Deserialize)]
11002    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11003    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
11004    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11005    #[derive(Clone)]
11006    pub struct stateHistoryCommitmentsReturn {
11007        #[allow(missing_docs)]
11008        pub l1BlockHeight: u64,
11009        #[allow(missing_docs)]
11010        pub l1BlockTimestamp: u64,
11011        #[allow(missing_docs)]
11012        pub hotShotBlockHeight: u64,
11013        #[allow(missing_docs)]
11014        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11015    }
11016    #[allow(
11017        non_camel_case_types,
11018        non_snake_case,
11019        clippy::pub_underscore_fields,
11020        clippy::style
11021    )]
11022    const _: () = {
11023        use alloy::sol_types as alloy_sol_types;
11024        {
11025            #[doc(hidden)]
11026            #[allow(dead_code)]
11027            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11028            #[doc(hidden)]
11029            type UnderlyingRustTuple<'a> = (
11030                alloy::sol_types::private::primitives::aliases::U256,
11031            );
11032            #[cfg(test)]
11033            #[allow(dead_code, unreachable_patterns)]
11034            fn _type_assertion(
11035                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11036            ) {
11037                match _t {
11038                    alloy_sol_types::private::AssertTypeEq::<
11039                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11040                    >(_) => {}
11041                }
11042            }
11043            #[automatically_derived]
11044            #[doc(hidden)]
11045            impl ::core::convert::From<stateHistoryCommitmentsCall>
11046            for UnderlyingRustTuple<'_> {
11047                fn from(value: stateHistoryCommitmentsCall) -> Self {
11048                    (value.0,)
11049                }
11050            }
11051            #[automatically_derived]
11052            #[doc(hidden)]
11053            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11054            for stateHistoryCommitmentsCall {
11055                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11056                    Self(tuple.0)
11057                }
11058            }
11059        }
11060        {
11061            #[doc(hidden)]
11062            #[allow(dead_code)]
11063            type UnderlyingSolTuple<'a> = (
11064                alloy::sol_types::sol_data::Uint<64>,
11065                alloy::sol_types::sol_data::Uint<64>,
11066                alloy::sol_types::sol_data::Uint<64>,
11067                BN254::ScalarField,
11068            );
11069            #[doc(hidden)]
11070            type UnderlyingRustTuple<'a> = (
11071                u64,
11072                u64,
11073                u64,
11074                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
11075            );
11076            #[cfg(test)]
11077            #[allow(dead_code, unreachable_patterns)]
11078            fn _type_assertion(
11079                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11080            ) {
11081                match _t {
11082                    alloy_sol_types::private::AssertTypeEq::<
11083                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11084                    >(_) => {}
11085                }
11086            }
11087            #[automatically_derived]
11088            #[doc(hidden)]
11089            impl ::core::convert::From<stateHistoryCommitmentsReturn>
11090            for UnderlyingRustTuple<'_> {
11091                fn from(value: stateHistoryCommitmentsReturn) -> Self {
11092                    (
11093                        value.l1BlockHeight,
11094                        value.l1BlockTimestamp,
11095                        value.hotShotBlockHeight,
11096                        value.hotShotBlockCommRoot,
11097                    )
11098                }
11099            }
11100            #[automatically_derived]
11101            #[doc(hidden)]
11102            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11103            for stateHistoryCommitmentsReturn {
11104                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11105                    Self {
11106                        l1BlockHeight: tuple.0,
11107                        l1BlockTimestamp: tuple.1,
11108                        hotShotBlockHeight: tuple.2,
11109                        hotShotBlockCommRoot: tuple.3,
11110                    }
11111                }
11112            }
11113        }
11114        impl stateHistoryCommitmentsReturn {
11115            fn _tokenize(
11116                &self,
11117            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
11118                '_,
11119            > {
11120                (
11121                    <alloy::sol_types::sol_data::Uint<
11122                        64,
11123                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
11124                    <alloy::sol_types::sol_data::Uint<
11125                        64,
11126                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
11127                    <alloy::sol_types::sol_data::Uint<
11128                        64,
11129                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
11130                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
11131                        &self.hotShotBlockCommRoot,
11132                    ),
11133                )
11134            }
11135        }
11136        #[automatically_derived]
11137        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
11138            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
11139            type Token<'a> = <Self::Parameters<
11140                'a,
11141            > as alloy_sol_types::SolType>::Token<'a>;
11142            type Return = stateHistoryCommitmentsReturn;
11143            type ReturnTuple<'a> = (
11144                alloy::sol_types::sol_data::Uint<64>,
11145                alloy::sol_types::sol_data::Uint<64>,
11146                alloy::sol_types::sol_data::Uint<64>,
11147                BN254::ScalarField,
11148            );
11149            type ReturnToken<'a> = <Self::ReturnTuple<
11150                'a,
11151            > as alloy_sol_types::SolType>::Token<'a>;
11152            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
11153            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
11154            #[inline]
11155            fn new<'a>(
11156                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11157            ) -> Self {
11158                tuple.into()
11159            }
11160            #[inline]
11161            fn tokenize(&self) -> Self::Token<'_> {
11162                (
11163                    <alloy::sol_types::sol_data::Uint<
11164                        256,
11165                    > as alloy_sol_types::SolType>::tokenize(&self.0),
11166                )
11167            }
11168            #[inline]
11169            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11170                stateHistoryCommitmentsReturn::_tokenize(ret)
11171            }
11172            #[inline]
11173            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11174                <Self::ReturnTuple<
11175                    '_,
11176                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11177                    .map(Into::into)
11178            }
11179            #[inline]
11180            fn abi_decode_returns_validate(
11181                data: &[u8],
11182            ) -> alloy_sol_types::Result<Self::Return> {
11183                <Self::ReturnTuple<
11184                    '_,
11185                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11186                    .map(Into::into)
11187            }
11188        }
11189    };
11190    #[derive(serde::Serialize, serde::Deserialize)]
11191    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11192    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
11193```solidity
11194function stateHistoryFirstIndex() external view returns (uint64);
11195```*/
11196    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11197    #[derive(Clone)]
11198    pub struct stateHistoryFirstIndexCall;
11199    #[derive(serde::Serialize, serde::Deserialize)]
11200    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11201    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
11202    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11203    #[derive(Clone)]
11204    pub struct stateHistoryFirstIndexReturn {
11205        #[allow(missing_docs)]
11206        pub _0: u64,
11207    }
11208    #[allow(
11209        non_camel_case_types,
11210        non_snake_case,
11211        clippy::pub_underscore_fields,
11212        clippy::style
11213    )]
11214    const _: () = {
11215        use alloy::sol_types as alloy_sol_types;
11216        {
11217            #[doc(hidden)]
11218            #[allow(dead_code)]
11219            type UnderlyingSolTuple<'a> = ();
11220            #[doc(hidden)]
11221            type UnderlyingRustTuple<'a> = ();
11222            #[cfg(test)]
11223            #[allow(dead_code, unreachable_patterns)]
11224            fn _type_assertion(
11225                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11226            ) {
11227                match _t {
11228                    alloy_sol_types::private::AssertTypeEq::<
11229                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11230                    >(_) => {}
11231                }
11232            }
11233            #[automatically_derived]
11234            #[doc(hidden)]
11235            impl ::core::convert::From<stateHistoryFirstIndexCall>
11236            for UnderlyingRustTuple<'_> {
11237                fn from(value: stateHistoryFirstIndexCall) -> Self {
11238                    ()
11239                }
11240            }
11241            #[automatically_derived]
11242            #[doc(hidden)]
11243            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11244            for stateHistoryFirstIndexCall {
11245                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11246                    Self
11247                }
11248            }
11249        }
11250        {
11251            #[doc(hidden)]
11252            #[allow(dead_code)]
11253            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11254            #[doc(hidden)]
11255            type UnderlyingRustTuple<'a> = (u64,);
11256            #[cfg(test)]
11257            #[allow(dead_code, unreachable_patterns)]
11258            fn _type_assertion(
11259                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11260            ) {
11261                match _t {
11262                    alloy_sol_types::private::AssertTypeEq::<
11263                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11264                    >(_) => {}
11265                }
11266            }
11267            #[automatically_derived]
11268            #[doc(hidden)]
11269            impl ::core::convert::From<stateHistoryFirstIndexReturn>
11270            for UnderlyingRustTuple<'_> {
11271                fn from(value: stateHistoryFirstIndexReturn) -> Self {
11272                    (value._0,)
11273                }
11274            }
11275            #[automatically_derived]
11276            #[doc(hidden)]
11277            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11278            for stateHistoryFirstIndexReturn {
11279                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11280                    Self { _0: tuple.0 }
11281                }
11282            }
11283        }
11284        #[automatically_derived]
11285        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
11286            type Parameters<'a> = ();
11287            type Token<'a> = <Self::Parameters<
11288                'a,
11289            > as alloy_sol_types::SolType>::Token<'a>;
11290            type Return = u64;
11291            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
11292            type ReturnToken<'a> = <Self::ReturnTuple<
11293                'a,
11294            > as alloy_sol_types::SolType>::Token<'a>;
11295            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
11296            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
11297            #[inline]
11298            fn new<'a>(
11299                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11300            ) -> Self {
11301                tuple.into()
11302            }
11303            #[inline]
11304            fn tokenize(&self) -> Self::Token<'_> {
11305                ()
11306            }
11307            #[inline]
11308            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11309                (
11310                    <alloy::sol_types::sol_data::Uint<
11311                        64,
11312                    > as alloy_sol_types::SolType>::tokenize(ret),
11313                )
11314            }
11315            #[inline]
11316            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11317                <Self::ReturnTuple<
11318                    '_,
11319                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11320                    .map(|r| {
11321                        let r: stateHistoryFirstIndexReturn = r.into();
11322                        r._0
11323                    })
11324            }
11325            #[inline]
11326            fn abi_decode_returns_validate(
11327                data: &[u8],
11328            ) -> alloy_sol_types::Result<Self::Return> {
11329                <Self::ReturnTuple<
11330                    '_,
11331                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11332                    .map(|r| {
11333                        let r: stateHistoryFirstIndexReturn = r.into();
11334                        r._0
11335                    })
11336            }
11337        }
11338    };
11339    #[derive(serde::Serialize, serde::Deserialize)]
11340    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11341    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
11342```solidity
11343function stateHistoryRetentionPeriod() external view returns (uint32);
11344```*/
11345    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11346    #[derive(Clone)]
11347    pub struct stateHistoryRetentionPeriodCall;
11348    #[derive(serde::Serialize, serde::Deserialize)]
11349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11350    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
11351    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11352    #[derive(Clone)]
11353    pub struct stateHistoryRetentionPeriodReturn {
11354        #[allow(missing_docs)]
11355        pub _0: u32,
11356    }
11357    #[allow(
11358        non_camel_case_types,
11359        non_snake_case,
11360        clippy::pub_underscore_fields,
11361        clippy::style
11362    )]
11363    const _: () = {
11364        use alloy::sol_types as alloy_sol_types;
11365        {
11366            #[doc(hidden)]
11367            #[allow(dead_code)]
11368            type UnderlyingSolTuple<'a> = ();
11369            #[doc(hidden)]
11370            type UnderlyingRustTuple<'a> = ();
11371            #[cfg(test)]
11372            #[allow(dead_code, unreachable_patterns)]
11373            fn _type_assertion(
11374                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11375            ) {
11376                match _t {
11377                    alloy_sol_types::private::AssertTypeEq::<
11378                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11379                    >(_) => {}
11380                }
11381            }
11382            #[automatically_derived]
11383            #[doc(hidden)]
11384            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
11385            for UnderlyingRustTuple<'_> {
11386                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
11387                    ()
11388                }
11389            }
11390            #[automatically_derived]
11391            #[doc(hidden)]
11392            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11393            for stateHistoryRetentionPeriodCall {
11394                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11395                    Self
11396                }
11397            }
11398        }
11399        {
11400            #[doc(hidden)]
11401            #[allow(dead_code)]
11402            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11403            #[doc(hidden)]
11404            type UnderlyingRustTuple<'a> = (u32,);
11405            #[cfg(test)]
11406            #[allow(dead_code, unreachable_patterns)]
11407            fn _type_assertion(
11408                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11409            ) {
11410                match _t {
11411                    alloy_sol_types::private::AssertTypeEq::<
11412                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11413                    >(_) => {}
11414                }
11415            }
11416            #[automatically_derived]
11417            #[doc(hidden)]
11418            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
11419            for UnderlyingRustTuple<'_> {
11420                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
11421                    (value._0,)
11422                }
11423            }
11424            #[automatically_derived]
11425            #[doc(hidden)]
11426            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11427            for stateHistoryRetentionPeriodReturn {
11428                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11429                    Self { _0: tuple.0 }
11430                }
11431            }
11432        }
11433        #[automatically_derived]
11434        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
11435            type Parameters<'a> = ();
11436            type Token<'a> = <Self::Parameters<
11437                'a,
11438            > as alloy_sol_types::SolType>::Token<'a>;
11439            type Return = u32;
11440            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
11441            type ReturnToken<'a> = <Self::ReturnTuple<
11442                'a,
11443            > as alloy_sol_types::SolType>::Token<'a>;
11444            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
11445            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
11446            #[inline]
11447            fn new<'a>(
11448                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11449            ) -> Self {
11450                tuple.into()
11451            }
11452            #[inline]
11453            fn tokenize(&self) -> Self::Token<'_> {
11454                ()
11455            }
11456            #[inline]
11457            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11458                (
11459                    <alloy::sol_types::sol_data::Uint<
11460                        32,
11461                    > as alloy_sol_types::SolType>::tokenize(ret),
11462                )
11463            }
11464            #[inline]
11465            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11466                <Self::ReturnTuple<
11467                    '_,
11468                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11469                    .map(|r| {
11470                        let r: stateHistoryRetentionPeriodReturn = r.into();
11471                        r._0
11472                    })
11473            }
11474            #[inline]
11475            fn abi_decode_returns_validate(
11476                data: &[u8],
11477            ) -> alloy_sol_types::Result<Self::Return> {
11478                <Self::ReturnTuple<
11479                    '_,
11480                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11481                    .map(|r| {
11482                        let r: stateHistoryRetentionPeriodReturn = r.into();
11483                        r._0
11484                    })
11485            }
11486        }
11487    };
11488    #[derive(serde::Serialize, serde::Deserialize)]
11489    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11490    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
11491```solidity
11492function transferOwnership(address newOwner) external;
11493```*/
11494    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11495    #[derive(Clone)]
11496    pub struct transferOwnershipCall {
11497        #[allow(missing_docs)]
11498        pub newOwner: alloy::sol_types::private::Address,
11499    }
11500    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
11501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11502    #[derive(Clone)]
11503    pub struct transferOwnershipReturn {}
11504    #[allow(
11505        non_camel_case_types,
11506        non_snake_case,
11507        clippy::pub_underscore_fields,
11508        clippy::style
11509    )]
11510    const _: () = {
11511        use alloy::sol_types as alloy_sol_types;
11512        {
11513            #[doc(hidden)]
11514            #[allow(dead_code)]
11515            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
11516            #[doc(hidden)]
11517            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
11518            #[cfg(test)]
11519            #[allow(dead_code, unreachable_patterns)]
11520            fn _type_assertion(
11521                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11522            ) {
11523                match _t {
11524                    alloy_sol_types::private::AssertTypeEq::<
11525                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11526                    >(_) => {}
11527                }
11528            }
11529            #[automatically_derived]
11530            #[doc(hidden)]
11531            impl ::core::convert::From<transferOwnershipCall>
11532            for UnderlyingRustTuple<'_> {
11533                fn from(value: transferOwnershipCall) -> Self {
11534                    (value.newOwner,)
11535                }
11536            }
11537            #[automatically_derived]
11538            #[doc(hidden)]
11539            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11540            for transferOwnershipCall {
11541                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11542                    Self { newOwner: tuple.0 }
11543                }
11544            }
11545        }
11546        {
11547            #[doc(hidden)]
11548            #[allow(dead_code)]
11549            type UnderlyingSolTuple<'a> = ();
11550            #[doc(hidden)]
11551            type UnderlyingRustTuple<'a> = ();
11552            #[cfg(test)]
11553            #[allow(dead_code, unreachable_patterns)]
11554            fn _type_assertion(
11555                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11556            ) {
11557                match _t {
11558                    alloy_sol_types::private::AssertTypeEq::<
11559                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11560                    >(_) => {}
11561                }
11562            }
11563            #[automatically_derived]
11564            #[doc(hidden)]
11565            impl ::core::convert::From<transferOwnershipReturn>
11566            for UnderlyingRustTuple<'_> {
11567                fn from(value: transferOwnershipReturn) -> Self {
11568                    ()
11569                }
11570            }
11571            #[automatically_derived]
11572            #[doc(hidden)]
11573            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11574            for transferOwnershipReturn {
11575                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11576                    Self {}
11577                }
11578            }
11579        }
11580        impl transferOwnershipReturn {
11581            fn _tokenize(
11582                &self,
11583            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11584                ()
11585            }
11586        }
11587        #[automatically_derived]
11588        impl alloy_sol_types::SolCall for transferOwnershipCall {
11589            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
11590            type Token<'a> = <Self::Parameters<
11591                'a,
11592            > as alloy_sol_types::SolType>::Token<'a>;
11593            type Return = transferOwnershipReturn;
11594            type ReturnTuple<'a> = ();
11595            type ReturnToken<'a> = <Self::ReturnTuple<
11596                'a,
11597            > as alloy_sol_types::SolType>::Token<'a>;
11598            const SIGNATURE: &'static str = "transferOwnership(address)";
11599            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
11600            #[inline]
11601            fn new<'a>(
11602                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11603            ) -> Self {
11604                tuple.into()
11605            }
11606            #[inline]
11607            fn tokenize(&self) -> Self::Token<'_> {
11608                (
11609                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11610                        &self.newOwner,
11611                    ),
11612                )
11613            }
11614            #[inline]
11615            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11616                transferOwnershipReturn::_tokenize(ret)
11617            }
11618            #[inline]
11619            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11620                <Self::ReturnTuple<
11621                    '_,
11622                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11623                    .map(Into::into)
11624            }
11625            #[inline]
11626            fn abi_decode_returns_validate(
11627                data: &[u8],
11628            ) -> alloy_sol_types::Result<Self::Return> {
11629                <Self::ReturnTuple<
11630                    '_,
11631                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11632                    .map(Into::into)
11633            }
11634        }
11635    };
11636    #[derive(serde::Serialize, serde::Deserialize)]
11637    #[derive(Default, Debug, PartialEq, Eq, Hash)]
11638    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
11639```solidity
11640function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
11641```*/
11642    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11643    #[derive(Clone)]
11644    pub struct upgradeToAndCallCall {
11645        #[allow(missing_docs)]
11646        pub newImplementation: alloy::sol_types::private::Address,
11647        #[allow(missing_docs)]
11648        pub data: alloy::sol_types::private::Bytes,
11649    }
11650    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
11651    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
11652    #[derive(Clone)]
11653    pub struct upgradeToAndCallReturn {}
11654    #[allow(
11655        non_camel_case_types,
11656        non_snake_case,
11657        clippy::pub_underscore_fields,
11658        clippy::style
11659    )]
11660    const _: () = {
11661        use alloy::sol_types as alloy_sol_types;
11662        {
11663            #[doc(hidden)]
11664            #[allow(dead_code)]
11665            type UnderlyingSolTuple<'a> = (
11666                alloy::sol_types::sol_data::Address,
11667                alloy::sol_types::sol_data::Bytes,
11668            );
11669            #[doc(hidden)]
11670            type UnderlyingRustTuple<'a> = (
11671                alloy::sol_types::private::Address,
11672                alloy::sol_types::private::Bytes,
11673            );
11674            #[cfg(test)]
11675            #[allow(dead_code, unreachable_patterns)]
11676            fn _type_assertion(
11677                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11678            ) {
11679                match _t {
11680                    alloy_sol_types::private::AssertTypeEq::<
11681                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11682                    >(_) => {}
11683                }
11684            }
11685            #[automatically_derived]
11686            #[doc(hidden)]
11687            impl ::core::convert::From<upgradeToAndCallCall>
11688            for UnderlyingRustTuple<'_> {
11689                fn from(value: upgradeToAndCallCall) -> Self {
11690                    (value.newImplementation, value.data)
11691                }
11692            }
11693            #[automatically_derived]
11694            #[doc(hidden)]
11695            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11696            for upgradeToAndCallCall {
11697                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11698                    Self {
11699                        newImplementation: tuple.0,
11700                        data: tuple.1,
11701                    }
11702                }
11703            }
11704        }
11705        {
11706            #[doc(hidden)]
11707            #[allow(dead_code)]
11708            type UnderlyingSolTuple<'a> = ();
11709            #[doc(hidden)]
11710            type UnderlyingRustTuple<'a> = ();
11711            #[cfg(test)]
11712            #[allow(dead_code, unreachable_patterns)]
11713            fn _type_assertion(
11714                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
11715            ) {
11716                match _t {
11717                    alloy_sol_types::private::AssertTypeEq::<
11718                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
11719                    >(_) => {}
11720                }
11721            }
11722            #[automatically_derived]
11723            #[doc(hidden)]
11724            impl ::core::convert::From<upgradeToAndCallReturn>
11725            for UnderlyingRustTuple<'_> {
11726                fn from(value: upgradeToAndCallReturn) -> Self {
11727                    ()
11728                }
11729            }
11730            #[automatically_derived]
11731            #[doc(hidden)]
11732            impl ::core::convert::From<UnderlyingRustTuple<'_>>
11733            for upgradeToAndCallReturn {
11734                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
11735                    Self {}
11736                }
11737            }
11738        }
11739        impl upgradeToAndCallReturn {
11740            fn _tokenize(
11741                &self,
11742            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
11743                ()
11744            }
11745        }
11746        #[automatically_derived]
11747        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
11748            type Parameters<'a> = (
11749                alloy::sol_types::sol_data::Address,
11750                alloy::sol_types::sol_data::Bytes,
11751            );
11752            type Token<'a> = <Self::Parameters<
11753                'a,
11754            > as alloy_sol_types::SolType>::Token<'a>;
11755            type Return = upgradeToAndCallReturn;
11756            type ReturnTuple<'a> = ();
11757            type ReturnToken<'a> = <Self::ReturnTuple<
11758                'a,
11759            > as alloy_sol_types::SolType>::Token<'a>;
11760            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
11761            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
11762            #[inline]
11763            fn new<'a>(
11764                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
11765            ) -> Self {
11766                tuple.into()
11767            }
11768            #[inline]
11769            fn tokenize(&self) -> Self::Token<'_> {
11770                (
11771                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
11772                        &self.newImplementation,
11773                    ),
11774                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
11775                        &self.data,
11776                    ),
11777                )
11778            }
11779            #[inline]
11780            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
11781                upgradeToAndCallReturn::_tokenize(ret)
11782            }
11783            #[inline]
11784            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
11785                <Self::ReturnTuple<
11786                    '_,
11787                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
11788                    .map(Into::into)
11789            }
11790            #[inline]
11791            fn abi_decode_returns_validate(
11792                data: &[u8],
11793            ) -> alloy_sol_types::Result<Self::Return> {
11794                <Self::ReturnTuple<
11795                    '_,
11796                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
11797                    .map(Into::into)
11798            }
11799        }
11800    };
11801    ///Container for all the [`LightClientMock`](self) function calls.
11802    #[derive(Clone)]
11803    #[derive(serde::Serialize, serde::Deserialize)]
11804    #[derive()]
11805    pub enum LightClientMockCalls {
11806        #[allow(missing_docs)]
11807        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
11808        #[allow(missing_docs)]
11809        _getVk(_getVkCall),
11810        #[allow(missing_docs)]
11811        currentBlockNumber(currentBlockNumberCall),
11812        #[allow(missing_docs)]
11813        disablePermissionedProverMode(disablePermissionedProverModeCall),
11814        #[allow(missing_docs)]
11815        finalizedState(finalizedStateCall),
11816        #[allow(missing_docs)]
11817        genesisStakeTableState(genesisStakeTableStateCall),
11818        #[allow(missing_docs)]
11819        genesisState(genesisStateCall),
11820        #[allow(missing_docs)]
11821        getHotShotCommitment(getHotShotCommitmentCall),
11822        #[allow(missing_docs)]
11823        getStateHistoryCount(getStateHistoryCountCall),
11824        #[allow(missing_docs)]
11825        getVersion(getVersionCall),
11826        #[allow(missing_docs)]
11827        initialize(initializeCall),
11828        #[allow(missing_docs)]
11829        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
11830        #[allow(missing_docs)]
11831        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
11832        #[allow(missing_docs)]
11833        newFinalizedState(newFinalizedStateCall),
11834        #[allow(missing_docs)]
11835        owner(ownerCall),
11836        #[allow(missing_docs)]
11837        permissionedProver(permissionedProverCall),
11838        #[allow(missing_docs)]
11839        proxiableUUID(proxiableUUIDCall),
11840        #[allow(missing_docs)]
11841        renounceOwnership(renounceOwnershipCall),
11842        #[allow(missing_docs)]
11843        setFinalizedState(setFinalizedStateCall),
11844        #[allow(missing_docs)]
11845        setHotShotDownSince(setHotShotDownSinceCall),
11846        #[allow(missing_docs)]
11847        setHotShotUp(setHotShotUpCall),
11848        #[allow(missing_docs)]
11849        setPermissionedProver(setPermissionedProverCall),
11850        #[allow(missing_docs)]
11851        setStateHistory(setStateHistoryCall),
11852        #[allow(missing_docs)]
11853        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
11854        #[allow(missing_docs)]
11855        stateHistoryCommitments(stateHistoryCommitmentsCall),
11856        #[allow(missing_docs)]
11857        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
11858        #[allow(missing_docs)]
11859        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
11860        #[allow(missing_docs)]
11861        transferOwnership(transferOwnershipCall),
11862        #[allow(missing_docs)]
11863        upgradeToAndCall(upgradeToAndCallCall),
11864    }
11865    impl LightClientMockCalls {
11866        /// All the selectors of this enum.
11867        ///
11868        /// Note that the selectors might not be in the same order as the variants.
11869        /// No guarantees are made about the order of the selectors.
11870        ///
11871        /// Prefer using `SolInterface` methods instead.
11872        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11873            [1u8, 63u8, 165u8, 252u8],
11874            [2u8, 181u8, 146u8, 243u8],
11875            [13u8, 142u8, 110u8, 44u8],
11876            [18u8, 23u8, 60u8, 44u8],
11877            [32u8, 99u8, 212u8, 247u8],
11878            [45u8, 82u8, 170u8, 214u8],
11879            [47u8, 121u8, 136u8, 157u8],
11880            [49u8, 61u8, 247u8, 177u8],
11881            [55u8, 142u8, 194u8, 59u8],
11882            [66u8, 109u8, 49u8, 148u8],
11883            [79u8, 30u8, 242u8, 134u8],
11884            [82u8, 209u8, 144u8, 45u8],
11885            [105u8, 204u8, 106u8, 4u8],
11886            [113u8, 80u8, 24u8, 166u8],
11887            [130u8, 110u8, 65u8, 252u8],
11888            [133u8, 132u8, 210u8, 63u8],
11889            [141u8, 165u8, 203u8, 91u8],
11890            [150u8, 193u8, 202u8, 97u8],
11891            [155u8, 170u8, 60u8, 201u8],
11892            [159u8, 219u8, 84u8, 167u8],
11893            [173u8, 60u8, 177u8, 204u8],
11894            [181u8, 173u8, 234u8, 60u8],
11895            [194u8, 59u8, 158u8, 158u8],
11896            [200u8, 229u8, 228u8, 152u8],
11897            [210u8, 77u8, 147u8, 61u8],
11898            [224u8, 48u8, 51u8, 1u8],
11899            [242u8, 253u8, 227u8, 139u8],
11900            [245u8, 103u8, 97u8, 96u8],
11901            [249u8, 229u8, 13u8, 25u8],
11902        ];
11903        /// The names of the variants in the same order as `SELECTORS`.
11904        pub const VARIANT_NAMES: &'static [&'static str] = &[
11905            ::core::stringify!(setPermissionedProver),
11906            ::core::stringify!(stateHistoryCommitments),
11907            ::core::stringify!(getVersion),
11908            ::core::stringify!(_getVk),
11909            ::core::stringify!(newFinalizedState),
11910            ::core::stringify!(setHotShotDownSince),
11911            ::core::stringify!(stateHistoryFirstIndex),
11912            ::core::stringify!(permissionedProver),
11913            ::core::stringify!(currentBlockNumber),
11914            ::core::stringify!(genesisStakeTableState),
11915            ::core::stringify!(upgradeToAndCall),
11916            ::core::stringify!(proxiableUUID),
11917            ::core::stringify!(disablePermissionedProverMode),
11918            ::core::stringify!(renounceOwnership),
11919            ::core::stringify!(isPermissionedProverEnabled),
11920            ::core::stringify!(getHotShotCommitment),
11921            ::core::stringify!(owner),
11922            ::core::stringify!(setstateHistoryRetentionPeriod),
11923            ::core::stringify!(initialize),
11924            ::core::stringify!(finalizedState),
11925            ::core::stringify!(UPGRADE_INTERFACE_VERSION),
11926            ::core::stringify!(setFinalizedState),
11927            ::core::stringify!(stateHistoryRetentionPeriod),
11928            ::core::stringify!(setHotShotUp),
11929            ::core::stringify!(genesisState),
11930            ::core::stringify!(lagOverEscapeHatchThreshold),
11931            ::core::stringify!(transferOwnership),
11932            ::core::stringify!(setStateHistory),
11933            ::core::stringify!(getStateHistoryCount),
11934        ];
11935        /// The signatures in the same order as `SELECTORS`.
11936        pub const SIGNATURES: &'static [&'static str] = &[
11937            <setPermissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
11938            <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SIGNATURE,
11939            <getVersionCall as alloy_sol_types::SolCall>::SIGNATURE,
11940            <_getVkCall as alloy_sol_types::SolCall>::SIGNATURE,
11941            <newFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11942            <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SIGNATURE,
11943            <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SIGNATURE,
11944            <permissionedProverCall as alloy_sol_types::SolCall>::SIGNATURE,
11945            <currentBlockNumberCall as alloy_sol_types::SolCall>::SIGNATURE,
11946            <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11947            <upgradeToAndCallCall as alloy_sol_types::SolCall>::SIGNATURE,
11948            <proxiableUUIDCall as alloy_sol_types::SolCall>::SIGNATURE,
11949            <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SIGNATURE,
11950            <renounceOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
11951            <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SIGNATURE,
11952            <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SIGNATURE,
11953            <ownerCall as alloy_sol_types::SolCall>::SIGNATURE,
11954            <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
11955            <initializeCall as alloy_sol_types::SolCall>::SIGNATURE,
11956            <finalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11957            <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SIGNATURE,
11958            <setFinalizedStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11959            <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SIGNATURE,
11960            <setHotShotUpCall as alloy_sol_types::SolCall>::SIGNATURE,
11961            <genesisStateCall as alloy_sol_types::SolCall>::SIGNATURE,
11962            <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SIGNATURE,
11963            <transferOwnershipCall as alloy_sol_types::SolCall>::SIGNATURE,
11964            <setStateHistoryCall as alloy_sol_types::SolCall>::SIGNATURE,
11965            <getStateHistoryCountCall as alloy_sol_types::SolCall>::SIGNATURE,
11966        ];
11967        /// Returns the signature for the given selector, if known.
11968        #[inline]
11969        pub fn signature_by_selector(
11970            selector: [u8; 4usize],
11971        ) -> ::core::option::Option<&'static str> {
11972            match Self::SELECTORS.binary_search(&selector) {
11973                ::core::result::Result::Ok(idx) => {
11974                    ::core::option::Option::Some(Self::SIGNATURES[idx])
11975                }
11976                ::core::result::Result::Err(_) => ::core::option::Option::None,
11977            }
11978        }
11979        /// Returns the enum variant name for the given selector, if known.
11980        #[inline]
11981        pub fn name_by_selector(
11982            selector: [u8; 4usize],
11983        ) -> ::core::option::Option<&'static str> {
11984            let sig = Self::signature_by_selector(selector)?;
11985            sig.split_once('(').map(|(name, _)| name)
11986        }
11987    }
11988    #[automatically_derived]
11989    impl alloy_sol_types::SolInterface for LightClientMockCalls {
11990        const NAME: &'static str = "LightClientMockCalls";
11991        const MIN_DATA_LENGTH: usize = 0usize;
11992        const COUNT: usize = 29usize;
11993        #[inline]
11994        fn selector(&self) -> [u8; 4] {
11995            match self {
11996                Self::UPGRADE_INTERFACE_VERSION(_) => {
11997                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
11998                }
11999                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
12000                Self::currentBlockNumber(_) => {
12001                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
12002                }
12003                Self::disablePermissionedProverMode(_) => {
12004                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
12005                }
12006                Self::finalizedState(_) => {
12007                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12008                }
12009                Self::genesisStakeTableState(_) => {
12010                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
12011                }
12012                Self::genesisState(_) => {
12013                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
12014                }
12015                Self::getHotShotCommitment(_) => {
12016                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
12017                }
12018                Self::getStateHistoryCount(_) => {
12019                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
12020                }
12021                Self::getVersion(_) => {
12022                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
12023                }
12024                Self::initialize(_) => {
12025                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
12026                }
12027                Self::isPermissionedProverEnabled(_) => {
12028                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
12029                }
12030                Self::lagOverEscapeHatchThreshold(_) => {
12031                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
12032                }
12033                Self::newFinalizedState(_) => {
12034                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12035                }
12036                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
12037                Self::permissionedProver(_) => {
12038                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12039                }
12040                Self::proxiableUUID(_) => {
12041                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
12042                }
12043                Self::renounceOwnership(_) => {
12044                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12045                }
12046                Self::setFinalizedState(_) => {
12047                    <setFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
12048                }
12049                Self::setHotShotDownSince(_) => {
12050                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::SELECTOR
12051                }
12052                Self::setHotShotUp(_) => {
12053                    <setHotShotUpCall as alloy_sol_types::SolCall>::SELECTOR
12054                }
12055                Self::setPermissionedProver(_) => {
12056                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
12057                }
12058                Self::setStateHistory(_) => {
12059                    <setStateHistoryCall as alloy_sol_types::SolCall>::SELECTOR
12060                }
12061                Self::setstateHistoryRetentionPeriod(_) => {
12062                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12063                }
12064                Self::stateHistoryCommitments(_) => {
12065                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
12066                }
12067                Self::stateHistoryFirstIndex(_) => {
12068                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
12069                }
12070                Self::stateHistoryRetentionPeriod(_) => {
12071                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
12072                }
12073                Self::transferOwnership(_) => {
12074                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
12075                }
12076                Self::upgradeToAndCall(_) => {
12077                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
12078                }
12079            }
12080        }
12081        #[inline]
12082        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
12083            Self::SELECTORS.get(i).copied()
12084        }
12085        #[inline]
12086        fn valid_selector(selector: [u8; 4]) -> bool {
12087            Self::SELECTORS.binary_search(&selector).is_ok()
12088        }
12089        #[inline]
12090        #[allow(non_snake_case)]
12091        fn abi_decode_raw(
12092            selector: [u8; 4],
12093            data: &[u8],
12094        ) -> alloy_sol_types::Result<Self> {
12095            static DECODE_SHIMS: &[fn(
12096                &[u8],
12097            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
12098                {
12099                    fn setPermissionedProver(
12100                        data: &[u8],
12101                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12102                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12103                                data,
12104                            )
12105                            .map(LightClientMockCalls::setPermissionedProver)
12106                    }
12107                    setPermissionedProver
12108                },
12109                {
12110                    fn stateHistoryCommitments(
12111                        data: &[u8],
12112                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12113                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
12114                                data,
12115                            )
12116                            .map(LightClientMockCalls::stateHistoryCommitments)
12117                    }
12118                    stateHistoryCommitments
12119                },
12120                {
12121                    fn getVersion(
12122                        data: &[u8],
12123                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12124                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
12125                                data,
12126                            )
12127                            .map(LightClientMockCalls::getVersion)
12128                    }
12129                    getVersion
12130                },
12131                {
12132                    fn _getVk(
12133                        data: &[u8],
12134                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12135                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
12136                            .map(LightClientMockCalls::_getVk)
12137                    }
12138                    _getVk
12139                },
12140                {
12141                    fn newFinalizedState(
12142                        data: &[u8],
12143                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12144                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12145                                data,
12146                            )
12147                            .map(LightClientMockCalls::newFinalizedState)
12148                    }
12149                    newFinalizedState
12150                },
12151                {
12152                    fn setHotShotDownSince(
12153                        data: &[u8],
12154                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12155                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw(
12156                                data,
12157                            )
12158                            .map(LightClientMockCalls::setHotShotDownSince)
12159                    }
12160                    setHotShotDownSince
12161                },
12162                {
12163                    fn stateHistoryFirstIndex(
12164                        data: &[u8],
12165                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12166                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
12167                                data,
12168                            )
12169                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12170                    }
12171                    stateHistoryFirstIndex
12172                },
12173                {
12174                    fn permissionedProver(
12175                        data: &[u8],
12176                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12177                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
12178                                data,
12179                            )
12180                            .map(LightClientMockCalls::permissionedProver)
12181                    }
12182                    permissionedProver
12183                },
12184                {
12185                    fn currentBlockNumber(
12186                        data: &[u8],
12187                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12188                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
12189                                data,
12190                            )
12191                            .map(LightClientMockCalls::currentBlockNumber)
12192                    }
12193                    currentBlockNumber
12194                },
12195                {
12196                    fn genesisStakeTableState(
12197                        data: &[u8],
12198                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12199                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12200                                data,
12201                            )
12202                            .map(LightClientMockCalls::genesisStakeTableState)
12203                    }
12204                    genesisStakeTableState
12205                },
12206                {
12207                    fn upgradeToAndCall(
12208                        data: &[u8],
12209                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12210                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
12211                                data,
12212                            )
12213                            .map(LightClientMockCalls::upgradeToAndCall)
12214                    }
12215                    upgradeToAndCall
12216                },
12217                {
12218                    fn proxiableUUID(
12219                        data: &[u8],
12220                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12221                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
12222                                data,
12223                            )
12224                            .map(LightClientMockCalls::proxiableUUID)
12225                    }
12226                    proxiableUUID
12227                },
12228                {
12229                    fn disablePermissionedProverMode(
12230                        data: &[u8],
12231                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12232                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12233                                data,
12234                            )
12235                            .map(LightClientMockCalls::disablePermissionedProverMode)
12236                    }
12237                    disablePermissionedProverMode
12238                },
12239                {
12240                    fn renounceOwnership(
12241                        data: &[u8],
12242                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12243                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12244                                data,
12245                            )
12246                            .map(LightClientMockCalls::renounceOwnership)
12247                    }
12248                    renounceOwnership
12249                },
12250                {
12251                    fn isPermissionedProverEnabled(
12252                        data: &[u8],
12253                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12254                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
12255                                data,
12256                            )
12257                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12258                    }
12259                    isPermissionedProverEnabled
12260                },
12261                {
12262                    fn getHotShotCommitment(
12263                        data: &[u8],
12264                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12265                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
12266                                data,
12267                            )
12268                            .map(LightClientMockCalls::getHotShotCommitment)
12269                    }
12270                    getHotShotCommitment
12271                },
12272                {
12273                    fn owner(
12274                        data: &[u8],
12275                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12276                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
12277                            .map(LightClientMockCalls::owner)
12278                    }
12279                    owner
12280                },
12281                {
12282                    fn setstateHistoryRetentionPeriod(
12283                        data: &[u8],
12284                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12285                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12286                                data,
12287                            )
12288                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12289                    }
12290                    setstateHistoryRetentionPeriod
12291                },
12292                {
12293                    fn initialize(
12294                        data: &[u8],
12295                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12296                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
12297                                data,
12298                            )
12299                            .map(LightClientMockCalls::initialize)
12300                    }
12301                    initialize
12302                },
12303                {
12304                    fn finalizedState(
12305                        data: &[u8],
12306                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12307                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12308                                data,
12309                            )
12310                            .map(LightClientMockCalls::finalizedState)
12311                    }
12312                    finalizedState
12313                },
12314                {
12315                    fn UPGRADE_INTERFACE_VERSION(
12316                        data: &[u8],
12317                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12318                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
12319                                data,
12320                            )
12321                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12322                    }
12323                    UPGRADE_INTERFACE_VERSION
12324                },
12325                {
12326                    fn setFinalizedState(
12327                        data: &[u8],
12328                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12329                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12330                                data,
12331                            )
12332                            .map(LightClientMockCalls::setFinalizedState)
12333                    }
12334                    setFinalizedState
12335                },
12336                {
12337                    fn stateHistoryRetentionPeriod(
12338                        data: &[u8],
12339                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12340                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
12341                                data,
12342                            )
12343                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12344                    }
12345                    stateHistoryRetentionPeriod
12346                },
12347                {
12348                    fn setHotShotUp(
12349                        data: &[u8],
12350                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12351                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw(
12352                                data,
12353                            )
12354                            .map(LightClientMockCalls::setHotShotUp)
12355                    }
12356                    setHotShotUp
12357                },
12358                {
12359                    fn genesisState(
12360                        data: &[u8],
12361                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12362                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
12363                                data,
12364                            )
12365                            .map(LightClientMockCalls::genesisState)
12366                    }
12367                    genesisState
12368                },
12369                {
12370                    fn lagOverEscapeHatchThreshold(
12371                        data: &[u8],
12372                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12373                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
12374                                data,
12375                            )
12376                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12377                    }
12378                    lagOverEscapeHatchThreshold
12379                },
12380                {
12381                    fn transferOwnership(
12382                        data: &[u8],
12383                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12384                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
12385                                data,
12386                            )
12387                            .map(LightClientMockCalls::transferOwnership)
12388                    }
12389                    transferOwnership
12390                },
12391                {
12392                    fn setStateHistory(
12393                        data: &[u8],
12394                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12395                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw(
12396                                data,
12397                            )
12398                            .map(LightClientMockCalls::setStateHistory)
12399                    }
12400                    setStateHistory
12401                },
12402                {
12403                    fn getStateHistoryCount(
12404                        data: &[u8],
12405                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12406                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
12407                                data,
12408                            )
12409                            .map(LightClientMockCalls::getStateHistoryCount)
12410                    }
12411                    getStateHistoryCount
12412                },
12413            ];
12414            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12415                return Err(
12416                    alloy_sol_types::Error::unknown_selector(
12417                        <Self as alloy_sol_types::SolInterface>::NAME,
12418                        selector,
12419                    ),
12420                );
12421            };
12422            DECODE_SHIMS[idx](data)
12423        }
12424        #[inline]
12425        #[allow(non_snake_case)]
12426        fn abi_decode_raw_validate(
12427            selector: [u8; 4],
12428            data: &[u8],
12429        ) -> alloy_sol_types::Result<Self> {
12430            static DECODE_VALIDATE_SHIMS: &[fn(
12431                &[u8],
12432            ) -> alloy_sol_types::Result<LightClientMockCalls>] = &[
12433                {
12434                    fn setPermissionedProver(
12435                        data: &[u8],
12436                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12437                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12438                                data,
12439                            )
12440                            .map(LightClientMockCalls::setPermissionedProver)
12441                    }
12442                    setPermissionedProver
12443                },
12444                {
12445                    fn stateHistoryCommitments(
12446                        data: &[u8],
12447                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12448                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12449                                data,
12450                            )
12451                            .map(LightClientMockCalls::stateHistoryCommitments)
12452                    }
12453                    stateHistoryCommitments
12454                },
12455                {
12456                    fn getVersion(
12457                        data: &[u8],
12458                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12459                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12460                                data,
12461                            )
12462                            .map(LightClientMockCalls::getVersion)
12463                    }
12464                    getVersion
12465                },
12466                {
12467                    fn _getVk(
12468                        data: &[u8],
12469                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12470                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12471                                data,
12472                            )
12473                            .map(LightClientMockCalls::_getVk)
12474                    }
12475                    _getVk
12476                },
12477                {
12478                    fn newFinalizedState(
12479                        data: &[u8],
12480                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12481                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12482                                data,
12483                            )
12484                            .map(LightClientMockCalls::newFinalizedState)
12485                    }
12486                    newFinalizedState
12487                },
12488                {
12489                    fn setHotShotDownSince(
12490                        data: &[u8],
12491                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12492                        <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12493                                data,
12494                            )
12495                            .map(LightClientMockCalls::setHotShotDownSince)
12496                    }
12497                    setHotShotDownSince
12498                },
12499                {
12500                    fn stateHistoryFirstIndex(
12501                        data: &[u8],
12502                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12503                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12504                                data,
12505                            )
12506                            .map(LightClientMockCalls::stateHistoryFirstIndex)
12507                    }
12508                    stateHistoryFirstIndex
12509                },
12510                {
12511                    fn permissionedProver(
12512                        data: &[u8],
12513                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12514                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12515                                data,
12516                            )
12517                            .map(LightClientMockCalls::permissionedProver)
12518                    }
12519                    permissionedProver
12520                },
12521                {
12522                    fn currentBlockNumber(
12523                        data: &[u8],
12524                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12525                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12526                                data,
12527                            )
12528                            .map(LightClientMockCalls::currentBlockNumber)
12529                    }
12530                    currentBlockNumber
12531                },
12532                {
12533                    fn genesisStakeTableState(
12534                        data: &[u8],
12535                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12536                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12537                                data,
12538                            )
12539                            .map(LightClientMockCalls::genesisStakeTableState)
12540                    }
12541                    genesisStakeTableState
12542                },
12543                {
12544                    fn upgradeToAndCall(
12545                        data: &[u8],
12546                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12547                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12548                                data,
12549                            )
12550                            .map(LightClientMockCalls::upgradeToAndCall)
12551                    }
12552                    upgradeToAndCall
12553                },
12554                {
12555                    fn proxiableUUID(
12556                        data: &[u8],
12557                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12558                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12559                                data,
12560                            )
12561                            .map(LightClientMockCalls::proxiableUUID)
12562                    }
12563                    proxiableUUID
12564                },
12565                {
12566                    fn disablePermissionedProverMode(
12567                        data: &[u8],
12568                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12569                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12570                                data,
12571                            )
12572                            .map(LightClientMockCalls::disablePermissionedProverMode)
12573                    }
12574                    disablePermissionedProverMode
12575                },
12576                {
12577                    fn renounceOwnership(
12578                        data: &[u8],
12579                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12580                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12581                                data,
12582                            )
12583                            .map(LightClientMockCalls::renounceOwnership)
12584                    }
12585                    renounceOwnership
12586                },
12587                {
12588                    fn isPermissionedProverEnabled(
12589                        data: &[u8],
12590                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12591                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12592                                data,
12593                            )
12594                            .map(LightClientMockCalls::isPermissionedProverEnabled)
12595                    }
12596                    isPermissionedProverEnabled
12597                },
12598                {
12599                    fn getHotShotCommitment(
12600                        data: &[u8],
12601                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12602                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12603                                data,
12604                            )
12605                            .map(LightClientMockCalls::getHotShotCommitment)
12606                    }
12607                    getHotShotCommitment
12608                },
12609                {
12610                    fn owner(
12611                        data: &[u8],
12612                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12613                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12614                                data,
12615                            )
12616                            .map(LightClientMockCalls::owner)
12617                    }
12618                    owner
12619                },
12620                {
12621                    fn setstateHistoryRetentionPeriod(
12622                        data: &[u8],
12623                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12624                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12625                                data,
12626                            )
12627                            .map(LightClientMockCalls::setstateHistoryRetentionPeriod)
12628                    }
12629                    setstateHistoryRetentionPeriod
12630                },
12631                {
12632                    fn initialize(
12633                        data: &[u8],
12634                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12635                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12636                                data,
12637                            )
12638                            .map(LightClientMockCalls::initialize)
12639                    }
12640                    initialize
12641                },
12642                {
12643                    fn finalizedState(
12644                        data: &[u8],
12645                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12646                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12647                                data,
12648                            )
12649                            .map(LightClientMockCalls::finalizedState)
12650                    }
12651                    finalizedState
12652                },
12653                {
12654                    fn UPGRADE_INTERFACE_VERSION(
12655                        data: &[u8],
12656                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12657                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12658                                data,
12659                            )
12660                            .map(LightClientMockCalls::UPGRADE_INTERFACE_VERSION)
12661                    }
12662                    UPGRADE_INTERFACE_VERSION
12663                },
12664                {
12665                    fn setFinalizedState(
12666                        data: &[u8],
12667                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12668                        <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12669                                data,
12670                            )
12671                            .map(LightClientMockCalls::setFinalizedState)
12672                    }
12673                    setFinalizedState
12674                },
12675                {
12676                    fn stateHistoryRetentionPeriod(
12677                        data: &[u8],
12678                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12679                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12680                                data,
12681                            )
12682                            .map(LightClientMockCalls::stateHistoryRetentionPeriod)
12683                    }
12684                    stateHistoryRetentionPeriod
12685                },
12686                {
12687                    fn setHotShotUp(
12688                        data: &[u8],
12689                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12690                        <setHotShotUpCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12691                                data,
12692                            )
12693                            .map(LightClientMockCalls::setHotShotUp)
12694                    }
12695                    setHotShotUp
12696                },
12697                {
12698                    fn genesisState(
12699                        data: &[u8],
12700                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12701                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12702                                data,
12703                            )
12704                            .map(LightClientMockCalls::genesisState)
12705                    }
12706                    genesisState
12707                },
12708                {
12709                    fn lagOverEscapeHatchThreshold(
12710                        data: &[u8],
12711                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12712                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12713                                data,
12714                            )
12715                            .map(LightClientMockCalls::lagOverEscapeHatchThreshold)
12716                    }
12717                    lagOverEscapeHatchThreshold
12718                },
12719                {
12720                    fn transferOwnership(
12721                        data: &[u8],
12722                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12723                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12724                                data,
12725                            )
12726                            .map(LightClientMockCalls::transferOwnership)
12727                    }
12728                    transferOwnership
12729                },
12730                {
12731                    fn setStateHistory(
12732                        data: &[u8],
12733                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12734                        <setStateHistoryCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12735                                data,
12736                            )
12737                            .map(LightClientMockCalls::setStateHistory)
12738                    }
12739                    setStateHistory
12740                },
12741                {
12742                    fn getStateHistoryCount(
12743                        data: &[u8],
12744                    ) -> alloy_sol_types::Result<LightClientMockCalls> {
12745                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
12746                                data,
12747                            )
12748                            .map(LightClientMockCalls::getStateHistoryCount)
12749                    }
12750                    getStateHistoryCount
12751                },
12752            ];
12753            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12754                return Err(
12755                    alloy_sol_types::Error::unknown_selector(
12756                        <Self as alloy_sol_types::SolInterface>::NAME,
12757                        selector,
12758                    ),
12759                );
12760            };
12761            DECODE_VALIDATE_SHIMS[idx](data)
12762        }
12763        #[inline]
12764        fn abi_encoded_size(&self) -> usize {
12765            match self {
12766                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12767                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
12768                        inner,
12769                    )
12770                }
12771                Self::_getVk(inner) => {
12772                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12773                }
12774                Self::currentBlockNumber(inner) => {
12775                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
12776                        inner,
12777                    )
12778                }
12779                Self::disablePermissionedProverMode(inner) => {
12780                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
12781                        inner,
12782                    )
12783                }
12784                Self::finalizedState(inner) => {
12785                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12786                        inner,
12787                    )
12788                }
12789                Self::genesisStakeTableState(inner) => {
12790                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12791                        inner,
12792                    )
12793                }
12794                Self::genesisState(inner) => {
12795                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12796                        inner,
12797                    )
12798                }
12799                Self::getHotShotCommitment(inner) => {
12800                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
12801                        inner,
12802                    )
12803                }
12804                Self::getStateHistoryCount(inner) => {
12805                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
12806                        inner,
12807                    )
12808                }
12809                Self::getVersion(inner) => {
12810                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12811                }
12812                Self::initialize(inner) => {
12813                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12814                }
12815                Self::isPermissionedProverEnabled(inner) => {
12816                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
12817                        inner,
12818                    )
12819                }
12820                Self::lagOverEscapeHatchThreshold(inner) => {
12821                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
12822                        inner,
12823                    )
12824                }
12825                Self::newFinalizedState(inner) => {
12826                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12827                        inner,
12828                    )
12829                }
12830                Self::owner(inner) => {
12831                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
12832                }
12833                Self::permissionedProver(inner) => {
12834                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12835                        inner,
12836                    )
12837                }
12838                Self::proxiableUUID(inner) => {
12839                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
12840                        inner,
12841                    )
12842                }
12843                Self::renounceOwnership(inner) => {
12844                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12845                        inner,
12846                    )
12847                }
12848                Self::setFinalizedState(inner) => {
12849                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
12850                        inner,
12851                    )
12852                }
12853                Self::setHotShotDownSince(inner) => {
12854                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encoded_size(
12855                        inner,
12856                    )
12857                }
12858                Self::setHotShotUp(inner) => {
12859                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encoded_size(
12860                        inner,
12861                    )
12862                }
12863                Self::setPermissionedProver(inner) => {
12864                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
12865                        inner,
12866                    )
12867                }
12868                Self::setStateHistory(inner) => {
12869                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encoded_size(
12870                        inner,
12871                    )
12872                }
12873                Self::setstateHistoryRetentionPeriod(inner) => {
12874                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12875                        inner,
12876                    )
12877                }
12878                Self::stateHistoryCommitments(inner) => {
12879                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
12880                        inner,
12881                    )
12882                }
12883                Self::stateHistoryFirstIndex(inner) => {
12884                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
12885                        inner,
12886                    )
12887                }
12888                Self::stateHistoryRetentionPeriod(inner) => {
12889                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
12890                        inner,
12891                    )
12892                }
12893                Self::transferOwnership(inner) => {
12894                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
12895                        inner,
12896                    )
12897                }
12898                Self::upgradeToAndCall(inner) => {
12899                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
12900                        inner,
12901                    )
12902                }
12903            }
12904        }
12905        #[inline]
12906        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12907            match self {
12908                Self::UPGRADE_INTERFACE_VERSION(inner) => {
12909                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
12910                        inner,
12911                        out,
12912                    )
12913                }
12914                Self::_getVk(inner) => {
12915                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12916                }
12917                Self::currentBlockNumber(inner) => {
12918                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
12919                        inner,
12920                        out,
12921                    )
12922                }
12923                Self::disablePermissionedProverMode(inner) => {
12924                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12925                        inner,
12926                        out,
12927                    )
12928                }
12929                Self::finalizedState(inner) => {
12930                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12931                        inner,
12932                        out,
12933                    )
12934                }
12935                Self::genesisStakeTableState(inner) => {
12936                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12937                        inner,
12938                        out,
12939                    )
12940                }
12941                Self::genesisState(inner) => {
12942                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12943                        inner,
12944                        out,
12945                    )
12946                }
12947                Self::getHotShotCommitment(inner) => {
12948                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
12949                        inner,
12950                        out,
12951                    )
12952                }
12953                Self::getStateHistoryCount(inner) => {
12954                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
12955                        inner,
12956                        out,
12957                    )
12958                }
12959                Self::getVersion(inner) => {
12960                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
12961                        inner,
12962                        out,
12963                    )
12964                }
12965                Self::initialize(inner) => {
12966                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
12967                        inner,
12968                        out,
12969                    )
12970                }
12971                Self::isPermissionedProverEnabled(inner) => {
12972                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
12973                        inner,
12974                        out,
12975                    )
12976                }
12977                Self::lagOverEscapeHatchThreshold(inner) => {
12978                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
12979                        inner,
12980                        out,
12981                    )
12982                }
12983                Self::newFinalizedState(inner) => {
12984                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
12985                        inner,
12986                        out,
12987                    )
12988                }
12989                Self::owner(inner) => {
12990                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
12991                }
12992                Self::permissionedProver(inner) => {
12993                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
12994                        inner,
12995                        out,
12996                    )
12997                }
12998                Self::proxiableUUID(inner) => {
12999                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
13000                        inner,
13001                        out,
13002                    )
13003                }
13004                Self::renounceOwnership(inner) => {
13005                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13006                        inner,
13007                        out,
13008                    )
13009                }
13010                Self::setFinalizedState(inner) => {
13011                    <setFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
13012                        inner,
13013                        out,
13014                    )
13015                }
13016                Self::setHotShotDownSince(inner) => {
13017                    <setHotShotDownSinceCall as alloy_sol_types::SolCall>::abi_encode_raw(
13018                        inner,
13019                        out,
13020                    )
13021                }
13022                Self::setHotShotUp(inner) => {
13023                    <setHotShotUpCall as alloy_sol_types::SolCall>::abi_encode_raw(
13024                        inner,
13025                        out,
13026                    )
13027                }
13028                Self::setPermissionedProver(inner) => {
13029                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
13030                        inner,
13031                        out,
13032                    )
13033                }
13034                Self::setStateHistory(inner) => {
13035                    <setStateHistoryCall as alloy_sol_types::SolCall>::abi_encode_raw(
13036                        inner,
13037                        out,
13038                    )
13039                }
13040                Self::setstateHistoryRetentionPeriod(inner) => {
13041                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13042                        inner,
13043                        out,
13044                    )
13045                }
13046                Self::stateHistoryCommitments(inner) => {
13047                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
13048                        inner,
13049                        out,
13050                    )
13051                }
13052                Self::stateHistoryFirstIndex(inner) => {
13053                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
13054                        inner,
13055                        out,
13056                    )
13057                }
13058                Self::stateHistoryRetentionPeriod(inner) => {
13059                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
13060                        inner,
13061                        out,
13062                    )
13063                }
13064                Self::transferOwnership(inner) => {
13065                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
13066                        inner,
13067                        out,
13068                    )
13069                }
13070                Self::upgradeToAndCall(inner) => {
13071                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
13072                        inner,
13073                        out,
13074                    )
13075                }
13076            }
13077        }
13078    }
13079    ///Container for all the [`LightClientMock`](self) custom errors.
13080    #[derive(Clone)]
13081    #[derive(serde::Serialize, serde::Deserialize)]
13082    #[derive(Debug, PartialEq, Eq, Hash)]
13083    pub enum LightClientMockErrors {
13084        #[allow(missing_docs)]
13085        AddressEmptyCode(AddressEmptyCode),
13086        #[allow(missing_docs)]
13087        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
13088        #[allow(missing_docs)]
13089        ERC1967NonPayable(ERC1967NonPayable),
13090        #[allow(missing_docs)]
13091        FailedInnerCall(FailedInnerCall),
13092        #[allow(missing_docs)]
13093        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
13094        #[allow(missing_docs)]
13095        InvalidAddress(InvalidAddress),
13096        #[allow(missing_docs)]
13097        InvalidArgs(InvalidArgs),
13098        #[allow(missing_docs)]
13099        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
13100        #[allow(missing_docs)]
13101        InvalidInitialization(InvalidInitialization),
13102        #[allow(missing_docs)]
13103        InvalidMaxStateHistory(InvalidMaxStateHistory),
13104        #[allow(missing_docs)]
13105        InvalidProof(InvalidProof),
13106        #[allow(missing_docs)]
13107        InvalidScalar(InvalidScalar),
13108        #[allow(missing_docs)]
13109        NoChangeRequired(NoChangeRequired),
13110        #[allow(missing_docs)]
13111        NotInitializing(NotInitializing),
13112        #[allow(missing_docs)]
13113        OutdatedState(OutdatedState),
13114        #[allow(missing_docs)]
13115        OwnableInvalidOwner(OwnableInvalidOwner),
13116        #[allow(missing_docs)]
13117        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
13118        #[allow(missing_docs)]
13119        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
13120        #[allow(missing_docs)]
13121        ProverNotPermissioned(ProverNotPermissioned),
13122        #[allow(missing_docs)]
13123        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
13124        #[allow(missing_docs)]
13125        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
13126        #[allow(missing_docs)]
13127        WrongStakeTableUsed(WrongStakeTableUsed),
13128    }
13129    impl LightClientMockErrors {
13130        /// All the selectors of this enum.
13131        ///
13132        /// Note that the selectors might not be in the same order as the variants.
13133        /// No guarantees are made about the order of the selectors.
13134        ///
13135        /// Prefer using `SolInterface` methods instead.
13136        pub const SELECTORS: &'static [[u8; 4usize]] = &[
13137            [5u8, 28u8, 70u8, 239u8],
13138            [5u8, 176u8, 92u8, 204u8],
13139            [9u8, 189u8, 227u8, 57u8],
13140            [17u8, 140u8, 218u8, 167u8],
13141            [20u8, 37u8, 234u8, 66u8],
13142            [30u8, 79u8, 189u8, 247u8],
13143            [47u8, 171u8, 146u8, 202u8],
13144            [76u8, 156u8, 140u8, 227u8],
13145            [81u8, 97u8, 128u8, 137u8],
13146            [97u8, 90u8, 146u8, 100u8],
13147            [153u8, 150u8, 179u8, 21u8],
13148            [161u8, 186u8, 7u8, 238u8],
13149            [163u8, 166u8, 71u8, 128u8],
13150            [168u8, 99u8, 174u8, 201u8],
13151            [170u8, 29u8, 73u8, 164u8],
13152            [176u8, 180u8, 56u8, 119u8],
13153            [179u8, 152u8, 151u8, 159u8],
13154            [215u8, 230u8, 188u8, 248u8],
13155            [224u8, 124u8, 141u8, 186u8],
13156            [230u8, 196u8, 36u8, 123u8],
13157            [244u8, 160u8, 238u8, 224u8],
13158            [249u8, 46u8, 232u8, 169u8],
13159        ];
13160        /// The names of the variants in the same order as `SELECTORS`.
13161        pub const VARIANT_NAMES: &'static [&'static str] = &[
13162            ::core::stringify!(OutdatedState),
13163            ::core::stringify!(InvalidScalar),
13164            ::core::stringify!(InvalidProof),
13165            ::core::stringify!(OwnableUnauthorizedAccount),
13166            ::core::stringify!(FailedInnerCall),
13167            ::core::stringify!(OwnableInvalidOwner),
13168            ::core::stringify!(OwnershipCannotBeRenounced),
13169            ::core::stringify!(ERC1967InvalidImplementation),
13170            ::core::stringify!(WrongStakeTableUsed),
13171            ::core::stringify!(InvalidHotShotBlockForCommitmentCheck),
13172            ::core::stringify!(AddressEmptyCode),
13173            ::core::stringify!(InvalidArgs),
13174            ::core::stringify!(ProverNotPermissioned),
13175            ::core::stringify!(NoChangeRequired),
13176            ::core::stringify!(UUPSUnsupportedProxiableUUID),
13177            ::core::stringify!(InsufficientSnapshotHistory),
13178            ::core::stringify!(ERC1967NonPayable),
13179            ::core::stringify!(NotInitializing),
13180            ::core::stringify!(UUPSUnauthorizedCallContext),
13181            ::core::stringify!(InvalidAddress),
13182            ::core::stringify!(InvalidMaxStateHistory),
13183            ::core::stringify!(InvalidInitialization),
13184        ];
13185        /// The signatures in the same order as `SELECTORS`.
13186        pub const SIGNATURES: &'static [&'static str] = &[
13187            <OutdatedState as alloy_sol_types::SolError>::SIGNATURE,
13188            <InvalidScalar as alloy_sol_types::SolError>::SIGNATURE,
13189            <InvalidProof as alloy_sol_types::SolError>::SIGNATURE,
13190            <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SIGNATURE,
13191            <FailedInnerCall as alloy_sol_types::SolError>::SIGNATURE,
13192            <OwnableInvalidOwner as alloy_sol_types::SolError>::SIGNATURE,
13193            <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SIGNATURE,
13194            <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SIGNATURE,
13195            <WrongStakeTableUsed as alloy_sol_types::SolError>::SIGNATURE,
13196            <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SIGNATURE,
13197            <AddressEmptyCode as alloy_sol_types::SolError>::SIGNATURE,
13198            <InvalidArgs as alloy_sol_types::SolError>::SIGNATURE,
13199            <ProverNotPermissioned as alloy_sol_types::SolError>::SIGNATURE,
13200            <NoChangeRequired as alloy_sol_types::SolError>::SIGNATURE,
13201            <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SIGNATURE,
13202            <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SIGNATURE,
13203            <ERC1967NonPayable as alloy_sol_types::SolError>::SIGNATURE,
13204            <NotInitializing as alloy_sol_types::SolError>::SIGNATURE,
13205            <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SIGNATURE,
13206            <InvalidAddress as alloy_sol_types::SolError>::SIGNATURE,
13207            <InvalidMaxStateHistory as alloy_sol_types::SolError>::SIGNATURE,
13208            <InvalidInitialization as alloy_sol_types::SolError>::SIGNATURE,
13209        ];
13210        /// Returns the signature for the given selector, if known.
13211        #[inline]
13212        pub fn signature_by_selector(
13213            selector: [u8; 4usize],
13214        ) -> ::core::option::Option<&'static str> {
13215            match Self::SELECTORS.binary_search(&selector) {
13216                ::core::result::Result::Ok(idx) => {
13217                    ::core::option::Option::Some(Self::SIGNATURES[idx])
13218                }
13219                ::core::result::Result::Err(_) => ::core::option::Option::None,
13220            }
13221        }
13222        /// Returns the enum variant name for the given selector, if known.
13223        #[inline]
13224        pub fn name_by_selector(
13225            selector: [u8; 4usize],
13226        ) -> ::core::option::Option<&'static str> {
13227            let sig = Self::signature_by_selector(selector)?;
13228            sig.split_once('(').map(|(name, _)| name)
13229        }
13230    }
13231    #[automatically_derived]
13232    impl alloy_sol_types::SolInterface for LightClientMockErrors {
13233        const NAME: &'static str = "LightClientMockErrors";
13234        const MIN_DATA_LENGTH: usize = 0usize;
13235        const COUNT: usize = 22usize;
13236        #[inline]
13237        fn selector(&self) -> [u8; 4] {
13238            match self {
13239                Self::AddressEmptyCode(_) => {
13240                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
13241                }
13242                Self::ERC1967InvalidImplementation(_) => {
13243                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
13244                }
13245                Self::ERC1967NonPayable(_) => {
13246                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
13247                }
13248                Self::FailedInnerCall(_) => {
13249                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
13250                }
13251                Self::InsufficientSnapshotHistory(_) => {
13252                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
13253                }
13254                Self::InvalidAddress(_) => {
13255                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
13256                }
13257                Self::InvalidArgs(_) => {
13258                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
13259                }
13260                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
13261                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
13262                }
13263                Self::InvalidInitialization(_) => {
13264                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
13265                }
13266                Self::InvalidMaxStateHistory(_) => {
13267                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
13268                }
13269                Self::InvalidProof(_) => {
13270                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
13271                }
13272                Self::InvalidScalar(_) => {
13273                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
13274                }
13275                Self::NoChangeRequired(_) => {
13276                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
13277                }
13278                Self::NotInitializing(_) => {
13279                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
13280                }
13281                Self::OutdatedState(_) => {
13282                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
13283                }
13284                Self::OwnableInvalidOwner(_) => {
13285                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
13286                }
13287                Self::OwnableUnauthorizedAccount(_) => {
13288                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
13289                }
13290                Self::OwnershipCannotBeRenounced(_) => {
13291                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
13292                }
13293                Self::ProverNotPermissioned(_) => {
13294                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
13295                }
13296                Self::UUPSUnauthorizedCallContext(_) => {
13297                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
13298                }
13299                Self::UUPSUnsupportedProxiableUUID(_) => {
13300                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
13301                }
13302                Self::WrongStakeTableUsed(_) => {
13303                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
13304                }
13305            }
13306        }
13307        #[inline]
13308        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
13309            Self::SELECTORS.get(i).copied()
13310        }
13311        #[inline]
13312        fn valid_selector(selector: [u8; 4]) -> bool {
13313            Self::SELECTORS.binary_search(&selector).is_ok()
13314        }
13315        #[inline]
13316        #[allow(non_snake_case)]
13317        fn abi_decode_raw(
13318            selector: [u8; 4],
13319            data: &[u8],
13320        ) -> alloy_sol_types::Result<Self> {
13321            static DECODE_SHIMS: &[fn(
13322                &[u8],
13323            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13324                {
13325                    fn OutdatedState(
13326                        data: &[u8],
13327                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13328                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
13329                                data,
13330                            )
13331                            .map(LightClientMockErrors::OutdatedState)
13332                    }
13333                    OutdatedState
13334                },
13335                {
13336                    fn InvalidScalar(
13337                        data: &[u8],
13338                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13339                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
13340                                data,
13341                            )
13342                            .map(LightClientMockErrors::InvalidScalar)
13343                    }
13344                    InvalidScalar
13345                },
13346                {
13347                    fn InvalidProof(
13348                        data: &[u8],
13349                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13350                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
13351                            .map(LightClientMockErrors::InvalidProof)
13352                    }
13353                    InvalidProof
13354                },
13355                {
13356                    fn OwnableUnauthorizedAccount(
13357                        data: &[u8],
13358                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13359                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
13360                                data,
13361                            )
13362                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13363                    }
13364                    OwnableUnauthorizedAccount
13365                },
13366                {
13367                    fn FailedInnerCall(
13368                        data: &[u8],
13369                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13370                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
13371                                data,
13372                            )
13373                            .map(LightClientMockErrors::FailedInnerCall)
13374                    }
13375                    FailedInnerCall
13376                },
13377                {
13378                    fn OwnableInvalidOwner(
13379                        data: &[u8],
13380                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13381                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
13382                                data,
13383                            )
13384                            .map(LightClientMockErrors::OwnableInvalidOwner)
13385                    }
13386                    OwnableInvalidOwner
13387                },
13388                {
13389                    fn OwnershipCannotBeRenounced(
13390                        data: &[u8],
13391                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13392                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
13393                                data,
13394                            )
13395                            .map(LightClientMockErrors::OwnershipCannotBeRenounced)
13396                    }
13397                    OwnershipCannotBeRenounced
13398                },
13399                {
13400                    fn ERC1967InvalidImplementation(
13401                        data: &[u8],
13402                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13403                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
13404                                data,
13405                            )
13406                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13407                    }
13408                    ERC1967InvalidImplementation
13409                },
13410                {
13411                    fn WrongStakeTableUsed(
13412                        data: &[u8],
13413                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13414                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
13415                                data,
13416                            )
13417                            .map(LightClientMockErrors::WrongStakeTableUsed)
13418                    }
13419                    WrongStakeTableUsed
13420                },
13421                {
13422                    fn InvalidHotShotBlockForCommitmentCheck(
13423                        data: &[u8],
13424                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13425                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
13426                                data,
13427                            )
13428                            .map(
13429                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13430                            )
13431                    }
13432                    InvalidHotShotBlockForCommitmentCheck
13433                },
13434                {
13435                    fn AddressEmptyCode(
13436                        data: &[u8],
13437                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13438                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
13439                                data,
13440                            )
13441                            .map(LightClientMockErrors::AddressEmptyCode)
13442                    }
13443                    AddressEmptyCode
13444                },
13445                {
13446                    fn InvalidArgs(
13447                        data: &[u8],
13448                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13449                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
13450                            .map(LightClientMockErrors::InvalidArgs)
13451                    }
13452                    InvalidArgs
13453                },
13454                {
13455                    fn ProverNotPermissioned(
13456                        data: &[u8],
13457                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13458                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
13459                                data,
13460                            )
13461                            .map(LightClientMockErrors::ProverNotPermissioned)
13462                    }
13463                    ProverNotPermissioned
13464                },
13465                {
13466                    fn NoChangeRequired(
13467                        data: &[u8],
13468                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13469                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
13470                                data,
13471                            )
13472                            .map(LightClientMockErrors::NoChangeRequired)
13473                    }
13474                    NoChangeRequired
13475                },
13476                {
13477                    fn UUPSUnsupportedProxiableUUID(
13478                        data: &[u8],
13479                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13480                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
13481                                data,
13482                            )
13483                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13484                    }
13485                    UUPSUnsupportedProxiableUUID
13486                },
13487                {
13488                    fn InsufficientSnapshotHistory(
13489                        data: &[u8],
13490                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13491                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
13492                                data,
13493                            )
13494                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13495                    }
13496                    InsufficientSnapshotHistory
13497                },
13498                {
13499                    fn ERC1967NonPayable(
13500                        data: &[u8],
13501                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13502                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
13503                                data,
13504                            )
13505                            .map(LightClientMockErrors::ERC1967NonPayable)
13506                    }
13507                    ERC1967NonPayable
13508                },
13509                {
13510                    fn NotInitializing(
13511                        data: &[u8],
13512                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13513                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
13514                                data,
13515                            )
13516                            .map(LightClientMockErrors::NotInitializing)
13517                    }
13518                    NotInitializing
13519                },
13520                {
13521                    fn UUPSUnauthorizedCallContext(
13522                        data: &[u8],
13523                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13524                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
13525                                data,
13526                            )
13527                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13528                    }
13529                    UUPSUnauthorizedCallContext
13530                },
13531                {
13532                    fn InvalidAddress(
13533                        data: &[u8],
13534                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13535                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
13536                                data,
13537                            )
13538                            .map(LightClientMockErrors::InvalidAddress)
13539                    }
13540                    InvalidAddress
13541                },
13542                {
13543                    fn InvalidMaxStateHistory(
13544                        data: &[u8],
13545                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13546                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
13547                                data,
13548                            )
13549                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13550                    }
13551                    InvalidMaxStateHistory
13552                },
13553                {
13554                    fn InvalidInitialization(
13555                        data: &[u8],
13556                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13557                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
13558                                data,
13559                            )
13560                            .map(LightClientMockErrors::InvalidInitialization)
13561                    }
13562                    InvalidInitialization
13563                },
13564            ];
13565            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13566                return Err(
13567                    alloy_sol_types::Error::unknown_selector(
13568                        <Self as alloy_sol_types::SolInterface>::NAME,
13569                        selector,
13570                    ),
13571                );
13572            };
13573            DECODE_SHIMS[idx](data)
13574        }
13575        #[inline]
13576        #[allow(non_snake_case)]
13577        fn abi_decode_raw_validate(
13578            selector: [u8; 4],
13579            data: &[u8],
13580        ) -> alloy_sol_types::Result<Self> {
13581            static DECODE_VALIDATE_SHIMS: &[fn(
13582                &[u8],
13583            ) -> alloy_sol_types::Result<LightClientMockErrors>] = &[
13584                {
13585                    fn OutdatedState(
13586                        data: &[u8],
13587                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13588                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
13589                                data,
13590                            )
13591                            .map(LightClientMockErrors::OutdatedState)
13592                    }
13593                    OutdatedState
13594                },
13595                {
13596                    fn InvalidScalar(
13597                        data: &[u8],
13598                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13599                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
13600                                data,
13601                            )
13602                            .map(LightClientMockErrors::InvalidScalar)
13603                    }
13604                    InvalidScalar
13605                },
13606                {
13607                    fn InvalidProof(
13608                        data: &[u8],
13609                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13610                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
13611                                data,
13612                            )
13613                            .map(LightClientMockErrors::InvalidProof)
13614                    }
13615                    InvalidProof
13616                },
13617                {
13618                    fn OwnableUnauthorizedAccount(
13619                        data: &[u8],
13620                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13621                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
13622                                data,
13623                            )
13624                            .map(LightClientMockErrors::OwnableUnauthorizedAccount)
13625                    }
13626                    OwnableUnauthorizedAccount
13627                },
13628                {
13629                    fn FailedInnerCall(
13630                        data: &[u8],
13631                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13632                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
13633                                data,
13634                            )
13635                            .map(LightClientMockErrors::FailedInnerCall)
13636                    }
13637                    FailedInnerCall
13638                },
13639                {
13640                    fn OwnableInvalidOwner(
13641                        data: &[u8],
13642                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13643                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
13644                                data,
13645                            )
13646                            .map(LightClientMockErrors::OwnableInvalidOwner)
13647                    }
13648                    OwnableInvalidOwner
13649                },
13650                {
13651                    fn OwnershipCannotBeRenounced(
13652                        data: &[u8],
13653                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13654                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
13655                                data,
13656                            )
13657                            .map(LightClientMockErrors::OwnershipCannotBeRenounced)
13658                    }
13659                    OwnershipCannotBeRenounced
13660                },
13661                {
13662                    fn ERC1967InvalidImplementation(
13663                        data: &[u8],
13664                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13665                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
13666                                data,
13667                            )
13668                            .map(LightClientMockErrors::ERC1967InvalidImplementation)
13669                    }
13670                    ERC1967InvalidImplementation
13671                },
13672                {
13673                    fn WrongStakeTableUsed(
13674                        data: &[u8],
13675                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13676                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
13677                                data,
13678                            )
13679                            .map(LightClientMockErrors::WrongStakeTableUsed)
13680                    }
13681                    WrongStakeTableUsed
13682                },
13683                {
13684                    fn InvalidHotShotBlockForCommitmentCheck(
13685                        data: &[u8],
13686                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13687                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
13688                                data,
13689                            )
13690                            .map(
13691                                LightClientMockErrors::InvalidHotShotBlockForCommitmentCheck,
13692                            )
13693                    }
13694                    InvalidHotShotBlockForCommitmentCheck
13695                },
13696                {
13697                    fn AddressEmptyCode(
13698                        data: &[u8],
13699                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13700                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
13701                                data,
13702                            )
13703                            .map(LightClientMockErrors::AddressEmptyCode)
13704                    }
13705                    AddressEmptyCode
13706                },
13707                {
13708                    fn InvalidArgs(
13709                        data: &[u8],
13710                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13711                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
13712                                data,
13713                            )
13714                            .map(LightClientMockErrors::InvalidArgs)
13715                    }
13716                    InvalidArgs
13717                },
13718                {
13719                    fn ProverNotPermissioned(
13720                        data: &[u8],
13721                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13722                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
13723                                data,
13724                            )
13725                            .map(LightClientMockErrors::ProverNotPermissioned)
13726                    }
13727                    ProverNotPermissioned
13728                },
13729                {
13730                    fn NoChangeRequired(
13731                        data: &[u8],
13732                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13733                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
13734                                data,
13735                            )
13736                            .map(LightClientMockErrors::NoChangeRequired)
13737                    }
13738                    NoChangeRequired
13739                },
13740                {
13741                    fn UUPSUnsupportedProxiableUUID(
13742                        data: &[u8],
13743                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13744                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
13745                                data,
13746                            )
13747                            .map(LightClientMockErrors::UUPSUnsupportedProxiableUUID)
13748                    }
13749                    UUPSUnsupportedProxiableUUID
13750                },
13751                {
13752                    fn InsufficientSnapshotHistory(
13753                        data: &[u8],
13754                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13755                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13756                                data,
13757                            )
13758                            .map(LightClientMockErrors::InsufficientSnapshotHistory)
13759                    }
13760                    InsufficientSnapshotHistory
13761                },
13762                {
13763                    fn ERC1967NonPayable(
13764                        data: &[u8],
13765                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13766                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
13767                                data,
13768                            )
13769                            .map(LightClientMockErrors::ERC1967NonPayable)
13770                    }
13771                    ERC1967NonPayable
13772                },
13773                {
13774                    fn NotInitializing(
13775                        data: &[u8],
13776                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13777                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
13778                                data,
13779                            )
13780                            .map(LightClientMockErrors::NotInitializing)
13781                    }
13782                    NotInitializing
13783                },
13784                {
13785                    fn UUPSUnauthorizedCallContext(
13786                        data: &[u8],
13787                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13788                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
13789                                data,
13790                            )
13791                            .map(LightClientMockErrors::UUPSUnauthorizedCallContext)
13792                    }
13793                    UUPSUnauthorizedCallContext
13794                },
13795                {
13796                    fn InvalidAddress(
13797                        data: &[u8],
13798                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13799                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
13800                                data,
13801                            )
13802                            .map(LightClientMockErrors::InvalidAddress)
13803                    }
13804                    InvalidAddress
13805                },
13806                {
13807                    fn InvalidMaxStateHistory(
13808                        data: &[u8],
13809                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13810                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
13811                                data,
13812                            )
13813                            .map(LightClientMockErrors::InvalidMaxStateHistory)
13814                    }
13815                    InvalidMaxStateHistory
13816                },
13817                {
13818                    fn InvalidInitialization(
13819                        data: &[u8],
13820                    ) -> alloy_sol_types::Result<LightClientMockErrors> {
13821                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
13822                                data,
13823                            )
13824                            .map(LightClientMockErrors::InvalidInitialization)
13825                    }
13826                    InvalidInitialization
13827                },
13828            ];
13829            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
13830                return Err(
13831                    alloy_sol_types::Error::unknown_selector(
13832                        <Self as alloy_sol_types::SolInterface>::NAME,
13833                        selector,
13834                    ),
13835                );
13836            };
13837            DECODE_VALIDATE_SHIMS[idx](data)
13838        }
13839        #[inline]
13840        fn abi_encoded_size(&self) -> usize {
13841            match self {
13842                Self::AddressEmptyCode(inner) => {
13843                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
13844                        inner,
13845                    )
13846                }
13847                Self::ERC1967InvalidImplementation(inner) => {
13848                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
13849                        inner,
13850                    )
13851                }
13852                Self::ERC1967NonPayable(inner) => {
13853                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
13854                        inner,
13855                    )
13856                }
13857                Self::FailedInnerCall(inner) => {
13858                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
13859                        inner,
13860                    )
13861                }
13862                Self::InsufficientSnapshotHistory(inner) => {
13863                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
13864                        inner,
13865                    )
13866                }
13867                Self::InvalidAddress(inner) => {
13868                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
13869                        inner,
13870                    )
13871                }
13872                Self::InvalidArgs(inner) => {
13873                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
13874                }
13875                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13876                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
13877                        inner,
13878                    )
13879                }
13880                Self::InvalidInitialization(inner) => {
13881                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
13882                        inner,
13883                    )
13884                }
13885                Self::InvalidMaxStateHistory(inner) => {
13886                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
13887                        inner,
13888                    )
13889                }
13890                Self::InvalidProof(inner) => {
13891                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
13892                }
13893                Self::InvalidScalar(inner) => {
13894                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
13895                }
13896                Self::NoChangeRequired(inner) => {
13897                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
13898                        inner,
13899                    )
13900                }
13901                Self::NotInitializing(inner) => {
13902                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
13903                        inner,
13904                    )
13905                }
13906                Self::OutdatedState(inner) => {
13907                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
13908                }
13909                Self::OwnableInvalidOwner(inner) => {
13910                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
13911                        inner,
13912                    )
13913                }
13914                Self::OwnableUnauthorizedAccount(inner) => {
13915                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
13916                        inner,
13917                    )
13918                }
13919                Self::OwnershipCannotBeRenounced(inner) => {
13920                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
13921                        inner,
13922                    )
13923                }
13924                Self::ProverNotPermissioned(inner) => {
13925                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
13926                        inner,
13927                    )
13928                }
13929                Self::UUPSUnauthorizedCallContext(inner) => {
13930                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
13931                        inner,
13932                    )
13933                }
13934                Self::UUPSUnsupportedProxiableUUID(inner) => {
13935                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
13936                        inner,
13937                    )
13938                }
13939                Self::WrongStakeTableUsed(inner) => {
13940                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
13941                        inner,
13942                    )
13943                }
13944            }
13945        }
13946        #[inline]
13947        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
13948            match self {
13949                Self::AddressEmptyCode(inner) => {
13950                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
13951                        inner,
13952                        out,
13953                    )
13954                }
13955                Self::ERC1967InvalidImplementation(inner) => {
13956                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
13957                        inner,
13958                        out,
13959                    )
13960                }
13961                Self::ERC1967NonPayable(inner) => {
13962                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
13963                        inner,
13964                        out,
13965                    )
13966                }
13967                Self::FailedInnerCall(inner) => {
13968                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
13969                        inner,
13970                        out,
13971                    )
13972                }
13973                Self::InsufficientSnapshotHistory(inner) => {
13974                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
13975                        inner,
13976                        out,
13977                    )
13978                }
13979                Self::InvalidAddress(inner) => {
13980                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
13981                        inner,
13982                        out,
13983                    )
13984                }
13985                Self::InvalidArgs(inner) => {
13986                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
13987                        inner,
13988                        out,
13989                    )
13990                }
13991                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
13992                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
13993                        inner,
13994                        out,
13995                    )
13996                }
13997                Self::InvalidInitialization(inner) => {
13998                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
13999                        inner,
14000                        out,
14001                    )
14002                }
14003                Self::InvalidMaxStateHistory(inner) => {
14004                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
14005                        inner,
14006                        out,
14007                    )
14008                }
14009                Self::InvalidProof(inner) => {
14010                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
14011                        inner,
14012                        out,
14013                    )
14014                }
14015                Self::InvalidScalar(inner) => {
14016                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
14017                        inner,
14018                        out,
14019                    )
14020                }
14021                Self::NoChangeRequired(inner) => {
14022                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
14023                        inner,
14024                        out,
14025                    )
14026                }
14027                Self::NotInitializing(inner) => {
14028                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
14029                        inner,
14030                        out,
14031                    )
14032                }
14033                Self::OutdatedState(inner) => {
14034                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
14035                        inner,
14036                        out,
14037                    )
14038                }
14039                Self::OwnableInvalidOwner(inner) => {
14040                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
14041                        inner,
14042                        out,
14043                    )
14044                }
14045                Self::OwnableUnauthorizedAccount(inner) => {
14046                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
14047                        inner,
14048                        out,
14049                    )
14050                }
14051                Self::OwnershipCannotBeRenounced(inner) => {
14052                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
14053                        inner,
14054                        out,
14055                    )
14056                }
14057                Self::ProverNotPermissioned(inner) => {
14058                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
14059                        inner,
14060                        out,
14061                    )
14062                }
14063                Self::UUPSUnauthorizedCallContext(inner) => {
14064                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
14065                        inner,
14066                        out,
14067                    )
14068                }
14069                Self::UUPSUnsupportedProxiableUUID(inner) => {
14070                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
14071                        inner,
14072                        out,
14073                    )
14074                }
14075                Self::WrongStakeTableUsed(inner) => {
14076                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
14077                        inner,
14078                        out,
14079                    )
14080                }
14081            }
14082        }
14083    }
14084    ///Container for all the [`LightClientMock`](self) events.
14085    #[derive(Clone)]
14086    #[derive(serde::Serialize, serde::Deserialize)]
14087    #[derive(Debug, PartialEq, Eq, Hash)]
14088    pub enum LightClientMockEvents {
14089        #[allow(missing_docs)]
14090        Initialized(Initialized),
14091        #[allow(missing_docs)]
14092        NewState(NewState),
14093        #[allow(missing_docs)]
14094        OwnershipTransferred(OwnershipTransferred),
14095        #[allow(missing_docs)]
14096        PermissionedProverNotRequired(PermissionedProverNotRequired),
14097        #[allow(missing_docs)]
14098        PermissionedProverRequired(PermissionedProverRequired),
14099        #[allow(missing_docs)]
14100        Upgrade(Upgrade),
14101        #[allow(missing_docs)]
14102        Upgraded(Upgraded),
14103    }
14104    impl LightClientMockEvents {
14105        /// All the selectors of this enum.
14106        ///
14107        /// Note that the selectors might not be in the same order as the variants.
14108        /// No guarantees are made about the order of the selectors.
14109        ///
14110        /// Prefer using `SolInterface` methods instead.
14111        pub const SELECTORS: &'static [[u8; 32usize]] = &[
14112            [
14113                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
14114                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
14115                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
14116            ],
14117            [
14118                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
14119                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
14120                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
14121            ],
14122            [
14123                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
14124                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
14125                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
14126            ],
14127            [
14128                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
14129                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
14130                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
14131            ],
14132            [
14133                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
14134                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
14135                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
14136            ],
14137            [
14138                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
14139                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
14140                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
14141            ],
14142            [
14143                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
14144                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
14145                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
14146            ],
14147        ];
14148        /// The names of the variants in the same order as `SELECTORS`.
14149        pub const VARIANT_NAMES: &'static [&'static str] = &[
14150            ::core::stringify!(PermissionedProverRequired),
14151            ::core::stringify!(OwnershipTransferred),
14152            ::core::stringify!(PermissionedProverNotRequired),
14153            ::core::stringify!(NewState),
14154            ::core::stringify!(Upgraded),
14155            ::core::stringify!(Initialized),
14156            ::core::stringify!(Upgrade),
14157        ];
14158        /// The signatures in the same order as `SELECTORS`.
14159        pub const SIGNATURES: &'static [&'static str] = &[
14160            <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE,
14161            <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE,
14162            <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE,
14163            <NewState as alloy_sol_types::SolEvent>::SIGNATURE,
14164            <Upgraded as alloy_sol_types::SolEvent>::SIGNATURE,
14165            <Initialized as alloy_sol_types::SolEvent>::SIGNATURE,
14166            <Upgrade as alloy_sol_types::SolEvent>::SIGNATURE,
14167        ];
14168        /// Returns the signature for the given selector, if known.
14169        #[inline]
14170        pub fn signature_by_selector(
14171            selector: [u8; 32usize],
14172        ) -> ::core::option::Option<&'static str> {
14173            match Self::SELECTORS.binary_search(&selector) {
14174                ::core::result::Result::Ok(idx) => {
14175                    ::core::option::Option::Some(Self::SIGNATURES[idx])
14176                }
14177                ::core::result::Result::Err(_) => ::core::option::Option::None,
14178            }
14179        }
14180        /// Returns the enum variant name for the given selector, if known.
14181        #[inline]
14182        pub fn name_by_selector(
14183            selector: [u8; 32usize],
14184        ) -> ::core::option::Option<&'static str> {
14185            let sig = Self::signature_by_selector(selector)?;
14186            sig.split_once('(').map(|(name, _)| name)
14187        }
14188    }
14189    #[automatically_derived]
14190    impl alloy_sol_types::SolEventInterface for LightClientMockEvents {
14191        const NAME: &'static str = "LightClientMockEvents";
14192        const COUNT: usize = 7usize;
14193        fn decode_raw_log(
14194            topics: &[alloy_sol_types::Word],
14195            data: &[u8],
14196        ) -> alloy_sol_types::Result<Self> {
14197            match topics.first().copied() {
14198                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14199                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
14200                            topics,
14201                            data,
14202                        )
14203                        .map(Self::Initialized)
14204                }
14205                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14206                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
14207                        .map(Self::NewState)
14208                }
14209                Some(
14210                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14211                ) => {
14212                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
14213                            topics,
14214                            data,
14215                        )
14216                        .map(Self::OwnershipTransferred)
14217                }
14218                Some(
14219                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14220                ) => {
14221                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14222                            topics,
14223                            data,
14224                        )
14225                        .map(Self::PermissionedProverNotRequired)
14226                }
14227                Some(
14228                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
14229                ) => {
14230                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
14231                            topics,
14232                            data,
14233                        )
14234                        .map(Self::PermissionedProverRequired)
14235                }
14236                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14237                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
14238                        .map(Self::Upgrade)
14239                }
14240                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
14241                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
14242                        .map(Self::Upgraded)
14243                }
14244                _ => {
14245                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
14246                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
14247                        log: alloy_sol_types::private::Box::new(
14248                            alloy_sol_types::private::LogData::new_unchecked(
14249                                topics.to_vec(),
14250                                data.to_vec().into(),
14251                            ),
14252                        ),
14253                    })
14254                }
14255            }
14256        }
14257    }
14258    #[automatically_derived]
14259    impl alloy_sol_types::private::IntoLogData for LightClientMockEvents {
14260        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
14261            match self {
14262                Self::Initialized(inner) => {
14263                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14264                }
14265                Self::NewState(inner) => {
14266                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14267                }
14268                Self::OwnershipTransferred(inner) => {
14269                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14270                }
14271                Self::PermissionedProverNotRequired(inner) => {
14272                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14273                }
14274                Self::PermissionedProverRequired(inner) => {
14275                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14276                }
14277                Self::Upgrade(inner) => {
14278                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14279                }
14280                Self::Upgraded(inner) => {
14281                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
14282                }
14283            }
14284        }
14285        fn into_log_data(self) -> alloy_sol_types::private::LogData {
14286            match self {
14287                Self::Initialized(inner) => {
14288                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14289                }
14290                Self::NewState(inner) => {
14291                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14292                }
14293                Self::OwnershipTransferred(inner) => {
14294                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14295                }
14296                Self::PermissionedProverNotRequired(inner) => {
14297                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14298                }
14299                Self::PermissionedProverRequired(inner) => {
14300                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14301                }
14302                Self::Upgrade(inner) => {
14303                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14304                }
14305                Self::Upgraded(inner) => {
14306                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
14307                }
14308            }
14309        }
14310    }
14311    use alloy::contract as alloy_contract;
14312    /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14313
14314See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14315    #[inline]
14316    pub const fn new<
14317        P: alloy_contract::private::Provider<N>,
14318        N: alloy_contract::private::Network,
14319    >(
14320        address: alloy_sol_types::private::Address,
14321        __provider: P,
14322    ) -> LightClientMockInstance<P, N> {
14323        LightClientMockInstance::<P, N>::new(address, __provider)
14324    }
14325    /**Deploys this contract using the given `provider` and constructor arguments, if any.
14326
14327Returns a new instance of the contract, if the deployment was successful.
14328
14329For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14330    #[inline]
14331    pub fn deploy<
14332        P: alloy_contract::private::Provider<N>,
14333        N: alloy_contract::private::Network,
14334    >(
14335        __provider: P,
14336    ) -> impl ::core::future::Future<
14337        Output = alloy_contract::Result<LightClientMockInstance<P, N>>,
14338    > {
14339        LightClientMockInstance::<P, N>::deploy(__provider)
14340    }
14341    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14342and constructor arguments, if any.
14343
14344This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14345the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14346    #[inline]
14347    pub fn deploy_builder<
14348        P: alloy_contract::private::Provider<N>,
14349        N: alloy_contract::private::Network,
14350    >(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14351        LightClientMockInstance::<P, N>::deploy_builder(__provider)
14352    }
14353    /**A [`LightClientMock`](self) instance.
14354
14355Contains type-safe methods for interacting with an on-chain instance of the
14356[`LightClientMock`](self) contract located at a given `address`, using a given
14357provider `P`.
14358
14359If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
14360documentation on how to provide it), the `deploy` and `deploy_builder` methods can
14361be used to deploy a new instance of the contract.
14362
14363See the [module-level documentation](self) for all the available methods.*/
14364    #[derive(Clone)]
14365    pub struct LightClientMockInstance<P, N = alloy_contract::private::Ethereum> {
14366        address: alloy_sol_types::private::Address,
14367        provider: P,
14368        _network: ::core::marker::PhantomData<N>,
14369    }
14370    #[automatically_derived]
14371    impl<P, N> ::core::fmt::Debug for LightClientMockInstance<P, N> {
14372        #[inline]
14373        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
14374            f.debug_tuple("LightClientMockInstance").field(&self.address).finish()
14375        }
14376    }
14377    /// Instantiation and getters/setters.
14378    impl<
14379        P: alloy_contract::private::Provider<N>,
14380        N: alloy_contract::private::Network,
14381    > LightClientMockInstance<P, N> {
14382        /**Creates a new wrapper around an on-chain [`LightClientMock`](self) contract instance.
14383
14384See the [wrapper's documentation](`LightClientMockInstance`) for more details.*/
14385        #[inline]
14386        pub const fn new(
14387            address: alloy_sol_types::private::Address,
14388            __provider: P,
14389        ) -> Self {
14390            Self {
14391                address,
14392                provider: __provider,
14393                _network: ::core::marker::PhantomData,
14394            }
14395        }
14396        /**Deploys this contract using the given `provider` and constructor arguments, if any.
14397
14398Returns a new instance of the contract, if the deployment was successful.
14399
14400For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
14401        #[inline]
14402        pub async fn deploy(
14403            __provider: P,
14404        ) -> alloy_contract::Result<LightClientMockInstance<P, N>> {
14405            let call_builder = Self::deploy_builder(__provider);
14406            let contract_address = call_builder.deploy().await?;
14407            Ok(Self::new(contract_address, call_builder.provider))
14408        }
14409        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
14410and constructor arguments, if any.
14411
14412This is a simple wrapper around creating a `RawCallBuilder` with the data set to
14413the bytecode concatenated with the constructor's ABI-encoded arguments.*/
14414        #[inline]
14415        pub fn deploy_builder(__provider: P) -> alloy_contract::RawCallBuilder<P, N> {
14416            alloy_contract::RawCallBuilder::new_raw_deploy(
14417                __provider,
14418                ::core::clone::Clone::clone(&BYTECODE),
14419            )
14420        }
14421        /// Returns a reference to the address.
14422        #[inline]
14423        pub const fn address(&self) -> &alloy_sol_types::private::Address {
14424            &self.address
14425        }
14426        /// Sets the address.
14427        #[inline]
14428        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
14429            self.address = address;
14430        }
14431        /// Sets the address and returns `self`.
14432        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
14433            self.set_address(address);
14434            self
14435        }
14436        /// Returns a reference to the provider.
14437        #[inline]
14438        pub const fn provider(&self) -> &P {
14439            &self.provider
14440        }
14441    }
14442    impl<P: ::core::clone::Clone, N> LightClientMockInstance<&P, N> {
14443        /// Clones the provider and returns a new instance with the cloned provider.
14444        #[inline]
14445        pub fn with_cloned_provider(self) -> LightClientMockInstance<P, N> {
14446            LightClientMockInstance {
14447                address: self.address,
14448                provider: ::core::clone::Clone::clone(&self.provider),
14449                _network: ::core::marker::PhantomData,
14450            }
14451        }
14452    }
14453    /// Function calls.
14454    impl<
14455        P: alloy_contract::private::Provider<N>,
14456        N: alloy_contract::private::Network,
14457    > LightClientMockInstance<P, N> {
14458        /// Creates a new call builder using this contract instance's provider and address.
14459        ///
14460        /// Note that the call can be any function call, not just those defined in this
14461        /// contract. Prefer using the other methods for building type-safe contract calls.
14462        pub fn call_builder<C: alloy_sol_types::SolCall>(
14463            &self,
14464            call: &C,
14465        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
14466            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
14467        }
14468        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
14469        pub fn UPGRADE_INTERFACE_VERSION(
14470            &self,
14471        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
14472            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
14473        }
14474        ///Creates a new call builder for the [`_getVk`] function.
14475        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
14476            self.call_builder(&_getVkCall)
14477        }
14478        ///Creates a new call builder for the [`currentBlockNumber`] function.
14479        pub fn currentBlockNumber(
14480            &self,
14481        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
14482            self.call_builder(&currentBlockNumberCall)
14483        }
14484        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
14485        pub fn disablePermissionedProverMode(
14486            &self,
14487        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
14488            self.call_builder(&disablePermissionedProverModeCall)
14489        }
14490        ///Creates a new call builder for the [`finalizedState`] function.
14491        pub fn finalizedState(
14492            &self,
14493        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
14494            self.call_builder(&finalizedStateCall)
14495        }
14496        ///Creates a new call builder for the [`genesisStakeTableState`] function.
14497        pub fn genesisStakeTableState(
14498            &self,
14499        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
14500            self.call_builder(&genesisStakeTableStateCall)
14501        }
14502        ///Creates a new call builder for the [`genesisState`] function.
14503        pub fn genesisState(
14504            &self,
14505        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
14506            self.call_builder(&genesisStateCall)
14507        }
14508        ///Creates a new call builder for the [`getHotShotCommitment`] function.
14509        pub fn getHotShotCommitment(
14510            &self,
14511            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
14512        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
14513            self.call_builder(
14514                &getHotShotCommitmentCall {
14515                    hotShotBlockHeight,
14516                },
14517            )
14518        }
14519        ///Creates a new call builder for the [`getStateHistoryCount`] function.
14520        pub fn getStateHistoryCount(
14521            &self,
14522        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
14523            self.call_builder(&getStateHistoryCountCall)
14524        }
14525        ///Creates a new call builder for the [`getVersion`] function.
14526        pub fn getVersion(
14527            &self,
14528        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
14529            self.call_builder(&getVersionCall)
14530        }
14531        ///Creates a new call builder for the [`initialize`] function.
14532        pub fn initialize(
14533            &self,
14534            _genesis: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14535            _genesisStakeTableState: <LightClient::StakeTableState as alloy::sol_types::SolType>::RustType,
14536            _stateHistoryRetentionPeriod: u32,
14537            owner: alloy::sol_types::private::Address,
14538        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
14539            self.call_builder(
14540                &initializeCall {
14541                    _genesis,
14542                    _genesisStakeTableState,
14543                    _stateHistoryRetentionPeriod,
14544                    owner,
14545                },
14546            )
14547        }
14548        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
14549        pub fn isPermissionedProverEnabled(
14550            &self,
14551        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
14552            self.call_builder(&isPermissionedProverEnabledCall)
14553        }
14554        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
14555        pub fn lagOverEscapeHatchThreshold(
14556            &self,
14557            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
14558            threshold: alloy::sol_types::private::primitives::aliases::U256,
14559        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
14560            self.call_builder(
14561                &lagOverEscapeHatchThresholdCall {
14562                    blockNumber,
14563                    threshold,
14564                },
14565            )
14566        }
14567        ///Creates a new call builder for the [`newFinalizedState`] function.
14568        pub fn newFinalizedState(
14569            &self,
14570            newState: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14571            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
14572        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
14573            self.call_builder(
14574                &newFinalizedStateCall {
14575                    newState,
14576                    proof,
14577                },
14578            )
14579        }
14580        ///Creates a new call builder for the [`owner`] function.
14581        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
14582            self.call_builder(&ownerCall)
14583        }
14584        ///Creates a new call builder for the [`permissionedProver`] function.
14585        pub fn permissionedProver(
14586            &self,
14587        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
14588            self.call_builder(&permissionedProverCall)
14589        }
14590        ///Creates a new call builder for the [`proxiableUUID`] function.
14591        pub fn proxiableUUID(
14592            &self,
14593        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
14594            self.call_builder(&proxiableUUIDCall)
14595        }
14596        ///Creates a new call builder for the [`renounceOwnership`] function.
14597        pub fn renounceOwnership(
14598            &self,
14599        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
14600            self.call_builder(&renounceOwnershipCall)
14601        }
14602        ///Creates a new call builder for the [`setFinalizedState`] function.
14603        pub fn setFinalizedState(
14604            &self,
14605            state: <LightClient::LightClientState as alloy::sol_types::SolType>::RustType,
14606        ) -> alloy_contract::SolCallBuilder<&P, setFinalizedStateCall, N> {
14607            self.call_builder(&setFinalizedStateCall { state })
14608        }
14609        ///Creates a new call builder for the [`setHotShotDownSince`] function.
14610        pub fn setHotShotDownSince(
14611            &self,
14612            l1Height: alloy::sol_types::private::primitives::aliases::U256,
14613        ) -> alloy_contract::SolCallBuilder<&P, setHotShotDownSinceCall, N> {
14614            self.call_builder(
14615                &setHotShotDownSinceCall {
14616                    l1Height,
14617                },
14618            )
14619        }
14620        ///Creates a new call builder for the [`setHotShotUp`] function.
14621        pub fn setHotShotUp(
14622            &self,
14623        ) -> alloy_contract::SolCallBuilder<&P, setHotShotUpCall, N> {
14624            self.call_builder(&setHotShotUpCall)
14625        }
14626        ///Creates a new call builder for the [`setPermissionedProver`] function.
14627        pub fn setPermissionedProver(
14628            &self,
14629            prover: alloy::sol_types::private::Address,
14630        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
14631            self.call_builder(
14632                &setPermissionedProverCall {
14633                    prover,
14634                },
14635            )
14636        }
14637        ///Creates a new call builder for the [`setStateHistory`] function.
14638        pub fn setStateHistory(
14639            &self,
14640            _stateHistoryCommitments: alloy::sol_types::private::Vec<
14641                <LightClient::StateHistoryCommitment as alloy::sol_types::SolType>::RustType,
14642            >,
14643        ) -> alloy_contract::SolCallBuilder<&P, setStateHistoryCall, N> {
14644            self.call_builder(
14645                &setStateHistoryCall {
14646                    _stateHistoryCommitments,
14647                },
14648            )
14649        }
14650        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
14651        pub fn setstateHistoryRetentionPeriod(
14652            &self,
14653            historySeconds: u32,
14654        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
14655            self.call_builder(
14656                &setstateHistoryRetentionPeriodCall {
14657                    historySeconds,
14658                },
14659            )
14660        }
14661        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
14662        pub fn stateHistoryCommitments(
14663            &self,
14664            _0: alloy::sol_types::private::primitives::aliases::U256,
14665        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
14666            self.call_builder(&stateHistoryCommitmentsCall(_0))
14667        }
14668        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
14669        pub fn stateHistoryFirstIndex(
14670            &self,
14671        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
14672            self.call_builder(&stateHistoryFirstIndexCall)
14673        }
14674        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
14675        pub fn stateHistoryRetentionPeriod(
14676            &self,
14677        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
14678            self.call_builder(&stateHistoryRetentionPeriodCall)
14679        }
14680        ///Creates a new call builder for the [`transferOwnership`] function.
14681        pub fn transferOwnership(
14682            &self,
14683            newOwner: alloy::sol_types::private::Address,
14684        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
14685            self.call_builder(&transferOwnershipCall { newOwner })
14686        }
14687        ///Creates a new call builder for the [`upgradeToAndCall`] function.
14688        pub fn upgradeToAndCall(
14689            &self,
14690            newImplementation: alloy::sol_types::private::Address,
14691            data: alloy::sol_types::private::Bytes,
14692        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
14693            self.call_builder(
14694                &upgradeToAndCallCall {
14695                    newImplementation,
14696                    data,
14697                },
14698            )
14699        }
14700    }
14701    /// Event filters.
14702    impl<
14703        P: alloy_contract::private::Provider<N>,
14704        N: alloy_contract::private::Network,
14705    > LightClientMockInstance<P, N> {
14706        /// Creates a new event filter using this contract instance's provider and address.
14707        ///
14708        /// Note that the type can be any event, not just those defined in this contract.
14709        /// Prefer using the other methods for building type-safe event filters.
14710        pub fn event_filter<E: alloy_sol_types::SolEvent>(
14711            &self,
14712        ) -> alloy_contract::Event<&P, E, N> {
14713            alloy_contract::Event::new_sol(&self.provider, &self.address)
14714        }
14715        ///Creates a new event filter for the [`Initialized`] event.
14716        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
14717            self.event_filter::<Initialized>()
14718        }
14719        ///Creates a new event filter for the [`NewState`] event.
14720        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
14721            self.event_filter::<NewState>()
14722        }
14723        ///Creates a new event filter for the [`OwnershipTransferred`] event.
14724        pub fn OwnershipTransferred_filter(
14725            &self,
14726        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
14727            self.event_filter::<OwnershipTransferred>()
14728        }
14729        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
14730        pub fn PermissionedProverNotRequired_filter(
14731            &self,
14732        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
14733            self.event_filter::<PermissionedProverNotRequired>()
14734        }
14735        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
14736        pub fn PermissionedProverRequired_filter(
14737            &self,
14738        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
14739            self.event_filter::<PermissionedProverRequired>()
14740        }
14741        ///Creates a new event filter for the [`Upgrade`] event.
14742        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
14743            self.event_filter::<Upgrade>()
14744        }
14745        ///Creates a new event filter for the [`Upgraded`] event.
14746        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
14747            self.event_filter::<Upgraded>()
14748        }
14749    }
14750}