hotshot_contract_adapter/bindings/
light_client.rs

1///Module containing a contract's types and functions.
2/**
3
4```solidity
5library BN254 {
6    type BaseField is uint256;
7    type ScalarField is uint256;
8    struct G1Point { BaseField x; BaseField y; }
9}
10```*/
11#[allow(
12    non_camel_case_types,
13    non_snake_case,
14    clippy::pub_underscore_fields,
15    clippy::style,
16    clippy::empty_structs_with_brackets
17)]
18pub mod BN254 {
19    use super::*;
20    use alloy::sol_types as alloy_sol_types;
21    #[derive(serde::Serialize, serde::Deserialize)]
22    #[derive(Default, Debug, PartialEq, Eq, Hash)]
23    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
24    #[derive(Clone)]
25    pub struct BaseField(alloy::sol_types::private::primitives::aliases::U256);
26    const _: () = {
27        use alloy::sol_types as alloy_sol_types;
28        #[automatically_derived]
29        impl alloy_sol_types::private::SolTypeValue<BaseField>
30        for alloy::sol_types::private::primitives::aliases::U256 {
31            #[inline]
32            fn stv_to_tokens(
33                &self,
34            ) -> <alloy::sol_types::sol_data::Uint<
35                256,
36            > as alloy_sol_types::SolType>::Token<'_> {
37                alloy_sol_types::private::SolTypeValue::<
38                    alloy::sol_types::sol_data::Uint<256>,
39                >::stv_to_tokens(self)
40            }
41            #[inline]
42            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
43                <alloy::sol_types::sol_data::Uint<
44                    256,
45                > as alloy_sol_types::SolType>::tokenize(self)
46                    .0
47            }
48            #[inline]
49            fn stv_abi_encode_packed_to(
50                &self,
51                out: &mut alloy_sol_types::private::Vec<u8>,
52            ) {
53                <alloy::sol_types::sol_data::Uint<
54                    256,
55                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
56            }
57            #[inline]
58            fn stv_abi_packed_encoded_size(&self) -> usize {
59                <alloy::sol_types::sol_data::Uint<
60                    256,
61                > as alloy_sol_types::SolType>::abi_encoded_size(self)
62            }
63        }
64        #[automatically_derived]
65        impl BaseField {
66            /// The Solidity type name.
67            pub const NAME: &'static str = stringify!(@ name);
68            /// Convert from the underlying value type.
69            #[inline]
70            pub const fn from_underlying(
71                value: alloy::sol_types::private::primitives::aliases::U256,
72            ) -> Self {
73                Self(value)
74            }
75            /// Return the underlying value.
76            #[inline]
77            pub const fn into_underlying(
78                self,
79            ) -> alloy::sol_types::private::primitives::aliases::U256 {
80                self.0
81            }
82            /// Return the single encoding of this value, delegating to the
83            /// underlying type.
84            #[inline]
85            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
86                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
87            }
88            /// Return the packed encoding of this value, delegating to the
89            /// underlying type.
90            #[inline]
91            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
92                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
93            }
94        }
95        #[automatically_derived]
96        impl From<alloy::sol_types::private::primitives::aliases::U256> for BaseField {
97            fn from(
98                value: alloy::sol_types::private::primitives::aliases::U256,
99            ) -> Self {
100                Self::from_underlying(value)
101            }
102        }
103        #[automatically_derived]
104        impl From<BaseField> for alloy::sol_types::private::primitives::aliases::U256 {
105            fn from(value: BaseField) -> Self {
106                value.into_underlying()
107            }
108        }
109        #[automatically_derived]
110        impl alloy_sol_types::SolType for BaseField {
111            type RustType = alloy::sol_types::private::primitives::aliases::U256;
112            type Token<'a> = <alloy::sol_types::sol_data::Uint<
113                256,
114            > as alloy_sol_types::SolType>::Token<'a>;
115            const SOL_NAME: &'static str = Self::NAME;
116            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
117                256,
118            > as alloy_sol_types::SolType>::ENCODED_SIZE;
119            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
120                256,
121            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
122            #[inline]
123            fn valid_token(token: &Self::Token<'_>) -> bool {
124                Self::type_check(token).is_ok()
125            }
126            #[inline]
127            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
128                <alloy::sol_types::sol_data::Uint<
129                    256,
130                > as alloy_sol_types::SolType>::type_check(token)
131            }
132            #[inline]
133            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
134                <alloy::sol_types::sol_data::Uint<
135                    256,
136                > as alloy_sol_types::SolType>::detokenize(token)
137            }
138        }
139        #[automatically_derived]
140        impl alloy_sol_types::EventTopic for BaseField {
141            #[inline]
142            fn topic_preimage_length(rust: &Self::RustType) -> usize {
143                <alloy::sol_types::sol_data::Uint<
144                    256,
145                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
146            }
147            #[inline]
148            fn encode_topic_preimage(
149                rust: &Self::RustType,
150                out: &mut alloy_sol_types::private::Vec<u8>,
151            ) {
152                <alloy::sol_types::sol_data::Uint<
153                    256,
154                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
155            }
156            #[inline]
157            fn encode_topic(
158                rust: &Self::RustType,
159            ) -> alloy_sol_types::abi::token::WordToken {
160                <alloy::sol_types::sol_data::Uint<
161                    256,
162                > as alloy_sol_types::EventTopic>::encode_topic(rust)
163            }
164        }
165    };
166    #[derive(serde::Serialize, serde::Deserialize)]
167    #[derive(Default, Debug, PartialEq, Eq, Hash)]
168    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
169    #[derive(Clone)]
170    pub struct ScalarField(alloy::sol_types::private::primitives::aliases::U256);
171    const _: () = {
172        use alloy::sol_types as alloy_sol_types;
173        #[automatically_derived]
174        impl alloy_sol_types::private::SolTypeValue<ScalarField>
175        for alloy::sol_types::private::primitives::aliases::U256 {
176            #[inline]
177            fn stv_to_tokens(
178                &self,
179            ) -> <alloy::sol_types::sol_data::Uint<
180                256,
181            > as alloy_sol_types::SolType>::Token<'_> {
182                alloy_sol_types::private::SolTypeValue::<
183                    alloy::sol_types::sol_data::Uint<256>,
184                >::stv_to_tokens(self)
185            }
186            #[inline]
187            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
188                <alloy::sol_types::sol_data::Uint<
189                    256,
190                > as alloy_sol_types::SolType>::tokenize(self)
191                    .0
192            }
193            #[inline]
194            fn stv_abi_encode_packed_to(
195                &self,
196                out: &mut alloy_sol_types::private::Vec<u8>,
197            ) {
198                <alloy::sol_types::sol_data::Uint<
199                    256,
200                > as alloy_sol_types::SolType>::abi_encode_packed_to(self, out)
201            }
202            #[inline]
203            fn stv_abi_packed_encoded_size(&self) -> usize {
204                <alloy::sol_types::sol_data::Uint<
205                    256,
206                > as alloy_sol_types::SolType>::abi_encoded_size(self)
207            }
208        }
209        #[automatically_derived]
210        impl ScalarField {
211            /// The Solidity type name.
212            pub const NAME: &'static str = stringify!(@ name);
213            /// Convert from the underlying value type.
214            #[inline]
215            pub const fn from_underlying(
216                value: alloy::sol_types::private::primitives::aliases::U256,
217            ) -> Self {
218                Self(value)
219            }
220            /// Return the underlying value.
221            #[inline]
222            pub const fn into_underlying(
223                self,
224            ) -> alloy::sol_types::private::primitives::aliases::U256 {
225                self.0
226            }
227            /// Return the single encoding of this value, delegating to the
228            /// underlying type.
229            #[inline]
230            pub fn abi_encode(&self) -> alloy_sol_types::private::Vec<u8> {
231                <Self as alloy_sol_types::SolType>::abi_encode(&self.0)
232            }
233            /// Return the packed encoding of this value, delegating to the
234            /// underlying type.
235            #[inline]
236            pub fn abi_encode_packed(&self) -> alloy_sol_types::private::Vec<u8> {
237                <Self as alloy_sol_types::SolType>::abi_encode_packed(&self.0)
238            }
239        }
240        #[automatically_derived]
241        impl From<alloy::sol_types::private::primitives::aliases::U256> for ScalarField {
242            fn from(
243                value: alloy::sol_types::private::primitives::aliases::U256,
244            ) -> Self {
245                Self::from_underlying(value)
246            }
247        }
248        #[automatically_derived]
249        impl From<ScalarField> for alloy::sol_types::private::primitives::aliases::U256 {
250            fn from(value: ScalarField) -> Self {
251                value.into_underlying()
252            }
253        }
254        #[automatically_derived]
255        impl alloy_sol_types::SolType for ScalarField {
256            type RustType = alloy::sol_types::private::primitives::aliases::U256;
257            type Token<'a> = <alloy::sol_types::sol_data::Uint<
258                256,
259            > as alloy_sol_types::SolType>::Token<'a>;
260            const SOL_NAME: &'static str = Self::NAME;
261            const ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
262                256,
263            > as alloy_sol_types::SolType>::ENCODED_SIZE;
264            const PACKED_ENCODED_SIZE: Option<usize> = <alloy::sol_types::sol_data::Uint<
265                256,
266            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
267            #[inline]
268            fn valid_token(token: &Self::Token<'_>) -> bool {
269                Self::type_check(token).is_ok()
270            }
271            #[inline]
272            fn type_check(token: &Self::Token<'_>) -> alloy_sol_types::Result<()> {
273                <alloy::sol_types::sol_data::Uint<
274                    256,
275                > as alloy_sol_types::SolType>::type_check(token)
276            }
277            #[inline]
278            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
279                <alloy::sol_types::sol_data::Uint<
280                    256,
281                > as alloy_sol_types::SolType>::detokenize(token)
282            }
283        }
284        #[automatically_derived]
285        impl alloy_sol_types::EventTopic for ScalarField {
286            #[inline]
287            fn topic_preimage_length(rust: &Self::RustType) -> usize {
288                <alloy::sol_types::sol_data::Uint<
289                    256,
290                > as alloy_sol_types::EventTopic>::topic_preimage_length(rust)
291            }
292            #[inline]
293            fn encode_topic_preimage(
294                rust: &Self::RustType,
295                out: &mut alloy_sol_types::private::Vec<u8>,
296            ) {
297                <alloy::sol_types::sol_data::Uint<
298                    256,
299                > as alloy_sol_types::EventTopic>::encode_topic_preimage(rust, out)
300            }
301            #[inline]
302            fn encode_topic(
303                rust: &Self::RustType,
304            ) -> alloy_sol_types::abi::token::WordToken {
305                <alloy::sol_types::sol_data::Uint<
306                    256,
307                > as alloy_sol_types::EventTopic>::encode_topic(rust)
308            }
309        }
310    };
311    #[derive(serde::Serialize, serde::Deserialize)]
312    #[derive(Default, Debug, PartialEq, Eq, Hash)]
313    /**```solidity
314struct G1Point { BaseField x; BaseField y; }
315```*/
316    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
317    #[derive(Clone)]
318    pub struct G1Point {
319        #[allow(missing_docs)]
320        pub x: <BaseField as alloy::sol_types::SolType>::RustType,
321        #[allow(missing_docs)]
322        pub y: <BaseField as alloy::sol_types::SolType>::RustType,
323    }
324    #[allow(
325        non_camel_case_types,
326        non_snake_case,
327        clippy::pub_underscore_fields,
328        clippy::style
329    )]
330    const _: () = {
331        use alloy::sol_types as alloy_sol_types;
332        #[doc(hidden)]
333        type UnderlyingSolTuple<'a> = (BaseField, BaseField);
334        #[doc(hidden)]
335        type UnderlyingRustTuple<'a> = (
336            <BaseField as alloy::sol_types::SolType>::RustType,
337            <BaseField as alloy::sol_types::SolType>::RustType,
338        );
339        #[cfg(test)]
340        #[allow(dead_code, unreachable_patterns)]
341        fn _type_assertion(
342            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
343        ) {
344            match _t {
345                alloy_sol_types::private::AssertTypeEq::<
346                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
347                >(_) => {}
348            }
349        }
350        #[automatically_derived]
351        #[doc(hidden)]
352        impl ::core::convert::From<G1Point> for UnderlyingRustTuple<'_> {
353            fn from(value: G1Point) -> Self {
354                (value.x, value.y)
355            }
356        }
357        #[automatically_derived]
358        #[doc(hidden)]
359        impl ::core::convert::From<UnderlyingRustTuple<'_>> for G1Point {
360            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
361                Self { x: tuple.0, y: tuple.1 }
362            }
363        }
364        #[automatically_derived]
365        impl alloy_sol_types::SolValue for G1Point {
366            type SolType = Self;
367        }
368        #[automatically_derived]
369        impl alloy_sol_types::private::SolTypeValue<Self> for G1Point {
370            #[inline]
371            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
372                (
373                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.x),
374                    <BaseField as alloy_sol_types::SolType>::tokenize(&self.y),
375                )
376            }
377            #[inline]
378            fn stv_abi_encoded_size(&self) -> usize {
379                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
380                    return size;
381                }
382                let tuple = <UnderlyingRustTuple<
383                    '_,
384                > as ::core::convert::From<Self>>::from(self.clone());
385                <UnderlyingSolTuple<
386                    '_,
387                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
388            }
389            #[inline]
390            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
391                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
392            }
393            #[inline]
394            fn stv_abi_encode_packed_to(
395                &self,
396                out: &mut alloy_sol_types::private::Vec<u8>,
397            ) {
398                let tuple = <UnderlyingRustTuple<
399                    '_,
400                > as ::core::convert::From<Self>>::from(self.clone());
401                <UnderlyingSolTuple<
402                    '_,
403                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
404            }
405            #[inline]
406            fn stv_abi_packed_encoded_size(&self) -> usize {
407                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
408                    return size;
409                }
410                let tuple = <UnderlyingRustTuple<
411                    '_,
412                > as ::core::convert::From<Self>>::from(self.clone());
413                <UnderlyingSolTuple<
414                    '_,
415                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
416            }
417        }
418        #[automatically_derived]
419        impl alloy_sol_types::SolType for G1Point {
420            type RustType = Self;
421            type Token<'a> = <UnderlyingSolTuple<
422                'a,
423            > as alloy_sol_types::SolType>::Token<'a>;
424            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
425            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
426                '_,
427            > as alloy_sol_types::SolType>::ENCODED_SIZE;
428            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
429                '_,
430            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
431            #[inline]
432            fn valid_token(token: &Self::Token<'_>) -> bool {
433                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
434            }
435            #[inline]
436            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
437                let tuple = <UnderlyingSolTuple<
438                    '_,
439                > as alloy_sol_types::SolType>::detokenize(token);
440                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
441            }
442        }
443        #[automatically_derived]
444        impl alloy_sol_types::SolStruct for G1Point {
445            const NAME: &'static str = "G1Point";
446            #[inline]
447            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
448                alloy_sol_types::private::Cow::Borrowed("G1Point(uint256 x,uint256 y)")
449            }
450            #[inline]
451            fn eip712_components() -> alloy_sol_types::private::Vec<
452                alloy_sol_types::private::Cow<'static, str>,
453            > {
454                alloy_sol_types::private::Vec::new()
455            }
456            #[inline]
457            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
458                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
459            }
460            #[inline]
461            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
462                [
463                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.x).0,
464                    <BaseField as alloy_sol_types::SolType>::eip712_data_word(&self.y).0,
465                ]
466                    .concat()
467            }
468        }
469        #[automatically_derived]
470        impl alloy_sol_types::EventTopic for G1Point {
471            #[inline]
472            fn topic_preimage_length(rust: &Self::RustType) -> usize {
473                0usize
474                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
475                        &rust.x,
476                    )
477                    + <BaseField as alloy_sol_types::EventTopic>::topic_preimage_length(
478                        &rust.y,
479                    )
480            }
481            #[inline]
482            fn encode_topic_preimage(
483                rust: &Self::RustType,
484                out: &mut alloy_sol_types::private::Vec<u8>,
485            ) {
486                out.reserve(
487                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
488                );
489                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
490                    &rust.x,
491                    out,
492                );
493                <BaseField as alloy_sol_types::EventTopic>::encode_topic_preimage(
494                    &rust.y,
495                    out,
496                );
497            }
498            #[inline]
499            fn encode_topic(
500                rust: &Self::RustType,
501            ) -> alloy_sol_types::abi::token::WordToken {
502                let mut out = alloy_sol_types::private::Vec::new();
503                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
504                    rust,
505                    &mut out,
506                );
507                alloy_sol_types::abi::token::WordToken(
508                    alloy_sol_types::private::keccak256(out),
509                )
510            }
511        }
512    };
513    use alloy::contract as alloy_contract;
514    /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
515
516See the [wrapper's documentation](`BN254Instance`) for more details.*/
517    #[inline]
518    pub const fn new<
519        P: alloy_contract::private::Provider<N>,
520        N: alloy_contract::private::Network,
521    >(address: alloy_sol_types::private::Address, provider: P) -> BN254Instance<P, N> {
522        BN254Instance::<P, N>::new(address, provider)
523    }
524    /**A [`BN254`](self) instance.
525
526Contains type-safe methods for interacting with an on-chain instance of the
527[`BN254`](self) contract located at a given `address`, using a given
528provider `P`.
529
530If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
531documentation on how to provide it), the `deploy` and `deploy_builder` methods can
532be used to deploy a new instance of the contract.
533
534See the [module-level documentation](self) for all the available methods.*/
535    #[derive(Clone)]
536    pub struct BN254Instance<P, N = alloy_contract::private::Ethereum> {
537        address: alloy_sol_types::private::Address,
538        provider: P,
539        _network: ::core::marker::PhantomData<N>,
540    }
541    #[automatically_derived]
542    impl<P, N> ::core::fmt::Debug for BN254Instance<P, N> {
543        #[inline]
544        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
545            f.debug_tuple("BN254Instance").field(&self.address).finish()
546        }
547    }
548    /// Instantiation and getters/setters.
549    #[automatically_derived]
550    impl<
551        P: alloy_contract::private::Provider<N>,
552        N: alloy_contract::private::Network,
553    > BN254Instance<P, N> {
554        /**Creates a new wrapper around an on-chain [`BN254`](self) contract instance.
555
556See the [wrapper's documentation](`BN254Instance`) for more details.*/
557        #[inline]
558        pub const fn new(
559            address: alloy_sol_types::private::Address,
560            provider: P,
561        ) -> Self {
562            Self {
563                address,
564                provider,
565                _network: ::core::marker::PhantomData,
566            }
567        }
568        /// Returns a reference to the address.
569        #[inline]
570        pub const fn address(&self) -> &alloy_sol_types::private::Address {
571            &self.address
572        }
573        /// Sets the address.
574        #[inline]
575        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
576            self.address = address;
577        }
578        /// Sets the address and returns `self`.
579        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
580            self.set_address(address);
581            self
582        }
583        /// Returns a reference to the provider.
584        #[inline]
585        pub const fn provider(&self) -> &P {
586            &self.provider
587        }
588    }
589    impl<P: ::core::clone::Clone, N> BN254Instance<&P, N> {
590        /// Clones the provider and returns a new instance with the cloned provider.
591        #[inline]
592        pub fn with_cloned_provider(self) -> BN254Instance<P, N> {
593            BN254Instance {
594                address: self.address,
595                provider: ::core::clone::Clone::clone(&self.provider),
596                _network: ::core::marker::PhantomData,
597            }
598        }
599    }
600    /// Function calls.
601    #[automatically_derived]
602    impl<
603        P: alloy_contract::private::Provider<N>,
604        N: alloy_contract::private::Network,
605    > BN254Instance<P, N> {
606        /// Creates a new call builder using this contract instance's provider and address.
607        ///
608        /// Note that the call can be any function call, not just those defined in this
609        /// contract. Prefer using the other methods for building type-safe contract calls.
610        pub fn call_builder<C: alloy_sol_types::SolCall>(
611            &self,
612            call: &C,
613        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
614            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
615        }
616    }
617    /// Event filters.
618    #[automatically_derived]
619    impl<
620        P: alloy_contract::private::Provider<N>,
621        N: alloy_contract::private::Network,
622    > BN254Instance<P, N> {
623        /// Creates a new event filter using this contract instance's provider and address.
624        ///
625        /// Note that the type can be any event, not just those defined in this contract.
626        /// Prefer using the other methods for building type-safe event filters.
627        pub fn event_filter<E: alloy_sol_types::SolEvent>(
628            &self,
629        ) -> alloy_contract::Event<&P, E, N> {
630            alloy_contract::Event::new_sol(&self.provider, &self.address)
631        }
632    }
633}
634///Module containing a contract's types and functions.
635/**
636
637```solidity
638library IPlonkVerifier {
639    struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
640    struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
641}
642```*/
643#[allow(
644    non_camel_case_types,
645    non_snake_case,
646    clippy::pub_underscore_fields,
647    clippy::style,
648    clippy::empty_structs_with_brackets
649)]
650pub mod IPlonkVerifier {
651    use super::*;
652    use alloy::sol_types as alloy_sol_types;
653    #[derive(serde::Serialize, serde::Deserialize)]
654    #[derive()]
655    /**```solidity
656struct PlonkProof { BN254.G1Point wire0; BN254.G1Point wire1; BN254.G1Point wire2; BN254.G1Point wire3; BN254.G1Point wire4; BN254.G1Point prodPerm; BN254.G1Point split0; BN254.G1Point split1; BN254.G1Point split2; BN254.G1Point split3; BN254.G1Point split4; BN254.G1Point zeta; BN254.G1Point zetaOmega; BN254.ScalarField wireEval0; BN254.ScalarField wireEval1; BN254.ScalarField wireEval2; BN254.ScalarField wireEval3; BN254.ScalarField wireEval4; BN254.ScalarField sigmaEval0; BN254.ScalarField sigmaEval1; BN254.ScalarField sigmaEval2; BN254.ScalarField sigmaEval3; BN254.ScalarField prodPermZetaOmegaEval; }
657```*/
658    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
659    #[derive(Clone)]
660    pub struct PlonkProof {
661        #[allow(missing_docs)]
662        pub wire0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
663        #[allow(missing_docs)]
664        pub wire1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
665        #[allow(missing_docs)]
666        pub wire2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
667        #[allow(missing_docs)]
668        pub wire3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
669        #[allow(missing_docs)]
670        pub wire4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
671        #[allow(missing_docs)]
672        pub prodPerm: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
673        #[allow(missing_docs)]
674        pub split0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
675        #[allow(missing_docs)]
676        pub split1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
677        #[allow(missing_docs)]
678        pub split2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
679        #[allow(missing_docs)]
680        pub split3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
681        #[allow(missing_docs)]
682        pub split4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
683        #[allow(missing_docs)]
684        pub zeta: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
685        #[allow(missing_docs)]
686        pub zetaOmega: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
687        #[allow(missing_docs)]
688        pub wireEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
689        #[allow(missing_docs)]
690        pub wireEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
691        #[allow(missing_docs)]
692        pub wireEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
693        #[allow(missing_docs)]
694        pub wireEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
695        #[allow(missing_docs)]
696        pub wireEval4: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
697        #[allow(missing_docs)]
698        pub sigmaEval0: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
699        #[allow(missing_docs)]
700        pub sigmaEval1: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
701        #[allow(missing_docs)]
702        pub sigmaEval2: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
703        #[allow(missing_docs)]
704        pub sigmaEval3: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
705        #[allow(missing_docs)]
706        pub prodPermZetaOmegaEval: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
707    }
708    #[allow(
709        non_camel_case_types,
710        non_snake_case,
711        clippy::pub_underscore_fields,
712        clippy::style
713    )]
714    const _: () = {
715        use alloy::sol_types as alloy_sol_types;
716        #[doc(hidden)]
717        type UnderlyingSolTuple<'a> = (
718            BN254::G1Point,
719            BN254::G1Point,
720            BN254::G1Point,
721            BN254::G1Point,
722            BN254::G1Point,
723            BN254::G1Point,
724            BN254::G1Point,
725            BN254::G1Point,
726            BN254::G1Point,
727            BN254::G1Point,
728            BN254::G1Point,
729            BN254::G1Point,
730            BN254::G1Point,
731            BN254::ScalarField,
732            BN254::ScalarField,
733            BN254::ScalarField,
734            BN254::ScalarField,
735            BN254::ScalarField,
736            BN254::ScalarField,
737            BN254::ScalarField,
738            BN254::ScalarField,
739            BN254::ScalarField,
740            BN254::ScalarField,
741        );
742        #[doc(hidden)]
743        type UnderlyingRustTuple<'a> = (
744            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
745            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
746            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
747            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
748            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
749            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
750            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
751            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
752            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
753            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
754            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
755            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
756            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
757            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
758            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
759            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
760            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
761            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
762            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
763            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
764            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
765            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
766            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
767        );
768        #[cfg(test)]
769        #[allow(dead_code, unreachable_patterns)]
770        fn _type_assertion(
771            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
772        ) {
773            match _t {
774                alloy_sol_types::private::AssertTypeEq::<
775                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
776                >(_) => {}
777            }
778        }
779        #[automatically_derived]
780        #[doc(hidden)]
781        impl ::core::convert::From<PlonkProof> for UnderlyingRustTuple<'_> {
782            fn from(value: PlonkProof) -> Self {
783                (
784                    value.wire0,
785                    value.wire1,
786                    value.wire2,
787                    value.wire3,
788                    value.wire4,
789                    value.prodPerm,
790                    value.split0,
791                    value.split1,
792                    value.split2,
793                    value.split3,
794                    value.split4,
795                    value.zeta,
796                    value.zetaOmega,
797                    value.wireEval0,
798                    value.wireEval1,
799                    value.wireEval2,
800                    value.wireEval3,
801                    value.wireEval4,
802                    value.sigmaEval0,
803                    value.sigmaEval1,
804                    value.sigmaEval2,
805                    value.sigmaEval3,
806                    value.prodPermZetaOmegaEval,
807                )
808            }
809        }
810        #[automatically_derived]
811        #[doc(hidden)]
812        impl ::core::convert::From<UnderlyingRustTuple<'_>> for PlonkProof {
813            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
814                Self {
815                    wire0: tuple.0,
816                    wire1: tuple.1,
817                    wire2: tuple.2,
818                    wire3: tuple.3,
819                    wire4: tuple.4,
820                    prodPerm: tuple.5,
821                    split0: tuple.6,
822                    split1: tuple.7,
823                    split2: tuple.8,
824                    split3: tuple.9,
825                    split4: tuple.10,
826                    zeta: tuple.11,
827                    zetaOmega: tuple.12,
828                    wireEval0: tuple.13,
829                    wireEval1: tuple.14,
830                    wireEval2: tuple.15,
831                    wireEval3: tuple.16,
832                    wireEval4: tuple.17,
833                    sigmaEval0: tuple.18,
834                    sigmaEval1: tuple.19,
835                    sigmaEval2: tuple.20,
836                    sigmaEval3: tuple.21,
837                    prodPermZetaOmegaEval: tuple.22,
838                }
839            }
840        }
841        #[automatically_derived]
842        impl alloy_sol_types::SolValue for PlonkProof {
843            type SolType = Self;
844        }
845        #[automatically_derived]
846        impl alloy_sol_types::private::SolTypeValue<Self> for PlonkProof {
847            #[inline]
848            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
849                (
850                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire0),
851                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire1),
852                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire2),
853                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire3),
854                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.wire4),
855                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
856                        &self.prodPerm,
857                    ),
858                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split0),
859                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split1),
860                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split2),
861                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split3),
862                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.split4),
863                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.zeta),
864                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(
865                        &self.zetaOmega,
866                    ),
867                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
868                        &self.wireEval0,
869                    ),
870                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
871                        &self.wireEval1,
872                    ),
873                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
874                        &self.wireEval2,
875                    ),
876                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
877                        &self.wireEval3,
878                    ),
879                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
880                        &self.wireEval4,
881                    ),
882                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
883                        &self.sigmaEval0,
884                    ),
885                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
886                        &self.sigmaEval1,
887                    ),
888                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
889                        &self.sigmaEval2,
890                    ),
891                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
892                        &self.sigmaEval3,
893                    ),
894                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
895                        &self.prodPermZetaOmegaEval,
896                    ),
897                )
898            }
899            #[inline]
900            fn stv_abi_encoded_size(&self) -> usize {
901                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
902                    return size;
903                }
904                let tuple = <UnderlyingRustTuple<
905                    '_,
906                > as ::core::convert::From<Self>>::from(self.clone());
907                <UnderlyingSolTuple<
908                    '_,
909                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
910            }
911            #[inline]
912            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
913                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
914            }
915            #[inline]
916            fn stv_abi_encode_packed_to(
917                &self,
918                out: &mut alloy_sol_types::private::Vec<u8>,
919            ) {
920                let tuple = <UnderlyingRustTuple<
921                    '_,
922                > as ::core::convert::From<Self>>::from(self.clone());
923                <UnderlyingSolTuple<
924                    '_,
925                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
926            }
927            #[inline]
928            fn stv_abi_packed_encoded_size(&self) -> usize {
929                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
930                    return size;
931                }
932                let tuple = <UnderlyingRustTuple<
933                    '_,
934                > as ::core::convert::From<Self>>::from(self.clone());
935                <UnderlyingSolTuple<
936                    '_,
937                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
938            }
939        }
940        #[automatically_derived]
941        impl alloy_sol_types::SolType for PlonkProof {
942            type RustType = Self;
943            type Token<'a> = <UnderlyingSolTuple<
944                'a,
945            > as alloy_sol_types::SolType>::Token<'a>;
946            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
947            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
948                '_,
949            > as alloy_sol_types::SolType>::ENCODED_SIZE;
950            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
951                '_,
952            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
953            #[inline]
954            fn valid_token(token: &Self::Token<'_>) -> bool {
955                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
956            }
957            #[inline]
958            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
959                let tuple = <UnderlyingSolTuple<
960                    '_,
961                > as alloy_sol_types::SolType>::detokenize(token);
962                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
963            }
964        }
965        #[automatically_derived]
966        impl alloy_sol_types::SolStruct for PlonkProof {
967            const NAME: &'static str = "PlonkProof";
968            #[inline]
969            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
970                alloy_sol_types::private::Cow::Borrowed(
971                    "PlonkProof(G1Point wire0,G1Point wire1,G1Point wire2,G1Point wire3,G1Point wire4,G1Point prodPerm,G1Point split0,G1Point split1,G1Point split2,G1Point split3,G1Point split4,G1Point zeta,G1Point zetaOmega,uint256 wireEval0,uint256 wireEval1,uint256 wireEval2,uint256 wireEval3,uint256 wireEval4,uint256 sigmaEval0,uint256 sigmaEval1,uint256 sigmaEval2,uint256 sigmaEval3,uint256 prodPermZetaOmegaEval)",
972                )
973            }
974            #[inline]
975            fn eip712_components() -> alloy_sol_types::private::Vec<
976                alloy_sol_types::private::Cow<'static, str>,
977            > {
978                let mut components = alloy_sol_types::private::Vec::with_capacity(13);
979                components
980                    .push(
981                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
982                    );
983                components
984                    .extend(
985                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
986                    );
987                components
988                    .push(
989                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
990                    );
991                components
992                    .extend(
993                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
994                    );
995                components
996                    .push(
997                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
998                    );
999                components
1000                    .extend(
1001                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1002                    );
1003                components
1004                    .push(
1005                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1006                    );
1007                components
1008                    .extend(
1009                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1010                    );
1011                components
1012                    .push(
1013                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1014                    );
1015                components
1016                    .extend(
1017                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1018                    );
1019                components
1020                    .push(
1021                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1022                    );
1023                components
1024                    .extend(
1025                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1026                    );
1027                components
1028                    .push(
1029                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1030                    );
1031                components
1032                    .extend(
1033                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1034                    );
1035                components
1036                    .push(
1037                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1038                    );
1039                components
1040                    .extend(
1041                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1042                    );
1043                components
1044                    .push(
1045                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1046                    );
1047                components
1048                    .extend(
1049                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1050                    );
1051                components
1052                    .push(
1053                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1054                    );
1055                components
1056                    .extend(
1057                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1058                    );
1059                components
1060                    .push(
1061                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1062                    );
1063                components
1064                    .extend(
1065                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1066                    );
1067                components
1068                    .push(
1069                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1070                    );
1071                components
1072                    .extend(
1073                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1074                    );
1075                components
1076                    .push(
1077                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1078                    );
1079                components
1080                    .extend(
1081                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1082                    );
1083                components
1084            }
1085            #[inline]
1086            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1087                [
1088                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1089                            &self.wire0,
1090                        )
1091                        .0,
1092                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1093                            &self.wire1,
1094                        )
1095                        .0,
1096                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1097                            &self.wire2,
1098                        )
1099                        .0,
1100                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1101                            &self.wire3,
1102                        )
1103                        .0,
1104                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1105                            &self.wire4,
1106                        )
1107                        .0,
1108                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1109                            &self.prodPerm,
1110                        )
1111                        .0,
1112                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1113                            &self.split0,
1114                        )
1115                        .0,
1116                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1117                            &self.split1,
1118                        )
1119                        .0,
1120                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1121                            &self.split2,
1122                        )
1123                        .0,
1124                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1125                            &self.split3,
1126                        )
1127                        .0,
1128                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1129                            &self.split4,
1130                        )
1131                        .0,
1132                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1133                            &self.zeta,
1134                        )
1135                        .0,
1136                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1137                            &self.zetaOmega,
1138                        )
1139                        .0,
1140                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1141                            &self.wireEval0,
1142                        )
1143                        .0,
1144                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1145                            &self.wireEval1,
1146                        )
1147                        .0,
1148                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1149                            &self.wireEval2,
1150                        )
1151                        .0,
1152                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1153                            &self.wireEval3,
1154                        )
1155                        .0,
1156                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1157                            &self.wireEval4,
1158                        )
1159                        .0,
1160                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1161                            &self.sigmaEval0,
1162                        )
1163                        .0,
1164                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1165                            &self.sigmaEval1,
1166                        )
1167                        .0,
1168                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1169                            &self.sigmaEval2,
1170                        )
1171                        .0,
1172                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1173                            &self.sigmaEval3,
1174                        )
1175                        .0,
1176                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
1177                            &self.prodPermZetaOmegaEval,
1178                        )
1179                        .0,
1180                ]
1181                    .concat()
1182            }
1183        }
1184        #[automatically_derived]
1185        impl alloy_sol_types::EventTopic for PlonkProof {
1186            #[inline]
1187            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1188                0usize
1189                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1190                        &rust.wire0,
1191                    )
1192                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1193                        &rust.wire1,
1194                    )
1195                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1196                        &rust.wire2,
1197                    )
1198                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1199                        &rust.wire3,
1200                    )
1201                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1202                        &rust.wire4,
1203                    )
1204                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1205                        &rust.prodPerm,
1206                    )
1207                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1208                        &rust.split0,
1209                    )
1210                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1211                        &rust.split1,
1212                    )
1213                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1214                        &rust.split2,
1215                    )
1216                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1217                        &rust.split3,
1218                    )
1219                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1220                        &rust.split4,
1221                    )
1222                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1223                        &rust.zeta,
1224                    )
1225                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1226                        &rust.zetaOmega,
1227                    )
1228                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1229                        &rust.wireEval0,
1230                    )
1231                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1232                        &rust.wireEval1,
1233                    )
1234                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1235                        &rust.wireEval2,
1236                    )
1237                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1238                        &rust.wireEval3,
1239                    )
1240                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1241                        &rust.wireEval4,
1242                    )
1243                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1244                        &rust.sigmaEval0,
1245                    )
1246                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1247                        &rust.sigmaEval1,
1248                    )
1249                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1250                        &rust.sigmaEval2,
1251                    )
1252                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1253                        &rust.sigmaEval3,
1254                    )
1255                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
1256                        &rust.prodPermZetaOmegaEval,
1257                    )
1258            }
1259            #[inline]
1260            fn encode_topic_preimage(
1261                rust: &Self::RustType,
1262                out: &mut alloy_sol_types::private::Vec<u8>,
1263            ) {
1264                out.reserve(
1265                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
1266                );
1267                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1268                    &rust.wire0,
1269                    out,
1270                );
1271                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1272                    &rust.wire1,
1273                    out,
1274                );
1275                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1276                    &rust.wire2,
1277                    out,
1278                );
1279                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1280                    &rust.wire3,
1281                    out,
1282                );
1283                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1284                    &rust.wire4,
1285                    out,
1286                );
1287                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1288                    &rust.prodPerm,
1289                    out,
1290                );
1291                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1292                    &rust.split0,
1293                    out,
1294                );
1295                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1296                    &rust.split1,
1297                    out,
1298                );
1299                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1300                    &rust.split2,
1301                    out,
1302                );
1303                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1304                    &rust.split3,
1305                    out,
1306                );
1307                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1308                    &rust.split4,
1309                    out,
1310                );
1311                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1312                    &rust.zeta,
1313                    out,
1314                );
1315                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
1316                    &rust.zetaOmega,
1317                    out,
1318                );
1319                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1320                    &rust.wireEval0,
1321                    out,
1322                );
1323                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1324                    &rust.wireEval1,
1325                    out,
1326                );
1327                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1328                    &rust.wireEval2,
1329                    out,
1330                );
1331                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1332                    &rust.wireEval3,
1333                    out,
1334                );
1335                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1336                    &rust.wireEval4,
1337                    out,
1338                );
1339                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1340                    &rust.sigmaEval0,
1341                    out,
1342                );
1343                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1344                    &rust.sigmaEval1,
1345                    out,
1346                );
1347                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1348                    &rust.sigmaEval2,
1349                    out,
1350                );
1351                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1352                    &rust.sigmaEval3,
1353                    out,
1354                );
1355                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
1356                    &rust.prodPermZetaOmegaEval,
1357                    out,
1358                );
1359            }
1360            #[inline]
1361            fn encode_topic(
1362                rust: &Self::RustType,
1363            ) -> alloy_sol_types::abi::token::WordToken {
1364                let mut out = alloy_sol_types::private::Vec::new();
1365                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
1366                    rust,
1367                    &mut out,
1368                );
1369                alloy_sol_types::abi::token::WordToken(
1370                    alloy_sol_types::private::keccak256(out),
1371                )
1372            }
1373        }
1374    };
1375    #[derive(serde::Serialize, serde::Deserialize)]
1376    #[derive()]
1377    /**```solidity
1378struct VerifyingKey { uint256 domainSize; uint256 numInputs; BN254.G1Point sigma0; BN254.G1Point sigma1; BN254.G1Point sigma2; BN254.G1Point sigma3; BN254.G1Point sigma4; BN254.G1Point q1; BN254.G1Point q2; BN254.G1Point q3; BN254.G1Point q4; BN254.G1Point qM12; BN254.G1Point qM34; BN254.G1Point qO; BN254.G1Point qC; BN254.G1Point qH1; BN254.G1Point qH2; BN254.G1Point qH3; BN254.G1Point qH4; BN254.G1Point qEcc; bytes32 g2LSB; bytes32 g2MSB; }
1379```*/
1380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
1381    #[derive(Clone)]
1382    pub struct VerifyingKey {
1383        #[allow(missing_docs)]
1384        pub domainSize: alloy::sol_types::private::primitives::aliases::U256,
1385        #[allow(missing_docs)]
1386        pub numInputs: alloy::sol_types::private::primitives::aliases::U256,
1387        #[allow(missing_docs)]
1388        pub sigma0: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1389        #[allow(missing_docs)]
1390        pub sigma1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1391        #[allow(missing_docs)]
1392        pub sigma2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1393        #[allow(missing_docs)]
1394        pub sigma3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1395        #[allow(missing_docs)]
1396        pub sigma4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1397        #[allow(missing_docs)]
1398        pub q1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1399        #[allow(missing_docs)]
1400        pub q2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1401        #[allow(missing_docs)]
1402        pub q3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1403        #[allow(missing_docs)]
1404        pub q4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1405        #[allow(missing_docs)]
1406        pub qM12: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1407        #[allow(missing_docs)]
1408        pub qM34: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1409        #[allow(missing_docs)]
1410        pub qO: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1411        #[allow(missing_docs)]
1412        pub qC: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1413        #[allow(missing_docs)]
1414        pub qH1: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1415        #[allow(missing_docs)]
1416        pub qH2: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1417        #[allow(missing_docs)]
1418        pub qH3: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1419        #[allow(missing_docs)]
1420        pub qH4: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1421        #[allow(missing_docs)]
1422        pub qEcc: <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1423        #[allow(missing_docs)]
1424        pub g2LSB: alloy::sol_types::private::FixedBytes<32>,
1425        #[allow(missing_docs)]
1426        pub g2MSB: alloy::sol_types::private::FixedBytes<32>,
1427    }
1428    #[allow(
1429        non_camel_case_types,
1430        non_snake_case,
1431        clippy::pub_underscore_fields,
1432        clippy::style
1433    )]
1434    const _: () = {
1435        use alloy::sol_types as alloy_sol_types;
1436        #[doc(hidden)]
1437        type UnderlyingSolTuple<'a> = (
1438            alloy::sol_types::sol_data::Uint<256>,
1439            alloy::sol_types::sol_data::Uint<256>,
1440            BN254::G1Point,
1441            BN254::G1Point,
1442            BN254::G1Point,
1443            BN254::G1Point,
1444            BN254::G1Point,
1445            BN254::G1Point,
1446            BN254::G1Point,
1447            BN254::G1Point,
1448            BN254::G1Point,
1449            BN254::G1Point,
1450            BN254::G1Point,
1451            BN254::G1Point,
1452            BN254::G1Point,
1453            BN254::G1Point,
1454            BN254::G1Point,
1455            BN254::G1Point,
1456            BN254::G1Point,
1457            BN254::G1Point,
1458            alloy::sol_types::sol_data::FixedBytes<32>,
1459            alloy::sol_types::sol_data::FixedBytes<32>,
1460        );
1461        #[doc(hidden)]
1462        type UnderlyingRustTuple<'a> = (
1463            alloy::sol_types::private::primitives::aliases::U256,
1464            alloy::sol_types::private::primitives::aliases::U256,
1465            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1466            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1467            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1468            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1469            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1470            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1471            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1472            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1473            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1474            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1475            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1476            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1477            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1478            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1479            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1480            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1481            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1482            <BN254::G1Point as alloy::sol_types::SolType>::RustType,
1483            alloy::sol_types::private::FixedBytes<32>,
1484            alloy::sol_types::private::FixedBytes<32>,
1485        );
1486        #[cfg(test)]
1487        #[allow(dead_code, unreachable_patterns)]
1488        fn _type_assertion(
1489            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
1490        ) {
1491            match _t {
1492                alloy_sol_types::private::AssertTypeEq::<
1493                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
1494                >(_) => {}
1495            }
1496        }
1497        #[automatically_derived]
1498        #[doc(hidden)]
1499        impl ::core::convert::From<VerifyingKey> for UnderlyingRustTuple<'_> {
1500            fn from(value: VerifyingKey) -> Self {
1501                (
1502                    value.domainSize,
1503                    value.numInputs,
1504                    value.sigma0,
1505                    value.sigma1,
1506                    value.sigma2,
1507                    value.sigma3,
1508                    value.sigma4,
1509                    value.q1,
1510                    value.q2,
1511                    value.q3,
1512                    value.q4,
1513                    value.qM12,
1514                    value.qM34,
1515                    value.qO,
1516                    value.qC,
1517                    value.qH1,
1518                    value.qH2,
1519                    value.qH3,
1520                    value.qH4,
1521                    value.qEcc,
1522                    value.g2LSB,
1523                    value.g2MSB,
1524                )
1525            }
1526        }
1527        #[automatically_derived]
1528        #[doc(hidden)]
1529        impl ::core::convert::From<UnderlyingRustTuple<'_>> for VerifyingKey {
1530            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
1531                Self {
1532                    domainSize: tuple.0,
1533                    numInputs: tuple.1,
1534                    sigma0: tuple.2,
1535                    sigma1: tuple.3,
1536                    sigma2: tuple.4,
1537                    sigma3: tuple.5,
1538                    sigma4: tuple.6,
1539                    q1: tuple.7,
1540                    q2: tuple.8,
1541                    q3: tuple.9,
1542                    q4: tuple.10,
1543                    qM12: tuple.11,
1544                    qM34: tuple.12,
1545                    qO: tuple.13,
1546                    qC: tuple.14,
1547                    qH1: tuple.15,
1548                    qH2: tuple.16,
1549                    qH3: tuple.17,
1550                    qH4: tuple.18,
1551                    qEcc: tuple.19,
1552                    g2LSB: tuple.20,
1553                    g2MSB: tuple.21,
1554                }
1555            }
1556        }
1557        #[automatically_derived]
1558        impl alloy_sol_types::SolValue for VerifyingKey {
1559            type SolType = Self;
1560        }
1561        #[automatically_derived]
1562        impl alloy_sol_types::private::SolTypeValue<Self> for VerifyingKey {
1563            #[inline]
1564            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
1565                (
1566                    <alloy::sol_types::sol_data::Uint<
1567                        256,
1568                    > as alloy_sol_types::SolType>::tokenize(&self.domainSize),
1569                    <alloy::sol_types::sol_data::Uint<
1570                        256,
1571                    > as alloy_sol_types::SolType>::tokenize(&self.numInputs),
1572                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma0),
1573                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma1),
1574                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma2),
1575                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma3),
1576                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.sigma4),
1577                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q1),
1578                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q2),
1579                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q3),
1580                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.q4),
1581                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM12),
1582                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qM34),
1583                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qO),
1584                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qC),
1585                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH1),
1586                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH2),
1587                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH3),
1588                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qH4),
1589                    <BN254::G1Point as alloy_sol_types::SolType>::tokenize(&self.qEcc),
1590                    <alloy::sol_types::sol_data::FixedBytes<
1591                        32,
1592                    > as alloy_sol_types::SolType>::tokenize(&self.g2LSB),
1593                    <alloy::sol_types::sol_data::FixedBytes<
1594                        32,
1595                    > as alloy_sol_types::SolType>::tokenize(&self.g2MSB),
1596                )
1597            }
1598            #[inline]
1599            fn stv_abi_encoded_size(&self) -> usize {
1600                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
1601                    return size;
1602                }
1603                let tuple = <UnderlyingRustTuple<
1604                    '_,
1605                > as ::core::convert::From<Self>>::from(self.clone());
1606                <UnderlyingSolTuple<
1607                    '_,
1608                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
1609            }
1610            #[inline]
1611            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
1612                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
1613            }
1614            #[inline]
1615            fn stv_abi_encode_packed_to(
1616                &self,
1617                out: &mut alloy_sol_types::private::Vec<u8>,
1618            ) {
1619                let tuple = <UnderlyingRustTuple<
1620                    '_,
1621                > as ::core::convert::From<Self>>::from(self.clone());
1622                <UnderlyingSolTuple<
1623                    '_,
1624                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
1625            }
1626            #[inline]
1627            fn stv_abi_packed_encoded_size(&self) -> usize {
1628                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
1629                    return size;
1630                }
1631                let tuple = <UnderlyingRustTuple<
1632                    '_,
1633                > as ::core::convert::From<Self>>::from(self.clone());
1634                <UnderlyingSolTuple<
1635                    '_,
1636                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
1637            }
1638        }
1639        #[automatically_derived]
1640        impl alloy_sol_types::SolType for VerifyingKey {
1641            type RustType = Self;
1642            type Token<'a> = <UnderlyingSolTuple<
1643                'a,
1644            > as alloy_sol_types::SolType>::Token<'a>;
1645            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
1646            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1647                '_,
1648            > as alloy_sol_types::SolType>::ENCODED_SIZE;
1649            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
1650                '_,
1651            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
1652            #[inline]
1653            fn valid_token(token: &Self::Token<'_>) -> bool {
1654                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
1655            }
1656            #[inline]
1657            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
1658                let tuple = <UnderlyingSolTuple<
1659                    '_,
1660                > as alloy_sol_types::SolType>::detokenize(token);
1661                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
1662            }
1663        }
1664        #[automatically_derived]
1665        impl alloy_sol_types::SolStruct for VerifyingKey {
1666            const NAME: &'static str = "VerifyingKey";
1667            #[inline]
1668            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
1669                alloy_sol_types::private::Cow::Borrowed(
1670                    "VerifyingKey(uint256 domainSize,uint256 numInputs,G1Point sigma0,G1Point sigma1,G1Point sigma2,G1Point sigma3,G1Point sigma4,G1Point q1,G1Point q2,G1Point q3,G1Point q4,G1Point qM12,G1Point qM34,G1Point qO,G1Point qC,G1Point qH1,G1Point qH2,G1Point qH3,G1Point qH4,G1Point qEcc,bytes32 g2LSB,bytes32 g2MSB)",
1671                )
1672            }
1673            #[inline]
1674            fn eip712_components() -> alloy_sol_types::private::Vec<
1675                alloy_sol_types::private::Cow<'static, str>,
1676            > {
1677                let mut components = alloy_sol_types::private::Vec::with_capacity(18);
1678                components
1679                    .push(
1680                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1681                    );
1682                components
1683                    .extend(
1684                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1685                    );
1686                components
1687                    .push(
1688                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1689                    );
1690                components
1691                    .extend(
1692                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1693                    );
1694                components
1695                    .push(
1696                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1697                    );
1698                components
1699                    .extend(
1700                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1701                    );
1702                components
1703                    .push(
1704                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1705                    );
1706                components
1707                    .extend(
1708                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1709                    );
1710                components
1711                    .push(
1712                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1713                    );
1714                components
1715                    .extend(
1716                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1717                    );
1718                components
1719                    .push(
1720                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1721                    );
1722                components
1723                    .extend(
1724                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1725                    );
1726                components
1727                    .push(
1728                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1729                    );
1730                components
1731                    .extend(
1732                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1733                    );
1734                components
1735                    .push(
1736                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1737                    );
1738                components
1739                    .extend(
1740                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1741                    );
1742                components
1743                    .push(
1744                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1745                    );
1746                components
1747                    .extend(
1748                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1749                    );
1750                components
1751                    .push(
1752                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1753                    );
1754                components
1755                    .extend(
1756                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1757                    );
1758                components
1759                    .push(
1760                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1761                    );
1762                components
1763                    .extend(
1764                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1765                    );
1766                components
1767                    .push(
1768                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1769                    );
1770                components
1771                    .extend(
1772                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1773                    );
1774                components
1775                    .push(
1776                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1777                    );
1778                components
1779                    .extend(
1780                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1781                    );
1782                components
1783                    .push(
1784                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1785                    );
1786                components
1787                    .extend(
1788                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1789                    );
1790                components
1791                    .push(
1792                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1793                    );
1794                components
1795                    .extend(
1796                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1797                    );
1798                components
1799                    .push(
1800                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1801                    );
1802                components
1803                    .extend(
1804                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1805                    );
1806                components
1807                    .push(
1808                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1809                    );
1810                components
1811                    .extend(
1812                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1813                    );
1814                components
1815                    .push(
1816                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_root_type(),
1817                    );
1818                components
1819                    .extend(
1820                        <BN254::G1Point as alloy_sol_types::SolStruct>::eip712_components(),
1821                    );
1822                components
1823            }
1824            #[inline]
1825            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
1826                [
1827                    <alloy::sol_types::sol_data::Uint<
1828                        256,
1829                    > as alloy_sol_types::SolType>::eip712_data_word(&self.domainSize)
1830                        .0,
1831                    <alloy::sol_types::sol_data::Uint<
1832                        256,
1833                    > as alloy_sol_types::SolType>::eip712_data_word(&self.numInputs)
1834                        .0,
1835                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1836                            &self.sigma0,
1837                        )
1838                        .0,
1839                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1840                            &self.sigma1,
1841                        )
1842                        .0,
1843                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1844                            &self.sigma2,
1845                        )
1846                        .0,
1847                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1848                            &self.sigma3,
1849                        )
1850                        .0,
1851                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1852                            &self.sigma4,
1853                        )
1854                        .0,
1855                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1856                            &self.q1,
1857                        )
1858                        .0,
1859                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1860                            &self.q2,
1861                        )
1862                        .0,
1863                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1864                            &self.q3,
1865                        )
1866                        .0,
1867                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1868                            &self.q4,
1869                        )
1870                        .0,
1871                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1872                            &self.qM12,
1873                        )
1874                        .0,
1875                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1876                            &self.qM34,
1877                        )
1878                        .0,
1879                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1880                            &self.qO,
1881                        )
1882                        .0,
1883                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1884                            &self.qC,
1885                        )
1886                        .0,
1887                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1888                            &self.qH1,
1889                        )
1890                        .0,
1891                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1892                            &self.qH2,
1893                        )
1894                        .0,
1895                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1896                            &self.qH3,
1897                        )
1898                        .0,
1899                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1900                            &self.qH4,
1901                        )
1902                        .0,
1903                    <BN254::G1Point as alloy_sol_types::SolType>::eip712_data_word(
1904                            &self.qEcc,
1905                        )
1906                        .0,
1907                    <alloy::sol_types::sol_data::FixedBytes<
1908                        32,
1909                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2LSB)
1910                        .0,
1911                    <alloy::sol_types::sol_data::FixedBytes<
1912                        32,
1913                    > as alloy_sol_types::SolType>::eip712_data_word(&self.g2MSB)
1914                        .0,
1915                ]
1916                    .concat()
1917            }
1918        }
1919        #[automatically_derived]
1920        impl alloy_sol_types::EventTopic for VerifyingKey {
1921            #[inline]
1922            fn topic_preimage_length(rust: &Self::RustType) -> usize {
1923                0usize
1924                    + <alloy::sol_types::sol_data::Uint<
1925                        256,
1926                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1927                        &rust.domainSize,
1928                    )
1929                    + <alloy::sol_types::sol_data::Uint<
1930                        256,
1931                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
1932                        &rust.numInputs,
1933                    )
1934                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1935                        &rust.sigma0,
1936                    )
1937                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1938                        &rust.sigma1,
1939                    )
1940                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1941                        &rust.sigma2,
1942                    )
1943                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1944                        &rust.sigma3,
1945                    )
1946                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1947                        &rust.sigma4,
1948                    )
1949                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1950                        &rust.q1,
1951                    )
1952                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1953                        &rust.q2,
1954                    )
1955                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1956                        &rust.q3,
1957                    )
1958                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1959                        &rust.q4,
1960                    )
1961                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1962                        &rust.qM12,
1963                    )
1964                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1965                        &rust.qM34,
1966                    )
1967                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1968                        &rust.qO,
1969                    )
1970                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1971                        &rust.qC,
1972                    )
1973                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1974                        &rust.qH1,
1975                    )
1976                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1977                        &rust.qH2,
1978                    )
1979                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1980                        &rust.qH3,
1981                    )
1982                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1983                        &rust.qH4,
1984                    )
1985                    + <BN254::G1Point as alloy_sol_types::EventTopic>::topic_preimage_length(
1986                        &rust.qEcc,
1987                    )
1988                    + <alloy::sol_types::sol_data::FixedBytes<
1989                        32,
1990                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2LSB)
1991                    + <alloy::sol_types::sol_data::FixedBytes<
1992                        32,
1993                    > as alloy_sol_types::EventTopic>::topic_preimage_length(&rust.g2MSB)
1994            }
1995            #[inline]
1996            fn encode_topic_preimage(
1997                rust: &Self::RustType,
1998                out: &mut alloy_sol_types::private::Vec<u8>,
1999            ) {
2000                out.reserve(
2001                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
2002                );
2003                <alloy::sol_types::sol_data::Uint<
2004                    256,
2005                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2006                    &rust.domainSize,
2007                    out,
2008                );
2009                <alloy::sol_types::sol_data::Uint<
2010                    256,
2011                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2012                    &rust.numInputs,
2013                    out,
2014                );
2015                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2016                    &rust.sigma0,
2017                    out,
2018                );
2019                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2020                    &rust.sigma1,
2021                    out,
2022                );
2023                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2024                    &rust.sigma2,
2025                    out,
2026                );
2027                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2028                    &rust.sigma3,
2029                    out,
2030                );
2031                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2032                    &rust.sigma4,
2033                    out,
2034                );
2035                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2036                    &rust.q1,
2037                    out,
2038                );
2039                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2040                    &rust.q2,
2041                    out,
2042                );
2043                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2044                    &rust.q3,
2045                    out,
2046                );
2047                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2048                    &rust.q4,
2049                    out,
2050                );
2051                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2052                    &rust.qM12,
2053                    out,
2054                );
2055                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2056                    &rust.qM34,
2057                    out,
2058                );
2059                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2060                    &rust.qO,
2061                    out,
2062                );
2063                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2064                    &rust.qC,
2065                    out,
2066                );
2067                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2068                    &rust.qH1,
2069                    out,
2070                );
2071                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2072                    &rust.qH2,
2073                    out,
2074                );
2075                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2076                    &rust.qH3,
2077                    out,
2078                );
2079                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2080                    &rust.qH4,
2081                    out,
2082                );
2083                <BN254::G1Point as alloy_sol_types::EventTopic>::encode_topic_preimage(
2084                    &rust.qEcc,
2085                    out,
2086                );
2087                <alloy::sol_types::sol_data::FixedBytes<
2088                    32,
2089                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2090                    &rust.g2LSB,
2091                    out,
2092                );
2093                <alloy::sol_types::sol_data::FixedBytes<
2094                    32,
2095                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
2096                    &rust.g2MSB,
2097                    out,
2098                );
2099            }
2100            #[inline]
2101            fn encode_topic(
2102                rust: &Self::RustType,
2103            ) -> alloy_sol_types::abi::token::WordToken {
2104                let mut out = alloy_sol_types::private::Vec::new();
2105                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
2106                    rust,
2107                    &mut out,
2108                );
2109                alloy_sol_types::abi::token::WordToken(
2110                    alloy_sol_types::private::keccak256(out),
2111                )
2112            }
2113        }
2114    };
2115    use alloy::contract as alloy_contract;
2116    /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2117
2118See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2119    #[inline]
2120    pub const fn new<
2121        P: alloy_contract::private::Provider<N>,
2122        N: alloy_contract::private::Network,
2123    >(
2124        address: alloy_sol_types::private::Address,
2125        provider: P,
2126    ) -> IPlonkVerifierInstance<P, N> {
2127        IPlonkVerifierInstance::<P, N>::new(address, provider)
2128    }
2129    /**A [`IPlonkVerifier`](self) instance.
2130
2131Contains type-safe methods for interacting with an on-chain instance of the
2132[`IPlonkVerifier`](self) contract located at a given `address`, using a given
2133provider `P`.
2134
2135If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
2136documentation on how to provide it), the `deploy` and `deploy_builder` methods can
2137be used to deploy a new instance of the contract.
2138
2139See the [module-level documentation](self) for all the available methods.*/
2140    #[derive(Clone)]
2141    pub struct IPlonkVerifierInstance<P, N = alloy_contract::private::Ethereum> {
2142        address: alloy_sol_types::private::Address,
2143        provider: P,
2144        _network: ::core::marker::PhantomData<N>,
2145    }
2146    #[automatically_derived]
2147    impl<P, N> ::core::fmt::Debug for IPlonkVerifierInstance<P, N> {
2148        #[inline]
2149        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
2150            f.debug_tuple("IPlonkVerifierInstance").field(&self.address).finish()
2151        }
2152    }
2153    /// Instantiation and getters/setters.
2154    #[automatically_derived]
2155    impl<
2156        P: alloy_contract::private::Provider<N>,
2157        N: alloy_contract::private::Network,
2158    > IPlonkVerifierInstance<P, N> {
2159        /**Creates a new wrapper around an on-chain [`IPlonkVerifier`](self) contract instance.
2160
2161See the [wrapper's documentation](`IPlonkVerifierInstance`) for more details.*/
2162        #[inline]
2163        pub const fn new(
2164            address: alloy_sol_types::private::Address,
2165            provider: P,
2166        ) -> Self {
2167            Self {
2168                address,
2169                provider,
2170                _network: ::core::marker::PhantomData,
2171            }
2172        }
2173        /// Returns a reference to the address.
2174        #[inline]
2175        pub const fn address(&self) -> &alloy_sol_types::private::Address {
2176            &self.address
2177        }
2178        /// Sets the address.
2179        #[inline]
2180        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
2181            self.address = address;
2182        }
2183        /// Sets the address and returns `self`.
2184        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
2185            self.set_address(address);
2186            self
2187        }
2188        /// Returns a reference to the provider.
2189        #[inline]
2190        pub const fn provider(&self) -> &P {
2191            &self.provider
2192        }
2193    }
2194    impl<P: ::core::clone::Clone, N> IPlonkVerifierInstance<&P, N> {
2195        /// Clones the provider and returns a new instance with the cloned provider.
2196        #[inline]
2197        pub fn with_cloned_provider(self) -> IPlonkVerifierInstance<P, N> {
2198            IPlonkVerifierInstance {
2199                address: self.address,
2200                provider: ::core::clone::Clone::clone(&self.provider),
2201                _network: ::core::marker::PhantomData,
2202            }
2203        }
2204    }
2205    /// Function calls.
2206    #[automatically_derived]
2207    impl<
2208        P: alloy_contract::private::Provider<N>,
2209        N: alloy_contract::private::Network,
2210    > IPlonkVerifierInstance<P, N> {
2211        /// Creates a new call builder using this contract instance's provider and address.
2212        ///
2213        /// Note that the call can be any function call, not just those defined in this
2214        /// contract. Prefer using the other methods for building type-safe contract calls.
2215        pub fn call_builder<C: alloy_sol_types::SolCall>(
2216            &self,
2217            call: &C,
2218        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
2219            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
2220        }
2221    }
2222    /// Event filters.
2223    #[automatically_derived]
2224    impl<
2225        P: alloy_contract::private::Provider<N>,
2226        N: alloy_contract::private::Network,
2227    > IPlonkVerifierInstance<P, N> {
2228        /// Creates a new event filter using this contract instance's provider and address.
2229        ///
2230        /// Note that the type can be any event, not just those defined in this contract.
2231        /// Prefer using the other methods for building type-safe event filters.
2232        pub fn event_filter<E: alloy_sol_types::SolEvent>(
2233            &self,
2234        ) -> alloy_contract::Event<&P, E, N> {
2235            alloy_contract::Event::new_sol(&self.provider, &self.address)
2236        }
2237    }
2238}
2239/**
2240
2241Generated by the following Solidity interface...
2242```solidity
2243library BN254 {
2244    type BaseField is uint256;
2245    type ScalarField is uint256;
2246    struct G1Point {
2247        BaseField x;
2248        BaseField y;
2249    }
2250}
2251
2252library IPlonkVerifier {
2253    struct PlonkProof {
2254        BN254.G1Point wire0;
2255        BN254.G1Point wire1;
2256        BN254.G1Point wire2;
2257        BN254.G1Point wire3;
2258        BN254.G1Point wire4;
2259        BN254.G1Point prodPerm;
2260        BN254.G1Point split0;
2261        BN254.G1Point split1;
2262        BN254.G1Point split2;
2263        BN254.G1Point split3;
2264        BN254.G1Point split4;
2265        BN254.G1Point zeta;
2266        BN254.G1Point zetaOmega;
2267        BN254.ScalarField wireEval0;
2268        BN254.ScalarField wireEval1;
2269        BN254.ScalarField wireEval2;
2270        BN254.ScalarField wireEval3;
2271        BN254.ScalarField wireEval4;
2272        BN254.ScalarField sigmaEval0;
2273        BN254.ScalarField sigmaEval1;
2274        BN254.ScalarField sigmaEval2;
2275        BN254.ScalarField sigmaEval3;
2276        BN254.ScalarField prodPermZetaOmegaEval;
2277    }
2278    struct VerifyingKey {
2279        uint256 domainSize;
2280        uint256 numInputs;
2281        BN254.G1Point sigma0;
2282        BN254.G1Point sigma1;
2283        BN254.G1Point sigma2;
2284        BN254.G1Point sigma3;
2285        BN254.G1Point sigma4;
2286        BN254.G1Point q1;
2287        BN254.G1Point q2;
2288        BN254.G1Point q3;
2289        BN254.G1Point q4;
2290        BN254.G1Point qM12;
2291        BN254.G1Point qM34;
2292        BN254.G1Point qO;
2293        BN254.G1Point qC;
2294        BN254.G1Point qH1;
2295        BN254.G1Point qH2;
2296        BN254.G1Point qH3;
2297        BN254.G1Point qH4;
2298        BN254.G1Point qEcc;
2299        bytes32 g2LSB;
2300        bytes32 g2MSB;
2301    }
2302}
2303
2304interface LightClient {
2305    struct LightClientState {
2306        uint64 viewNum;
2307        uint64 blockHeight;
2308        BN254.ScalarField blockCommRoot;
2309    }
2310    struct StakeTableState {
2311        uint256 threshold;
2312        BN254.ScalarField blsKeyComm;
2313        BN254.ScalarField schnorrKeyComm;
2314        BN254.ScalarField amountComm;
2315    }
2316
2317    error AddressEmptyCode(address target);
2318    error ERC1967InvalidImplementation(address implementation);
2319    error ERC1967NonPayable();
2320    error FailedInnerCall();
2321    error InsufficientSnapshotHistory();
2322    error InvalidAddress();
2323    error InvalidArgs();
2324    error InvalidHotShotBlockForCommitmentCheck();
2325    error InvalidInitialization();
2326    error InvalidMaxStateHistory();
2327    error InvalidProof();
2328    error InvalidScalar();
2329    error NoChangeRequired();
2330    error NotInitializing();
2331    error OutdatedState();
2332    error OwnableInvalidOwner(address owner);
2333    error OwnableUnauthorizedAccount(address account);
2334    error OwnershipCannotBeRenounced();
2335    error ProverNotPermissioned();
2336    error UUPSUnauthorizedCallContext();
2337    error UUPSUnsupportedProxiableUUID(bytes32 slot);
2338    error WrongStakeTableUsed();
2339
2340    event Initialized(uint64 version);
2341    event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
2342    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
2343    event PermissionedProverNotRequired();
2344    event PermissionedProverRequired(address permissionedProver);
2345    event Upgrade(address implementation);
2346    event Upgraded(address indexed implementation);
2347
2348    constructor();
2349
2350    function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
2351    function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
2352    function currentBlockNumber() external view returns (uint256);
2353    function disablePermissionedProverMode() external;
2354    function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2355    function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
2356    function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
2357    function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
2358    function getStateHistoryCount() external view returns (uint256);
2359    function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
2360    function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
2361    function isPermissionedProverEnabled() external view returns (bool);
2362    function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
2363    function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
2364    function owner() external view returns (address);
2365    function permissionedProver() external view returns (address);
2366    function proxiableUUID() external view returns (bytes32);
2367    function renounceOwnership() external;
2368    function setPermissionedProver(address prover) external;
2369    function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
2370    function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
2371    function stateHistoryFirstIndex() external view returns (uint64);
2372    function stateHistoryRetentionPeriod() external view returns (uint32);
2373    function transferOwnership(address newOwner) external;
2374    function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
2375}
2376```
2377
2378...which was generated by the following JSON ABI:
2379```json
2380[
2381  {
2382    "type": "constructor",
2383    "inputs": [],
2384    "stateMutability": "nonpayable"
2385  },
2386  {
2387    "type": "function",
2388    "name": "UPGRADE_INTERFACE_VERSION",
2389    "inputs": [],
2390    "outputs": [
2391      {
2392        "name": "",
2393        "type": "string",
2394        "internalType": "string"
2395      }
2396    ],
2397    "stateMutability": "view"
2398  },
2399  {
2400    "type": "function",
2401    "name": "_getVk",
2402    "inputs": [],
2403    "outputs": [
2404      {
2405        "name": "vk",
2406        "type": "tuple",
2407        "internalType": "struct IPlonkVerifier.VerifyingKey",
2408        "components": [
2409          {
2410            "name": "domainSize",
2411            "type": "uint256",
2412            "internalType": "uint256"
2413          },
2414          {
2415            "name": "numInputs",
2416            "type": "uint256",
2417            "internalType": "uint256"
2418          },
2419          {
2420            "name": "sigma0",
2421            "type": "tuple",
2422            "internalType": "struct BN254.G1Point",
2423            "components": [
2424              {
2425                "name": "x",
2426                "type": "uint256",
2427                "internalType": "BN254.BaseField"
2428              },
2429              {
2430                "name": "y",
2431                "type": "uint256",
2432                "internalType": "BN254.BaseField"
2433              }
2434            ]
2435          },
2436          {
2437            "name": "sigma1",
2438            "type": "tuple",
2439            "internalType": "struct BN254.G1Point",
2440            "components": [
2441              {
2442                "name": "x",
2443                "type": "uint256",
2444                "internalType": "BN254.BaseField"
2445              },
2446              {
2447                "name": "y",
2448                "type": "uint256",
2449                "internalType": "BN254.BaseField"
2450              }
2451            ]
2452          },
2453          {
2454            "name": "sigma2",
2455            "type": "tuple",
2456            "internalType": "struct BN254.G1Point",
2457            "components": [
2458              {
2459                "name": "x",
2460                "type": "uint256",
2461                "internalType": "BN254.BaseField"
2462              },
2463              {
2464                "name": "y",
2465                "type": "uint256",
2466                "internalType": "BN254.BaseField"
2467              }
2468            ]
2469          },
2470          {
2471            "name": "sigma3",
2472            "type": "tuple",
2473            "internalType": "struct BN254.G1Point",
2474            "components": [
2475              {
2476                "name": "x",
2477                "type": "uint256",
2478                "internalType": "BN254.BaseField"
2479              },
2480              {
2481                "name": "y",
2482                "type": "uint256",
2483                "internalType": "BN254.BaseField"
2484              }
2485            ]
2486          },
2487          {
2488            "name": "sigma4",
2489            "type": "tuple",
2490            "internalType": "struct BN254.G1Point",
2491            "components": [
2492              {
2493                "name": "x",
2494                "type": "uint256",
2495                "internalType": "BN254.BaseField"
2496              },
2497              {
2498                "name": "y",
2499                "type": "uint256",
2500                "internalType": "BN254.BaseField"
2501              }
2502            ]
2503          },
2504          {
2505            "name": "q1",
2506            "type": "tuple",
2507            "internalType": "struct BN254.G1Point",
2508            "components": [
2509              {
2510                "name": "x",
2511                "type": "uint256",
2512                "internalType": "BN254.BaseField"
2513              },
2514              {
2515                "name": "y",
2516                "type": "uint256",
2517                "internalType": "BN254.BaseField"
2518              }
2519            ]
2520          },
2521          {
2522            "name": "q2",
2523            "type": "tuple",
2524            "internalType": "struct BN254.G1Point",
2525            "components": [
2526              {
2527                "name": "x",
2528                "type": "uint256",
2529                "internalType": "BN254.BaseField"
2530              },
2531              {
2532                "name": "y",
2533                "type": "uint256",
2534                "internalType": "BN254.BaseField"
2535              }
2536            ]
2537          },
2538          {
2539            "name": "q3",
2540            "type": "tuple",
2541            "internalType": "struct BN254.G1Point",
2542            "components": [
2543              {
2544                "name": "x",
2545                "type": "uint256",
2546                "internalType": "BN254.BaseField"
2547              },
2548              {
2549                "name": "y",
2550                "type": "uint256",
2551                "internalType": "BN254.BaseField"
2552              }
2553            ]
2554          },
2555          {
2556            "name": "q4",
2557            "type": "tuple",
2558            "internalType": "struct BN254.G1Point",
2559            "components": [
2560              {
2561                "name": "x",
2562                "type": "uint256",
2563                "internalType": "BN254.BaseField"
2564              },
2565              {
2566                "name": "y",
2567                "type": "uint256",
2568                "internalType": "BN254.BaseField"
2569              }
2570            ]
2571          },
2572          {
2573            "name": "qM12",
2574            "type": "tuple",
2575            "internalType": "struct BN254.G1Point",
2576            "components": [
2577              {
2578                "name": "x",
2579                "type": "uint256",
2580                "internalType": "BN254.BaseField"
2581              },
2582              {
2583                "name": "y",
2584                "type": "uint256",
2585                "internalType": "BN254.BaseField"
2586              }
2587            ]
2588          },
2589          {
2590            "name": "qM34",
2591            "type": "tuple",
2592            "internalType": "struct BN254.G1Point",
2593            "components": [
2594              {
2595                "name": "x",
2596                "type": "uint256",
2597                "internalType": "BN254.BaseField"
2598              },
2599              {
2600                "name": "y",
2601                "type": "uint256",
2602                "internalType": "BN254.BaseField"
2603              }
2604            ]
2605          },
2606          {
2607            "name": "qO",
2608            "type": "tuple",
2609            "internalType": "struct BN254.G1Point",
2610            "components": [
2611              {
2612                "name": "x",
2613                "type": "uint256",
2614                "internalType": "BN254.BaseField"
2615              },
2616              {
2617                "name": "y",
2618                "type": "uint256",
2619                "internalType": "BN254.BaseField"
2620              }
2621            ]
2622          },
2623          {
2624            "name": "qC",
2625            "type": "tuple",
2626            "internalType": "struct BN254.G1Point",
2627            "components": [
2628              {
2629                "name": "x",
2630                "type": "uint256",
2631                "internalType": "BN254.BaseField"
2632              },
2633              {
2634                "name": "y",
2635                "type": "uint256",
2636                "internalType": "BN254.BaseField"
2637              }
2638            ]
2639          },
2640          {
2641            "name": "qH1",
2642            "type": "tuple",
2643            "internalType": "struct BN254.G1Point",
2644            "components": [
2645              {
2646                "name": "x",
2647                "type": "uint256",
2648                "internalType": "BN254.BaseField"
2649              },
2650              {
2651                "name": "y",
2652                "type": "uint256",
2653                "internalType": "BN254.BaseField"
2654              }
2655            ]
2656          },
2657          {
2658            "name": "qH2",
2659            "type": "tuple",
2660            "internalType": "struct BN254.G1Point",
2661            "components": [
2662              {
2663                "name": "x",
2664                "type": "uint256",
2665                "internalType": "BN254.BaseField"
2666              },
2667              {
2668                "name": "y",
2669                "type": "uint256",
2670                "internalType": "BN254.BaseField"
2671              }
2672            ]
2673          },
2674          {
2675            "name": "qH3",
2676            "type": "tuple",
2677            "internalType": "struct BN254.G1Point",
2678            "components": [
2679              {
2680                "name": "x",
2681                "type": "uint256",
2682                "internalType": "BN254.BaseField"
2683              },
2684              {
2685                "name": "y",
2686                "type": "uint256",
2687                "internalType": "BN254.BaseField"
2688              }
2689            ]
2690          },
2691          {
2692            "name": "qH4",
2693            "type": "tuple",
2694            "internalType": "struct BN254.G1Point",
2695            "components": [
2696              {
2697                "name": "x",
2698                "type": "uint256",
2699                "internalType": "BN254.BaseField"
2700              },
2701              {
2702                "name": "y",
2703                "type": "uint256",
2704                "internalType": "BN254.BaseField"
2705              }
2706            ]
2707          },
2708          {
2709            "name": "qEcc",
2710            "type": "tuple",
2711            "internalType": "struct BN254.G1Point",
2712            "components": [
2713              {
2714                "name": "x",
2715                "type": "uint256",
2716                "internalType": "BN254.BaseField"
2717              },
2718              {
2719                "name": "y",
2720                "type": "uint256",
2721                "internalType": "BN254.BaseField"
2722              }
2723            ]
2724          },
2725          {
2726            "name": "g2LSB",
2727            "type": "bytes32",
2728            "internalType": "bytes32"
2729          },
2730          {
2731            "name": "g2MSB",
2732            "type": "bytes32",
2733            "internalType": "bytes32"
2734          }
2735        ]
2736      }
2737    ],
2738    "stateMutability": "pure"
2739  },
2740  {
2741    "type": "function",
2742    "name": "currentBlockNumber",
2743    "inputs": [],
2744    "outputs": [
2745      {
2746        "name": "",
2747        "type": "uint256",
2748        "internalType": "uint256"
2749      }
2750    ],
2751    "stateMutability": "view"
2752  },
2753  {
2754    "type": "function",
2755    "name": "disablePermissionedProverMode",
2756    "inputs": [],
2757    "outputs": [],
2758    "stateMutability": "nonpayable"
2759  },
2760  {
2761    "type": "function",
2762    "name": "finalizedState",
2763    "inputs": [],
2764    "outputs": [
2765      {
2766        "name": "viewNum",
2767        "type": "uint64",
2768        "internalType": "uint64"
2769      },
2770      {
2771        "name": "blockHeight",
2772        "type": "uint64",
2773        "internalType": "uint64"
2774      },
2775      {
2776        "name": "blockCommRoot",
2777        "type": "uint256",
2778        "internalType": "BN254.ScalarField"
2779      }
2780    ],
2781    "stateMutability": "view"
2782  },
2783  {
2784    "type": "function",
2785    "name": "genesisStakeTableState",
2786    "inputs": [],
2787    "outputs": [
2788      {
2789        "name": "threshold",
2790        "type": "uint256",
2791        "internalType": "uint256"
2792      },
2793      {
2794        "name": "blsKeyComm",
2795        "type": "uint256",
2796        "internalType": "BN254.ScalarField"
2797      },
2798      {
2799        "name": "schnorrKeyComm",
2800        "type": "uint256",
2801        "internalType": "BN254.ScalarField"
2802      },
2803      {
2804        "name": "amountComm",
2805        "type": "uint256",
2806        "internalType": "BN254.ScalarField"
2807      }
2808    ],
2809    "stateMutability": "view"
2810  },
2811  {
2812    "type": "function",
2813    "name": "genesisState",
2814    "inputs": [],
2815    "outputs": [
2816      {
2817        "name": "viewNum",
2818        "type": "uint64",
2819        "internalType": "uint64"
2820      },
2821      {
2822        "name": "blockHeight",
2823        "type": "uint64",
2824        "internalType": "uint64"
2825      },
2826      {
2827        "name": "blockCommRoot",
2828        "type": "uint256",
2829        "internalType": "BN254.ScalarField"
2830      }
2831    ],
2832    "stateMutability": "view"
2833  },
2834  {
2835    "type": "function",
2836    "name": "getHotShotCommitment",
2837    "inputs": [
2838      {
2839        "name": "hotShotBlockHeight",
2840        "type": "uint256",
2841        "internalType": "uint256"
2842      }
2843    ],
2844    "outputs": [
2845      {
2846        "name": "hotShotBlockCommRoot",
2847        "type": "uint256",
2848        "internalType": "BN254.ScalarField"
2849      },
2850      {
2851        "name": "hotshotBlockHeight",
2852        "type": "uint64",
2853        "internalType": "uint64"
2854      }
2855    ],
2856    "stateMutability": "view"
2857  },
2858  {
2859    "type": "function",
2860    "name": "getStateHistoryCount",
2861    "inputs": [],
2862    "outputs": [
2863      {
2864        "name": "",
2865        "type": "uint256",
2866        "internalType": "uint256"
2867      }
2868    ],
2869    "stateMutability": "view"
2870  },
2871  {
2872    "type": "function",
2873    "name": "getVersion",
2874    "inputs": [],
2875    "outputs": [
2876      {
2877        "name": "majorVersion",
2878        "type": "uint8",
2879        "internalType": "uint8"
2880      },
2881      {
2882        "name": "minorVersion",
2883        "type": "uint8",
2884        "internalType": "uint8"
2885      },
2886      {
2887        "name": "patchVersion",
2888        "type": "uint8",
2889        "internalType": "uint8"
2890      }
2891    ],
2892    "stateMutability": "pure"
2893  },
2894  {
2895    "type": "function",
2896    "name": "initialize",
2897    "inputs": [
2898      {
2899        "name": "_genesis",
2900        "type": "tuple",
2901        "internalType": "struct LightClient.LightClientState",
2902        "components": [
2903          {
2904            "name": "viewNum",
2905            "type": "uint64",
2906            "internalType": "uint64"
2907          },
2908          {
2909            "name": "blockHeight",
2910            "type": "uint64",
2911            "internalType": "uint64"
2912          },
2913          {
2914            "name": "blockCommRoot",
2915            "type": "uint256",
2916            "internalType": "BN254.ScalarField"
2917          }
2918        ]
2919      },
2920      {
2921        "name": "_genesisStakeTableState",
2922        "type": "tuple",
2923        "internalType": "struct LightClient.StakeTableState",
2924        "components": [
2925          {
2926            "name": "threshold",
2927            "type": "uint256",
2928            "internalType": "uint256"
2929          },
2930          {
2931            "name": "blsKeyComm",
2932            "type": "uint256",
2933            "internalType": "BN254.ScalarField"
2934          },
2935          {
2936            "name": "schnorrKeyComm",
2937            "type": "uint256",
2938            "internalType": "BN254.ScalarField"
2939          },
2940          {
2941            "name": "amountComm",
2942            "type": "uint256",
2943            "internalType": "BN254.ScalarField"
2944          }
2945        ]
2946      },
2947      {
2948        "name": "_stateHistoryRetentionPeriod",
2949        "type": "uint32",
2950        "internalType": "uint32"
2951      },
2952      {
2953        "name": "owner",
2954        "type": "address",
2955        "internalType": "address"
2956      }
2957    ],
2958    "outputs": [],
2959    "stateMutability": "nonpayable"
2960  },
2961  {
2962    "type": "function",
2963    "name": "isPermissionedProverEnabled",
2964    "inputs": [],
2965    "outputs": [
2966      {
2967        "name": "",
2968        "type": "bool",
2969        "internalType": "bool"
2970      }
2971    ],
2972    "stateMutability": "view"
2973  },
2974  {
2975    "type": "function",
2976    "name": "lagOverEscapeHatchThreshold",
2977    "inputs": [
2978      {
2979        "name": "blockNumber",
2980        "type": "uint256",
2981        "internalType": "uint256"
2982      },
2983      {
2984        "name": "blockThreshold",
2985        "type": "uint256",
2986        "internalType": "uint256"
2987      }
2988    ],
2989    "outputs": [
2990      {
2991        "name": "",
2992        "type": "bool",
2993        "internalType": "bool"
2994      }
2995    ],
2996    "stateMutability": "view"
2997  },
2998  {
2999    "type": "function",
3000    "name": "newFinalizedState",
3001    "inputs": [
3002      {
3003        "name": "newState",
3004        "type": "tuple",
3005        "internalType": "struct LightClient.LightClientState",
3006        "components": [
3007          {
3008            "name": "viewNum",
3009            "type": "uint64",
3010            "internalType": "uint64"
3011          },
3012          {
3013            "name": "blockHeight",
3014            "type": "uint64",
3015            "internalType": "uint64"
3016          },
3017          {
3018            "name": "blockCommRoot",
3019            "type": "uint256",
3020            "internalType": "BN254.ScalarField"
3021          }
3022        ]
3023      },
3024      {
3025        "name": "proof",
3026        "type": "tuple",
3027        "internalType": "struct IPlonkVerifier.PlonkProof",
3028        "components": [
3029          {
3030            "name": "wire0",
3031            "type": "tuple",
3032            "internalType": "struct BN254.G1Point",
3033            "components": [
3034              {
3035                "name": "x",
3036                "type": "uint256",
3037                "internalType": "BN254.BaseField"
3038              },
3039              {
3040                "name": "y",
3041                "type": "uint256",
3042                "internalType": "BN254.BaseField"
3043              }
3044            ]
3045          },
3046          {
3047            "name": "wire1",
3048            "type": "tuple",
3049            "internalType": "struct BN254.G1Point",
3050            "components": [
3051              {
3052                "name": "x",
3053                "type": "uint256",
3054                "internalType": "BN254.BaseField"
3055              },
3056              {
3057                "name": "y",
3058                "type": "uint256",
3059                "internalType": "BN254.BaseField"
3060              }
3061            ]
3062          },
3063          {
3064            "name": "wire2",
3065            "type": "tuple",
3066            "internalType": "struct BN254.G1Point",
3067            "components": [
3068              {
3069                "name": "x",
3070                "type": "uint256",
3071                "internalType": "BN254.BaseField"
3072              },
3073              {
3074                "name": "y",
3075                "type": "uint256",
3076                "internalType": "BN254.BaseField"
3077              }
3078            ]
3079          },
3080          {
3081            "name": "wire3",
3082            "type": "tuple",
3083            "internalType": "struct BN254.G1Point",
3084            "components": [
3085              {
3086                "name": "x",
3087                "type": "uint256",
3088                "internalType": "BN254.BaseField"
3089              },
3090              {
3091                "name": "y",
3092                "type": "uint256",
3093                "internalType": "BN254.BaseField"
3094              }
3095            ]
3096          },
3097          {
3098            "name": "wire4",
3099            "type": "tuple",
3100            "internalType": "struct BN254.G1Point",
3101            "components": [
3102              {
3103                "name": "x",
3104                "type": "uint256",
3105                "internalType": "BN254.BaseField"
3106              },
3107              {
3108                "name": "y",
3109                "type": "uint256",
3110                "internalType": "BN254.BaseField"
3111              }
3112            ]
3113          },
3114          {
3115            "name": "prodPerm",
3116            "type": "tuple",
3117            "internalType": "struct BN254.G1Point",
3118            "components": [
3119              {
3120                "name": "x",
3121                "type": "uint256",
3122                "internalType": "BN254.BaseField"
3123              },
3124              {
3125                "name": "y",
3126                "type": "uint256",
3127                "internalType": "BN254.BaseField"
3128              }
3129            ]
3130          },
3131          {
3132            "name": "split0",
3133            "type": "tuple",
3134            "internalType": "struct BN254.G1Point",
3135            "components": [
3136              {
3137                "name": "x",
3138                "type": "uint256",
3139                "internalType": "BN254.BaseField"
3140              },
3141              {
3142                "name": "y",
3143                "type": "uint256",
3144                "internalType": "BN254.BaseField"
3145              }
3146            ]
3147          },
3148          {
3149            "name": "split1",
3150            "type": "tuple",
3151            "internalType": "struct BN254.G1Point",
3152            "components": [
3153              {
3154                "name": "x",
3155                "type": "uint256",
3156                "internalType": "BN254.BaseField"
3157              },
3158              {
3159                "name": "y",
3160                "type": "uint256",
3161                "internalType": "BN254.BaseField"
3162              }
3163            ]
3164          },
3165          {
3166            "name": "split2",
3167            "type": "tuple",
3168            "internalType": "struct BN254.G1Point",
3169            "components": [
3170              {
3171                "name": "x",
3172                "type": "uint256",
3173                "internalType": "BN254.BaseField"
3174              },
3175              {
3176                "name": "y",
3177                "type": "uint256",
3178                "internalType": "BN254.BaseField"
3179              }
3180            ]
3181          },
3182          {
3183            "name": "split3",
3184            "type": "tuple",
3185            "internalType": "struct BN254.G1Point",
3186            "components": [
3187              {
3188                "name": "x",
3189                "type": "uint256",
3190                "internalType": "BN254.BaseField"
3191              },
3192              {
3193                "name": "y",
3194                "type": "uint256",
3195                "internalType": "BN254.BaseField"
3196              }
3197            ]
3198          },
3199          {
3200            "name": "split4",
3201            "type": "tuple",
3202            "internalType": "struct BN254.G1Point",
3203            "components": [
3204              {
3205                "name": "x",
3206                "type": "uint256",
3207                "internalType": "BN254.BaseField"
3208              },
3209              {
3210                "name": "y",
3211                "type": "uint256",
3212                "internalType": "BN254.BaseField"
3213              }
3214            ]
3215          },
3216          {
3217            "name": "zeta",
3218            "type": "tuple",
3219            "internalType": "struct BN254.G1Point",
3220            "components": [
3221              {
3222                "name": "x",
3223                "type": "uint256",
3224                "internalType": "BN254.BaseField"
3225              },
3226              {
3227                "name": "y",
3228                "type": "uint256",
3229                "internalType": "BN254.BaseField"
3230              }
3231            ]
3232          },
3233          {
3234            "name": "zetaOmega",
3235            "type": "tuple",
3236            "internalType": "struct BN254.G1Point",
3237            "components": [
3238              {
3239                "name": "x",
3240                "type": "uint256",
3241                "internalType": "BN254.BaseField"
3242              },
3243              {
3244                "name": "y",
3245                "type": "uint256",
3246                "internalType": "BN254.BaseField"
3247              }
3248            ]
3249          },
3250          {
3251            "name": "wireEval0",
3252            "type": "uint256",
3253            "internalType": "BN254.ScalarField"
3254          },
3255          {
3256            "name": "wireEval1",
3257            "type": "uint256",
3258            "internalType": "BN254.ScalarField"
3259          },
3260          {
3261            "name": "wireEval2",
3262            "type": "uint256",
3263            "internalType": "BN254.ScalarField"
3264          },
3265          {
3266            "name": "wireEval3",
3267            "type": "uint256",
3268            "internalType": "BN254.ScalarField"
3269          },
3270          {
3271            "name": "wireEval4",
3272            "type": "uint256",
3273            "internalType": "BN254.ScalarField"
3274          },
3275          {
3276            "name": "sigmaEval0",
3277            "type": "uint256",
3278            "internalType": "BN254.ScalarField"
3279          },
3280          {
3281            "name": "sigmaEval1",
3282            "type": "uint256",
3283            "internalType": "BN254.ScalarField"
3284          },
3285          {
3286            "name": "sigmaEval2",
3287            "type": "uint256",
3288            "internalType": "BN254.ScalarField"
3289          },
3290          {
3291            "name": "sigmaEval3",
3292            "type": "uint256",
3293            "internalType": "BN254.ScalarField"
3294          },
3295          {
3296            "name": "prodPermZetaOmegaEval",
3297            "type": "uint256",
3298            "internalType": "BN254.ScalarField"
3299          }
3300        ]
3301      }
3302    ],
3303    "outputs": [],
3304    "stateMutability": "nonpayable"
3305  },
3306  {
3307    "type": "function",
3308    "name": "owner",
3309    "inputs": [],
3310    "outputs": [
3311      {
3312        "name": "",
3313        "type": "address",
3314        "internalType": "address"
3315      }
3316    ],
3317    "stateMutability": "view"
3318  },
3319  {
3320    "type": "function",
3321    "name": "permissionedProver",
3322    "inputs": [],
3323    "outputs": [
3324      {
3325        "name": "",
3326        "type": "address",
3327        "internalType": "address"
3328      }
3329    ],
3330    "stateMutability": "view"
3331  },
3332  {
3333    "type": "function",
3334    "name": "proxiableUUID",
3335    "inputs": [],
3336    "outputs": [
3337      {
3338        "name": "",
3339        "type": "bytes32",
3340        "internalType": "bytes32"
3341      }
3342    ],
3343    "stateMutability": "view"
3344  },
3345  {
3346    "type": "function",
3347    "name": "renounceOwnership",
3348    "inputs": [],
3349    "outputs": [],
3350    "stateMutability": "nonpayable"
3351  },
3352  {
3353    "type": "function",
3354    "name": "setPermissionedProver",
3355    "inputs": [
3356      {
3357        "name": "prover",
3358        "type": "address",
3359        "internalType": "address"
3360      }
3361    ],
3362    "outputs": [],
3363    "stateMutability": "nonpayable"
3364  },
3365  {
3366    "type": "function",
3367    "name": "setstateHistoryRetentionPeriod",
3368    "inputs": [
3369      {
3370        "name": "historySeconds",
3371        "type": "uint32",
3372        "internalType": "uint32"
3373      }
3374    ],
3375    "outputs": [],
3376    "stateMutability": "nonpayable"
3377  },
3378  {
3379    "type": "function",
3380    "name": "stateHistoryCommitments",
3381    "inputs": [
3382      {
3383        "name": "",
3384        "type": "uint256",
3385        "internalType": "uint256"
3386      }
3387    ],
3388    "outputs": [
3389      {
3390        "name": "l1BlockHeight",
3391        "type": "uint64",
3392        "internalType": "uint64"
3393      },
3394      {
3395        "name": "l1BlockTimestamp",
3396        "type": "uint64",
3397        "internalType": "uint64"
3398      },
3399      {
3400        "name": "hotShotBlockHeight",
3401        "type": "uint64",
3402        "internalType": "uint64"
3403      },
3404      {
3405        "name": "hotShotBlockCommRoot",
3406        "type": "uint256",
3407        "internalType": "BN254.ScalarField"
3408      }
3409    ],
3410    "stateMutability": "view"
3411  },
3412  {
3413    "type": "function",
3414    "name": "stateHistoryFirstIndex",
3415    "inputs": [],
3416    "outputs": [
3417      {
3418        "name": "",
3419        "type": "uint64",
3420        "internalType": "uint64"
3421      }
3422    ],
3423    "stateMutability": "view"
3424  },
3425  {
3426    "type": "function",
3427    "name": "stateHistoryRetentionPeriod",
3428    "inputs": [],
3429    "outputs": [
3430      {
3431        "name": "",
3432        "type": "uint32",
3433        "internalType": "uint32"
3434      }
3435    ],
3436    "stateMutability": "view"
3437  },
3438  {
3439    "type": "function",
3440    "name": "transferOwnership",
3441    "inputs": [
3442      {
3443        "name": "newOwner",
3444        "type": "address",
3445        "internalType": "address"
3446      }
3447    ],
3448    "outputs": [],
3449    "stateMutability": "nonpayable"
3450  },
3451  {
3452    "type": "function",
3453    "name": "upgradeToAndCall",
3454    "inputs": [
3455      {
3456        "name": "newImplementation",
3457        "type": "address",
3458        "internalType": "address"
3459      },
3460      {
3461        "name": "data",
3462        "type": "bytes",
3463        "internalType": "bytes"
3464      }
3465    ],
3466    "outputs": [],
3467    "stateMutability": "payable"
3468  },
3469  {
3470    "type": "event",
3471    "name": "Initialized",
3472    "inputs": [
3473      {
3474        "name": "version",
3475        "type": "uint64",
3476        "indexed": false,
3477        "internalType": "uint64"
3478      }
3479    ],
3480    "anonymous": false
3481  },
3482  {
3483    "type": "event",
3484    "name": "NewState",
3485    "inputs": [
3486      {
3487        "name": "viewNum",
3488        "type": "uint64",
3489        "indexed": true,
3490        "internalType": "uint64"
3491      },
3492      {
3493        "name": "blockHeight",
3494        "type": "uint64",
3495        "indexed": true,
3496        "internalType": "uint64"
3497      },
3498      {
3499        "name": "blockCommRoot",
3500        "type": "uint256",
3501        "indexed": false,
3502        "internalType": "BN254.ScalarField"
3503      }
3504    ],
3505    "anonymous": false
3506  },
3507  {
3508    "type": "event",
3509    "name": "OwnershipTransferred",
3510    "inputs": [
3511      {
3512        "name": "previousOwner",
3513        "type": "address",
3514        "indexed": true,
3515        "internalType": "address"
3516      },
3517      {
3518        "name": "newOwner",
3519        "type": "address",
3520        "indexed": true,
3521        "internalType": "address"
3522      }
3523    ],
3524    "anonymous": false
3525  },
3526  {
3527    "type": "event",
3528    "name": "PermissionedProverNotRequired",
3529    "inputs": [],
3530    "anonymous": false
3531  },
3532  {
3533    "type": "event",
3534    "name": "PermissionedProverRequired",
3535    "inputs": [
3536      {
3537        "name": "permissionedProver",
3538        "type": "address",
3539        "indexed": false,
3540        "internalType": "address"
3541      }
3542    ],
3543    "anonymous": false
3544  },
3545  {
3546    "type": "event",
3547    "name": "Upgrade",
3548    "inputs": [
3549      {
3550        "name": "implementation",
3551        "type": "address",
3552        "indexed": false,
3553        "internalType": "address"
3554      }
3555    ],
3556    "anonymous": false
3557  },
3558  {
3559    "type": "event",
3560    "name": "Upgraded",
3561    "inputs": [
3562      {
3563        "name": "implementation",
3564        "type": "address",
3565        "indexed": true,
3566        "internalType": "address"
3567      }
3568    ],
3569    "anonymous": false
3570  },
3571  {
3572    "type": "error",
3573    "name": "AddressEmptyCode",
3574    "inputs": [
3575      {
3576        "name": "target",
3577        "type": "address",
3578        "internalType": "address"
3579      }
3580    ]
3581  },
3582  {
3583    "type": "error",
3584    "name": "ERC1967InvalidImplementation",
3585    "inputs": [
3586      {
3587        "name": "implementation",
3588        "type": "address",
3589        "internalType": "address"
3590      }
3591    ]
3592  },
3593  {
3594    "type": "error",
3595    "name": "ERC1967NonPayable",
3596    "inputs": []
3597  },
3598  {
3599    "type": "error",
3600    "name": "FailedInnerCall",
3601    "inputs": []
3602  },
3603  {
3604    "type": "error",
3605    "name": "InsufficientSnapshotHistory",
3606    "inputs": []
3607  },
3608  {
3609    "type": "error",
3610    "name": "InvalidAddress",
3611    "inputs": []
3612  },
3613  {
3614    "type": "error",
3615    "name": "InvalidArgs",
3616    "inputs": []
3617  },
3618  {
3619    "type": "error",
3620    "name": "InvalidHotShotBlockForCommitmentCheck",
3621    "inputs": []
3622  },
3623  {
3624    "type": "error",
3625    "name": "InvalidInitialization",
3626    "inputs": []
3627  },
3628  {
3629    "type": "error",
3630    "name": "InvalidMaxStateHistory",
3631    "inputs": []
3632  },
3633  {
3634    "type": "error",
3635    "name": "InvalidProof",
3636    "inputs": []
3637  },
3638  {
3639    "type": "error",
3640    "name": "InvalidScalar",
3641    "inputs": []
3642  },
3643  {
3644    "type": "error",
3645    "name": "NoChangeRequired",
3646    "inputs": []
3647  },
3648  {
3649    "type": "error",
3650    "name": "NotInitializing",
3651    "inputs": []
3652  },
3653  {
3654    "type": "error",
3655    "name": "OutdatedState",
3656    "inputs": []
3657  },
3658  {
3659    "type": "error",
3660    "name": "OwnableInvalidOwner",
3661    "inputs": [
3662      {
3663        "name": "owner",
3664        "type": "address",
3665        "internalType": "address"
3666      }
3667    ]
3668  },
3669  {
3670    "type": "error",
3671    "name": "OwnableUnauthorizedAccount",
3672    "inputs": [
3673      {
3674        "name": "account",
3675        "type": "address",
3676        "internalType": "address"
3677      }
3678    ]
3679  },
3680  {
3681    "type": "error",
3682    "name": "OwnershipCannotBeRenounced",
3683    "inputs": []
3684  },
3685  {
3686    "type": "error",
3687    "name": "ProverNotPermissioned",
3688    "inputs": []
3689  },
3690  {
3691    "type": "error",
3692    "name": "UUPSUnauthorizedCallContext",
3693    "inputs": []
3694  },
3695  {
3696    "type": "error",
3697    "name": "UUPSUnsupportedProxiableUUID",
3698    "inputs": [
3699      {
3700        "name": "slot",
3701        "type": "bytes32",
3702        "internalType": "bytes32"
3703      }
3704    ]
3705  },
3706  {
3707    "type": "error",
3708    "name": "WrongStakeTableUsed",
3709    "inputs": []
3710  }
3711]
3712```*/
3713#[allow(
3714    non_camel_case_types,
3715    non_snake_case,
3716    clippy::pub_underscore_fields,
3717    clippy::style,
3718    clippy::empty_structs_with_brackets
3719)]
3720pub mod LightClient {
3721    use super::*;
3722    use alloy::sol_types as alloy_sol_types;
3723    /// The creation / init bytecode of the contract.
3724    ///
3725    /// ```text
3726    ///0x60a060405230608052348015610013575f5ffd5b5061001c610021565b6100d3565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a00805468010000000000000000900460ff16156100715760405163f92ee8a960e01b815260040160405180910390fd5b80546001600160401b03908116146100d05780546001600160401b0319166001600160401b0390811782556040519081527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b50565b608051612b3d6100f95f395f81816116f40152818161171d015261189a0152612b3d5ff3fe608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3727    /// ```
3728    #[rustfmt::skip]
3729    #[allow(clippy::all)]
3730    pub static BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3731        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+=a\0\xF9_9_\x81\x81a\x16\xF4\x01R\x81\x81a\x17\x1D\x01Ra\x18\x9A\x01Ra+=_\xF3\xFE`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@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\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\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\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\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\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@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\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@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\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\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\x14\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x15\xE2\x83a*\xB9V[\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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@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\x06CV[\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(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x96\x82a\x1B3V[`@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\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_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\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\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\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[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$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\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(\x8D`@\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*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\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",
3732    );
3733    /// The runtime bytecode of the contract, as deployed on the network.
3734    ///
3735    /// ```text
3736    ///0x608060405260043610610161575f3560e01c8063715018a6116100cd5780639fdb54a711610087578063d24d933d11610062578063d24d933d1461051a578063e030330114610549578063f2fde38b14610568578063f9e50d1914610587575f5ffd5b80639fdb54a714610450578063ad3cb1cc146104a5578063c23b9e9e146104e2575f5ffd5b8063715018a61461035b578063826e41fc1461036f5780638584d23f1461039a5780638da5cb5b146103d657806396c1ca61146104125780639baa3cc914610431575f5ffd5b8063313df7b11161011e578063313df7b11461028c578063378ec23b146102c3578063426d3194146102df5780634f1ef2861461032057806352d1902d1461033357806369cc6a0414610347575f5ffd5b8063013fa5fc1461016557806302b592f3146101865780630d8e6e2c146101e357806312173c2c1461020e5780632063d4f71461022f5780632f79889d1461024e575b5f5ffd5b348015610170575f5ffd5b5061018461017f366004611f4d565b61059b565b005b348015610191575f5ffd5b506101a56101a0366004611f66565b61064e565b6040516101da94939291906001600160401b039485168152928416602084015292166040820152606081019190915260800190565b60405180910390f35b3480156101ee575f5ffd5b5060408051600181525f60208201819052918101919091526060016101da565b348015610219575f5ffd5b50610222610697565b6040516101da9190611f7d565b34801561023a575f5ffd5b506101846102493660046122b2565b6106ac565b348015610259575f5ffd5b5060085461027490600160c01b90046001600160401b031681565b6040516001600160401b0390911681526020016101da565b348015610297575f5ffd5b506008546102ab906001600160a01b031681565b6040516001600160a01b0390911681526020016101da565b3480156102ce575f5ffd5b50435b6040519081526020016101da565b3480156102ea575f5ffd5b505f546001546002546003546103009392919084565b6040805194855260208501939093529183015260608201526080016101da565b61018461032e366004612462565b610806565b34801561033e575f5ffd5b506102d1610825565b348015610352575f5ffd5b50610184610840565b348015610366575f5ffd5b506101846108ae565b34801561037a575f5ffd5b506008546001600160a01b031615155b60405190151581526020016101da565b3480156103a5575f5ffd5b506103b96103b4366004611f66565b6108cf565b604080519283526001600160401b039091166020830152016101da565b3480156103e1575f5ffd5b507f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b03166102ab565b34801561041d575f5ffd5b5061018461042c366004612518565b6109fa565b34801561043c575f5ffd5b5061018461044b366004612531565b610a83565b34801561045b575f5ffd5b5060065460075461047f916001600160401b0380821692600160401b909204169083565b604080516001600160401b039485168152939092166020840152908201526060016101da565b3480156104b0575f5ffd5b506104d5604051806040016040528060058152602001640352e302e360dc1b81525081565b6040516101da91906125da565b3480156104ed575f5ffd5b5060085461050590600160a01b900463ffffffff1681565b60405163ffffffff90911681526020016101da565b348015610525575f5ffd5b5060045460055461047f916001600160401b0380821692600160401b909204169083565b348015610554575f5ffd5b5061038a61056336600461260f565b610ba5565b348015610573575f5ffd5b50610184610582366004611f4d565b610cff565b348015610592575f5ffd5b506009546102d1565b6105a3610d41565b6001600160a01b0381166105ca5760405163e6c4247b60e01b815260040160405180910390fd5b6008546001600160a01b03908116908216036105f95760405163a863aec960e01b815260040160405180910390fd5b600880546001600160a01b0319166001600160a01b0383169081179091556040519081527f8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072906020015b60405180910390a150565b6009818154811061065d575f80fd5b5f918252602090912060029091020180546001909101546001600160401b038083169350600160401b8304811692600160801b9004169084565b61069f611caf565b6106a7610d9c565b905090565b6008546001600160a01b0316151580156106d157506008546001600160a01b03163314155b156106ef576040516301474c8f60e71b815260040160405180910390fd5b60065482516001600160401b039182169116111580610728575060065460208301516001600160401b03600160401b9092048216911611155b156107465760405163051c46ef60e01b815260040160405180910390fd5b61075382604001516113cb565b61075d828261140c565b81516006805460208501516001600160401b03908116600160401b026001600160801b031990921693169290921791909117905560408201516007556107aa6107a34390565b4284611500565b81602001516001600160401b0316825f01516001600160401b03167fa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae684604001516040516107fa91815260200190565b60405180910390a35050565b61080e6116e9565b6108178261178d565b61082182826117ce565b5050565b5f61082e61188f565b505f516020612b115f395f51905f5290565b610848610d41565b6008546001600160a01b03161561089357600880546001600160a01b03191690556040517f9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450905f90a1565b60405163a863aec960e01b815260040160405180910390fd5b565b6108b6610d41565b6040516317d5c96560e11b815260040160405180910390fd5b600980545f918291906108e3600183612643565b815481106108f3576108f3612656565b5f918252602090912060029091020154600160801b90046001600160401b0316841061093257604051631856a49960e21b815260040160405180910390fd5b600854600160c01b90046001600160401b03165b818110156109f357846009828154811061096257610962612656565b5f918252602090912060029091020154600160801b90046001600160401b031611156109eb576009818154811061099b5761099b612656565b905f5260205f20906002020160010154600982815481106109be576109be612656565b905f5260205f2090600202015f0160109054906101000a90046001600160401b0316935093505050915091565b600101610946565b5050915091565b610a02610d41565b610e108163ffffffff161080610a2157506301e133808163ffffffff16115b80610a3f575060085463ffffffff600160a01b909104811690821611155b15610a5d576040516307a5077760e51b815260040160405180910390fd5b6008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a008054600160401b810460ff1615906001600160401b03165f81158015610ac75750825b90505f826001600160401b03166001148015610ae25750303b155b905081158015610af0575080155b15610b0e5760405163f92ee8a960e01b815260040160405180910390fd5b845467ffffffffffffffff191660011785558315610b3857845460ff60401b1916600160401b1785555b610b41866118d8565b610b496118e9565b610b548989896118f1565b8315610b9a57845460ff60401b19168555604051600181527fc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d29060200160405180910390a15b505050505050505050565b6009545f9043841180610bb6575080155b80610c005750600854600980549091600160c01b90046001600160401b0316908110610be457610be4612656565b5f9182526020909120600290910201546001600160401b031684105b15610c1e5760405163b0b4387760e01b815260040160405180910390fd5b5f8080610c2c600185612643565b90505b81610cc857600854600160c01b90046001600160401b03168110610cc8578660098281548110610c6157610c61612656565b5f9182526020909120600290910201546001600160401b031611610cb6576001915060098181548110610c9657610c96612656565b5f9182526020909120600290910201546001600160401b03169250610cc8565b80610cc08161266a565b915050610c2f565b81610ce65760405163b0b4387760e01b815260040160405180910390fd5b85610cf18489612643565b119450505050505b92915050565b610d07610d41565b6001600160a01b038116610d3557604051631e4fbdf760e01b81525f60048201526024015b60405180910390fd5b610d3e81611a1d565b50565b33610d737f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c199300546001600160a01b031690565b6001600160a01b0316146108ac5760405163118cdaa760e01b8152336004820152602401610d2c565b610da4611caf565b621000008152600760208201527f23783d0e9777b7af65fbf849da7edb75e74b1eaf503e025d7f2f7f80991befa26040820151527f2a4e2fe8adfa53f468525582d5184c4c70bbdb946c21f216418a9879705e54a76020604083015101527f0624b2c1e77f24afceaf39451743b9fa80d5853fca7ba00389c675650774009b6060820151527f250d7719e94ca2df00dfe327938f5a8d4d837779b99837ca777a53d39127b1796020606083015101527f0dc09515152eaea66d0db2f571cc995e369d26fe647394f10db5398c917519dc6080820151527f1273144d6cec2c4a68b24a149379c0f5592bb7fbddbe32fa171919950ca404cb6020608083015101527f119521bb68caec216e2f05eeb466fb3abfe1f39baf7fe7cb392ea057b6a2d9bf60a0820151527f2d52adeaba8045e53ab526fe9982d0ea452def6b3ea0253d27a19ef3b46e8428602060a083015101527f16c3b5b217d302975a920d13374524d7a52e4a50fd7fb930842271ebf4a84efd60c0820151527f200788916b907b196972bde304318e885a2521514b2db5e4a11899c51204f089602060c083015101527f1127581afe753defca9aef12e7332db9978a200b1699ce3888c0f3aea6111dc360e0820151527f0881e13f00723be1a04872ed02b2d078c31e80feaf27724e262ce97c2cb0bb1d602060e083015101527f1482a3a6bb91d6483d153683e2404f2f5546e0e895530fdf132091498406e3de610100820151527efa52db3d52d905ead1248102f3a80a43a90d8400c68f60a62c543c417b2f4b602061010083015101527f0a57dadd4a55199525ac6ac6fabc87a4cccfdc98142bcef9dbf47de00ecc5164610120820151527f18d95abd9b8e12c36936aa218cfff582548a6bbff25c338c2006eaeb1fe5b696602061012083015101527f2bc40e91dd169b8bc143a02952a1b6c6e627bfeb7a2bbe5078e14123f3c54c1c610140820151527f108d65a20c579b6d9883275eb6889fc3f5fc79735ca9f611a13b67daa2fbc8d0602061014083015101527f21bc1f86d0608e5f0626b467ee6f8282b619223f60a7acb0fc63ba7bdaf783be610160820151527f05ef3282f8eef01515fb9a8a7d6ca06b8b007d1d512403efb268fb03ce5f09e9602061016083015101527f2cab66c1cb5a83869e73ac34fbe467486999babd541d9010ee9a804806eee4ef610180820151527f2db1982419c5a4a17593acff9535fa967683d75c8aec01319b64b84aada2ad84602061018083015101527f2c38667c6c7eb868bdd30c34dd3f4b84d9b9b1a27d7867b364c8b7831423e9086101a0820151527f2b2cb4044dd51165c48138219d51cf8d1689f91ed3eeefead6e055eb488a2ce260206101a083015101527f2d48e54703011df2c74a14dafde3af4fd83ec71875d8ddc3554658640cc955016101c0820151527f243a99d80d32eb5408b59d5b08302bede070d3fb0a8efe2f2262f865bffb4d0d60206101c083015101527f0455d2325bf6269a66f07d838f55f36947a3cd9b87edd8480bced95cbb45cc116101e0820151527f0f66d9085a6ed60b838179987e240992bff4c0516ccf6ccde4a1ca94ce8b986460206101e083015101527f2bac0d23c8585d1487ec611b5effc97e5852fea43a7cba36ccdd2c207931f394610200820151527f1860b54e01a06aea5adb4b13bf5baebab92b736807a3a89ff2040992b06ee6ec602061020083015101527f0c0bfa1c2fc6f8ed01233d5168db1e1dfe725504f032f669f50a92ae77c72906610220820151527f0d741e124c7d1069b8a400cbcdcfd90128a533901ad4de1e037fe72984dc34cf602061022083015101527f01cfed30085c9efce04668205794aa39b1a8ee591234b4c77a22f8c26d899e05610240820151527f2ab68ac82d36cedb647d14a5b0035e8c9a0be84780b7bae1133a27a880966ed1602061024083015101527f072e1d50f8b5cf8d574b3847276477d95bbd5116351000841f728da44f4043b5610260820151527f23f8ea6eacd0876d57220f57eabacbe76a2323411663731a251d5dca36f1b59f602061026083015101527fb0838893ec1f237e8b07323b0744599f4e97b598b3b589bcc2bc37b8d5c418016102808201527fc18393c0fa30fe4e8b038e357ad851eae8de9107584effe7c7f1f651b2010e266102a082015290565b7f30644e72e131a029b85045b68181585d2833e84879b9709143e1f593f00000018110806108215760405163016c173360e21b815260040160405180910390fd5b5f611415610697565b905061141f611f14565b83516001600160401b0390811682526020850151168160016020020152604084810151828201526001546060830152600254608083015260035460a08301525f5460c08301525163ce537a7760e01b815273ffffffffffffffffffffffffffffffffffffffff9063ce537a779061149e9085908590889060040161285b565b602060405180830381865af41580156114b9573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114dd9190612a7b565b6114fa576040516309bde33960e01b815260040160405180910390fd5b50505050565b60095415801590611575575060085460098054600160a01b830463ffffffff1692600160c01b90046001600160401b031690811061154057611540612656565b5f91825260209091206002909102015461156a90600160401b90046001600160401b031684612a9a565b6001600160401b0316115b1561160857600854600980549091600160c01b90046001600160401b03169081106115a2576115a2612656565b5f9182526020822060029091020180546001600160c01b03191681556001015560088054600160c01b90046001600160401b03169060186115e283612ab9565b91906101000a8154816001600160401b0302191690836001600160401b03160217905550505b604080516080810182526001600160401b03948516815292841660208085019182528301518516848301908152929091015160608401908152600980546001810182555f91909152935160029094027f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af81018054935194518716600160801b0267ffffffffffffffff60801b19958816600160401b026001600160801b03199095169690971695909517929092179290921693909317909155517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090910155565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016148061176f57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166117635f516020612b115f395f51905f52546001600160a01b031690565b6001600160a01b031614155b156108ac5760405163703e46dd60e11b815260040160405180910390fd5b611795610d41565b6040516001600160a01b03821681527ff78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d90602001610643565b816001600160a01b03166352d1902d6040518163ffffffff1660e01b8152600401602060405180830381865afa925050508015611828575060408051601f3d908101601f1916820190925261182591810190612ae3565b60015b61185057604051634c9c8ce360e01b81526001600160a01b0383166004820152602401610d2c565b5f516020612b115f395f51905f52811461188057604051632a87526960e21b815260048101829052602401610d2c565b61188a8383611a8d565b505050565b306001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146108ac5760405163703e46dd60e11b815260040160405180910390fd5b6118e0611ae2565b610d3e81611b2b565b6108ac611ae2565b82516001600160401b0316151580611915575060208301516001600160401b031615155b8061192257506020820151155b8061192f57506040820151155b8061193c57506060820151155b8061194657508151155b806119585750610e108163ffffffff16105b8061196c57506301e133808163ffffffff16115b1561198a576040516350dd03f760e11b815260040160405180910390fd5b8251600480546020808701516001600160401b03908116600160401b026001600160801b0319938416919095169081178517909355604096870151600581905586515f5590860151600155958501516002556060909401516003556006805490941617179091556007919091556008805463ffffffff909216600160a01b0263ffffffff60a01b19909216919091179055565b7f9016d09d72d40fdae2fd8ceac6b6234c7706214fd39c1cd1e609a0528c19930080546001600160a01b031981166001600160a01b03848116918217845560405192169182907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0905f90a3505050565b611a9682611b33565b6040516001600160a01b038316907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b905f90a2805115611ada5761188a8282611b96565b610821611c08565b7ff0c57e16840df040f15088dc2f81fe391c3923bec73e23a9662efc9c229c6a0054600160401b900460ff166108ac57604051631afcd79f60e31b815260040160405180910390fd5b610d07611ae2565b806001600160a01b03163b5f03611b6857604051634c9c8ce360e01b81526001600160a01b0382166004820152602401610d2c565b5f516020612b115f395f51905f5280546001600160a01b0319166001600160a01b0392909216919091179055565b60605f5f846001600160a01b031684604051611bb29190612afa565b5f60405180830381855af49150503d805f8114611bea576040519150601f19603f3d011682016040523d82523d5f602084013e611bef565b606091505b5091509150611bff858383611c27565b95945050505050565b34156108ac5760405163b398979f60e01b815260040160405180910390fd5b606082611c3c57611c3782611c86565b611c7f565b8151158015611c5357506001600160a01b0384163b155b15611c7c57604051639996b31560e01b81526001600160a01b0385166004820152602401610d2c565b50805b9392505050565b805115611c965780518082602001fd5b604051630a12f52160e11b815260040160405180910390fd5b604051806102c001604052805f81526020015f8152602001611ce260405180604001604052805f81526020015f81525090565b8152602001611d0260405180604001604052805f81526020015f81525090565b8152602001611d2260405180604001604052805f81526020015f81525090565b8152602001611d4260405180604001604052805f81526020015f81525090565b8152602001611d6260405180604001604052805f81526020015f81525090565b8152602001611d8260405180604001604052805f81526020015f81525090565b8152602001611da260405180604001604052805f81526020015f81525090565b8152602001611dc260405180604001604052805f81526020015f81525090565b8152602001611de260405180604001604052805f81526020015f81525090565b8152602001611e0260405180604001604052805f81526020015f81525090565b8152602001611e2260405180604001604052805f81526020015f81525090565b8152602001611e4260405180604001604052805f81526020015f81525090565b8152602001611e6260405180604001604052805f81526020015f81525090565b8152602001611e8260405180604001604052805f81526020015f81525090565b8152602001611ea260405180604001604052805f81526020015f81525090565b8152602001611ec260405180604001604052805f81526020015f81525090565b8152602001611ee260405180604001604052805f81526020015f81525090565b8152602001611f0260405180604001604052805f81526020015f81525090565b81526020015f81526020015f81525090565b6040518060e001604052806007906020820280368337509192915050565b80356001600160a01b0381168114611f48575f5ffd5b919050565b5f60208284031215611f5d575f5ffd5b611c7f82611f32565b5f60208284031215611f76575f5ffd5b5035919050565b5f6105008201905082518252602083015160208301526040830151611faf604084018280518252602090810151910152565b50606083015180516080840152602081015160a0840152506080830151805160c0840152602081015160e08401525060a0830151805161010084015260208101516101208401525060c0830151805161014084015260208101516101608401525060e0830151805161018084015260208101516101a08401525061010083015180516101c084015260208101516101e08401525061012083015180516102008401526020810151610220840152506101408301518051610240840152602081015161026084015250610160830151805161028084015260208101516102a08401525061018083015180516102c084015260208101516102e0840152506101a083015180516103008401526020810151610320840152506101c083015180516103408401526020810151610360840152506101e0830151805161038084015260208101516103a08401525061020083015180516103c084015260208101516103e08401525061022083015180516104008401526020810151610420840152506102408301518051610440840152602081015161046084015250610260830151805161048084015260208101516104a0840152506102808301516104c08301526102a0909201516104e09091015290565b634e487b7160e01b5f52604160045260245ffd5b6040516102e081016001600160401b03811182821017156121b5576121b561217e565b60405290565b604051601f8201601f191681016001600160401b03811182821017156121e3576121e361217e565b604052919050565b80356001600160401b0381168114611f48575f5ffd5b5f60608284031215612211575f5ffd5b604051606081016001600160401b03811182821017156122335761223361217e565b604052905080612242836121eb565b8152612250602084016121eb565b6020820152604092830135920191909152919050565b5f60408284031215612276575f5ffd5b604080519081016001600160401b03811182821017156122985761229861217e565b604052823581526020928301359281019290925250919050565b5f5f8284036104e08112156122c5575f5ffd5b6122cf8585612201565b9250610480605f19820112156122e3575f5ffd5b506122ec612192565b6122f98560608601612266565b81526123088560a08601612266565b602082015261231a8560e08601612266565b604082015261232d856101208601612266565b6060820152612340856101608601612266565b6080820152612353856101a08601612266565b60a0820152612366856101e08601612266565b60c0820152612379856102208601612266565b60e082015261238c856102608601612266565b6101008201526123a0856102a08601612266565b6101208201526123b4856102e08601612266565b6101408201526123c8856103208601612266565b6101608201526123dc856103608601612266565b6101808201526103a08401356101a08201526103c08401356101c08201526103e08401356101e08201526104008401356102008201526104208401356102208201526104408401356102408201526104608401356102608201526104808401356102808201526104a08401356102a08201526104c0909301356102c08401525092909150565b5f5f60408385031215612473575f5ffd5b61247c83611f32565b915060208301356001600160401b03811115612496575f5ffd5b8301601f810185136124a6575f5ffd5b80356001600160401b038111156124bf576124bf61217e565b6124d2601f8201601f19166020016121bb565b8181528660208385010111156124e6575f5ffd5b816020840160208301375f602083830101528093505050509250929050565b803563ffffffff81168114611f48575f5ffd5b5f60208284031215612528575f5ffd5b611c7f82612505565b5f5f5f5f848603610120811215612546575f5ffd5b6125508787612201565b94506080605f1982011215612563575f5ffd5b50604051608081016001600160401b03811182821017156125865761258661217e565b604090815260608781013583526080880135602084015260a08801359183019190915260c08701359082015292506125c060e08601612505565b91506125cf6101008601611f32565b905092959194509250565b602081525f82518060208401528060208501604085015e5f604082850101526040601f19601f83011684010191505092915050565b5f5f60408385031215612620575f5ffd5b50508035926020909101359150565b634e487b7160e01b5f52601160045260245ffd5b81810381811115610cf957610cf961262f565b634e487b7160e01b5f52603260045260245ffd5b5f816126785761267861262f565b505f190190565b805f5b60078110156114fa578151845260209384019390910190600101612682565b6126b682825180518252602090810151910152565b6020818101518051604085015290810151606084015250604081015180516080840152602081015160a0840152506060810151805160c0840152602081015160e0840152506080810151805161010084015260208101516101208401525060a0810151805161014084015260208101516101608401525060c0810151805161018084015260208101516101a08401525060e081015180516101c084015260208101516101e08401525061010081015180516102008401526020810151610220840152506101208101518051610240840152602081015161026084015250610140810151805161028084015260208101516102a08401525061016081015180516102c084015260208101516102e08401525061018081015180516103008401526020810151610320840152506101a08101516103408301526101c08101516103608301526101e08101516103808301526102008101516103a08301526102208101516103c08301526102408101516103e08301526102608101516104008301526102808101516104208301526102a08101516104408301526102c0015161046090910152565b5f610a60820190508451825260208501516020830152604085015161288d604084018280518252602090810151910152565b50606085015180516080840152602081015160a0840152506080850151805160c0840152602081015160e08401525060a0850151805161010084015260208101516101208401525060c0850151805161014084015260208101516101608401525060e0850151805161018084015260208101516101a08401525061010085015180516101c084015260208101516101e08401525061012085015180516102008401526020810151610220840152506101408501518051610240840152602081015161026084015250610160850151805161028084015260208101516102a08401525061018085015180516102c084015260208101516102e0840152506101a085015180516103008401526020810151610320840152506101c085015180516103408401526020810151610360840152506101e0850151805161038084015260208101516103a08401525061020085015180516103c084015260208101516103e08401525061022085015180516104008401526020810151610420840152506102408501518051610440840152602081015161046084015250610260850151805161048084015260208101516104a0840152506102808501516104c08301526102a08501516104e0830152612a6561050083018561267f565b612a736105e08301846126a1565b949350505050565b5f60208284031215612a8b575f5ffd5b81518015158114611c7f575f5ffd5b6001600160401b038281168282160390811115610cf957610cf961262f565b5f6001600160401b0382166001600160401b038103612ada57612ada61262f565b60010192915050565b5f60208284031215612af3575f5ffd5b5051919050565b5f82518060208501845e5f92019182525091905056fe360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbca164736f6c634300081c000a
3737    /// ```
3738    #[rustfmt::skip]
3739    #[allow(clippy::all)]
3740    pub static DEPLOYED_BYTECODE: alloy_sol_types::private::Bytes = alloy_sol_types::private::Bytes::from_static(
3741        b"`\x80`@R`\x046\x10a\x01aW_5`\xE0\x1C\x80cqP\x18\xA6\x11a\0\xCDW\x80c\x9F\xDBT\xA7\x11a\0\x87W\x80c\xD2M\x93=\x11a\0bW\x80c\xD2M\x93=\x14a\x05\x1AW\x80c\xE003\x01\x14a\x05IW\x80c\xF2\xFD\xE3\x8B\x14a\x05hW\x80c\xF9\xE5\r\x19\x14a\x05\x87W__\xFD[\x80c\x9F\xDBT\xA7\x14a\x04PW\x80c\xAD<\xB1\xCC\x14a\x04\xA5W\x80c\xC2;\x9E\x9E\x14a\x04\xE2W__\xFD[\x80cqP\x18\xA6\x14a\x03[W\x80c\x82nA\xFC\x14a\x03oW\x80c\x85\x84\xD2?\x14a\x03\x9AW\x80c\x8D\xA5\xCB[\x14a\x03\xD6W\x80c\x96\xC1\xCAa\x14a\x04\x12W\x80c\x9B\xAA<\xC9\x14a\x041W__\xFD[\x80c1=\xF7\xB1\x11a\x01\x1EW\x80c1=\xF7\xB1\x14a\x02\x8CW\x80c7\x8E\xC2;\x14a\x02\xC3W\x80cBm1\x94\x14a\x02\xDFW\x80cO\x1E\xF2\x86\x14a\x03 W\x80cR\xD1\x90-\x14a\x033W\x80ci\xCCj\x04\x14a\x03GW__\xFD[\x80c\x01?\xA5\xFC\x14a\x01eW\x80c\x02\xB5\x92\xF3\x14a\x01\x86W\x80c\r\x8En,\x14a\x01\xE3W\x80c\x12\x17<,\x14a\x02\x0EW\x80c c\xD4\xF7\x14a\x02/W\x80c/y\x88\x9D\x14a\x02NW[__\xFD[4\x80\x15a\x01pW__\xFD[Pa\x01\x84a\x01\x7F6`\x04a\x1FMV[a\x05\x9BV[\0[4\x80\x15a\x01\x91W__\xFD[Pa\x01\xA5a\x01\xA06`\x04a\x1FfV[a\x06NV[`@Qa\x01\xDA\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\x01\xEEW__\xFD[P`@\x80Q`\x01\x81R_` \x82\x01\x81\x90R\x91\x81\x01\x91\x90\x91R``\x01a\x01\xDAV[4\x80\x15a\x02\x19W__\xFD[Pa\x02\"a\x06\x97V[`@Qa\x01\xDA\x91\x90a\x1F}V[4\x80\x15a\x02:W__\xFD[Pa\x01\x84a\x02I6`\x04a\"\xB2V[a\x06\xACV[4\x80\x15a\x02YW__\xFD[P`\x08Ta\x02t\x90`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81V[`@Q`\x01`\x01`@\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\x97W__\xFD[P`\x08Ta\x02\xAB\x90`\x01`\x01`\xA0\x1B\x03\x16\x81V[`@Q`\x01`\x01`\xA0\x1B\x03\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xCEW__\xFD[PC[`@Q\x90\x81R` \x01a\x01\xDAV[4\x80\x15a\x02\xEAW__\xFD[P_T`\x01T`\x02T`\x03Ta\x03\0\x93\x92\x91\x90\x84V[`@\x80Q\x94\x85R` \x85\x01\x93\x90\x93R\x91\x83\x01R``\x82\x01R`\x80\x01a\x01\xDAV[a\x01\x84a\x03.6`\x04a$bV[a\x08\x06V[4\x80\x15a\x03>W__\xFD[Pa\x02\xD1a\x08%V[4\x80\x15a\x03RW__\xFD[Pa\x01\x84a\x08@V[4\x80\x15a\x03fW__\xFD[Pa\x01\x84a\x08\xAEV[4\x80\x15a\x03zW__\xFD[P`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15[`@Q\x90\x15\x15\x81R` \x01a\x01\xDAV[4\x80\x15a\x03\xA5W__\xFD[Pa\x03\xB9a\x03\xB46`\x04a\x1FfV[a\x08\xCFV[`@\x80Q\x92\x83R`\x01`\x01`@\x1B\x03\x90\x91\x16` \x83\x01R\x01a\x01\xDAV[4\x80\x15a\x03\xE1W__\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\x02\xABV[4\x80\x15a\x04\x1DW__\xFD[Pa\x01\x84a\x04,6`\x04a%\x18V[a\t\xFAV[4\x80\x15a\x04<W__\xFD[Pa\x01\x84a\x04K6`\x04a%1V[a\n\x83V[4\x80\x15a\x04[W__\xFD[P`\x06T`\x07Ta\x04\x7F\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\x01\xDAV[4\x80\x15a\x04\xB0W__\xFD[Pa\x04\xD5`@Q\x80`@\x01`@R\x80`\x05\x81R` \x01d\x03R\xE3\x02\xE3`\xDC\x1B\x81RP\x81V[`@Qa\x01\xDA\x91\x90a%\xDAV[4\x80\x15a\x04\xEDW__\xFD[P`\x08Ta\x05\x05\x90`\x01`\xA0\x1B\x90\x04c\xFF\xFF\xFF\xFF\x16\x81V[`@Qc\xFF\xFF\xFF\xFF\x90\x91\x16\x81R` \x01a\x01\xDAV[4\x80\x15a\x05%W__\xFD[P`\x04T`\x05Ta\x04\x7F\x91`\x01`\x01`@\x1B\x03\x80\x82\x16\x92`\x01`@\x1B\x90\x92\x04\x16\x90\x83V[4\x80\x15a\x05TW__\xFD[Pa\x03\x8Aa\x05c6`\x04a&\x0FV[a\x0B\xA5V[4\x80\x15a\x05sW__\xFD[Pa\x01\x84a\x05\x826`\x04a\x1FMV[a\x0C\xFFV[4\x80\x15a\x05\x92W__\xFD[P`\tTa\x02\xD1V[a\x05\xA3a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\x05\xCAW`@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\x05\xF9W`@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\x06]W_\x80\xFD[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01\x80T`\x01\x90\x91\x01T`\x01`\x01`@\x1B\x03\x80\x83\x16\x93P`\x01`@\x1B\x83\x04\x81\x16\x92`\x01`\x80\x1B\x90\x04\x16\x90\x84V[a\x06\x9Fa\x1C\xAFV[a\x06\xA7a\r\x9CV[\x90P\x90V[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15\x15\x80\x15a\x06\xD1WP`\x08T`\x01`\x01`\xA0\x1B\x03\x163\x14\x15[\x15a\x06\xEFW`@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\x07(WP`\x06T` \x83\x01Q`\x01`\x01`@\x1B\x03`\x01`@\x1B\x90\x92\x04\x82\x16\x91\x16\x11\x15[\x15a\x07FW`@Qc\x05\x1CF\xEF`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x07S\x82`@\x01Qa\x13\xCBV[a\x07]\x82\x82a\x14\x0CV[\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\x07\xAAa\x07\xA3C\x90V[B\x84a\x15\0V[\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\x07\xFA\x91\x81R` \x01\x90V[`@Q\x80\x91\x03\x90\xA3PPV[a\x08\x0Ea\x16\xE9V[a\x08\x17\x82a\x17\x8DV[a\x08!\x82\x82a\x17\xCEV[PPV[_a\x08.a\x18\x8FV[P_Q` a+\x11_9_Q\x90_R\x90V[a\x08Ha\rAV[`\x08T`\x01`\x01`\xA0\x1B\x03\x16\x15a\x08\x93W`\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\x08\xB6a\rAV[`@Qc\x17\xD5\xC9e`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[`\t\x80T_\x91\x82\x91\x90a\x08\xE3`\x01\x83a&CV[\x81T\x81\x10a\x08\xF3Wa\x08\xF3a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84\x10a\t2W`@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\t\xF3W\x84`\t\x82\x81T\x81\x10a\tbWa\tba&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x80\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x11\x15a\t\xEBW`\t\x81\x81T\x81\x10a\t\x9BWa\t\x9Ba&VV[\x90_R` _ \x90`\x02\x02\x01`\x01\x01T`\t\x82\x81T\x81\x10a\t\xBEWa\t\xBEa&VV[\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\tFV[PP\x91P\x91V[a\n\x02a\rAV[a\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10\x80a\n!WPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x80a\n?WP`\x08Tc\xFF\xFF\xFF\xFF`\x01`\xA0\x1B\x90\x91\x04\x81\x16\x90\x82\x16\x11\x15[\x15a\n]W`@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\n\xC7WP\x82[\x90P_\x82`\x01`\x01`@\x1B\x03\x16`\x01\x14\x80\x15a\n\xE2WP0;\x15[\x90P\x81\x15\x80\x15a\n\xF0WP\x80\x15[\x15a\x0B\x0EW`@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\x0B8W\x84T`\xFF`@\x1B\x19\x16`\x01`@\x1B\x17\x85U[a\x0BA\x86a\x18\xD8V[a\x0BIa\x18\xE9V[a\x0BT\x89\x89\x89a\x18\xF1V[\x83\x15a\x0B\x9AW\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[`\tT_\x90C\x84\x11\x80a\x0B\xB6WP\x80\x15[\x80a\x0C\0WP`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x0B\xE4Wa\x0B\xE4a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x84\x10[\x15a\x0C\x1EW`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_\x80\x80a\x0C,`\x01\x85a&CV[\x90P[\x81a\x0C\xC8W`\x08T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x81\x10a\x0C\xC8W\x86`\t\x82\x81T\x81\x10a\x0CaWa\x0Caa&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x11a\x0C\xB6W`\x01\x91P`\t\x81\x81T\x81\x10a\x0C\x96Wa\x0C\x96a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01T`\x01`\x01`@\x1B\x03\x16\x92Pa\x0C\xC8V[\x80a\x0C\xC0\x81a&jV[\x91PPa\x0C/V[\x81a\x0C\xE6W`@Qc\xB0\xB48w`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x85a\x0C\xF1\x84\x89a&CV[\x11\x94PPPPP[\x92\x91PPV[a\r\x07a\rAV[`\x01`\x01`\xA0\x1B\x03\x81\x16a\r5W`@Qc\x1EO\xBD\xF7`\xE0\x1B\x81R_`\x04\x82\x01R`$\x01[`@Q\x80\x91\x03\x90\xFD[a\r>\x81a\x1A\x1DV[PV[3a\rs\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\x08\xACW`@Qc\x11\x8C\xDA\xA7`\xE0\x1B\x81R3`\x04\x82\x01R`$\x01a\r,V[a\r\xA4a\x1C\xAFV[b\x10\0\0\x81R`\x07` \x82\x01R\x7F#x=\x0E\x97w\xB7\xAFe\xFB\xF8I\xDA~\xDBu\xE7K\x1E\xAFP>\x02]\x7F/\x7F\x80\x99\x1B\xEF\xA2`@\x82\x01QR\x7F*N/\xE8\xAD\xFAS\xF4hRU\x82\xD5\x18LLp\xBB\xDB\x94l!\xF2\x16A\x8A\x98yp^T\xA7` `@\x83\x01Q\x01R\x7F\x06$\xB2\xC1\xE7\x7F$\xAF\xCE\xAF9E\x17C\xB9\xFA\x80\xD5\x85?\xCA{\xA0\x03\x89\xC6ue\x07t\0\x9B``\x82\x01QR\x7F%\rw\x19\xE9L\xA2\xDF\0\xDF\xE3'\x93\x8FZ\x8DM\x83wy\xB9\x987\xCAwzS\xD3\x91'\xB1y` ``\x83\x01Q\x01R\x7F\r\xC0\x95\x15\x15.\xAE\xA6m\r\xB2\xF5q\xCC\x99^6\x9D&\xFEds\x94\xF1\r\xB59\x8C\x91u\x19\xDC`\x80\x82\x01QR\x7F\x12s\x14Ml\xEC,Jh\xB2J\x14\x93y\xC0\xF5Y+\xB7\xFB\xDD\xBE2\xFA\x17\x19\x19\x95\x0C\xA4\x04\xCB` `\x80\x83\x01Q\x01R\x7F\x11\x95!\xBBh\xCA\xEC!n/\x05\xEE\xB4f\xFB:\xBF\xE1\xF3\x9B\xAF\x7F\xE7\xCB9.\xA0W\xB6\xA2\xD9\xBF`\xA0\x82\x01QR\x7F-R\xAD\xEA\xBA\x80E\xE5:\xB5&\xFE\x99\x82\xD0\xEAE-\xEFk>\xA0%='\xA1\x9E\xF3\xB4n\x84(` `\xA0\x83\x01Q\x01R\x7F\x16\xC3\xB5\xB2\x17\xD3\x02\x97Z\x92\r\x137E$\xD7\xA5.JP\xFD\x7F\xB90\x84\"q\xEB\xF4\xA8N\xFD`\xC0\x82\x01QR\x7F \x07\x88\x91k\x90{\x19ir\xBD\xE3\x041\x8E\x88Z%!QK-\xB5\xE4\xA1\x18\x99\xC5\x12\x04\xF0\x89` `\xC0\x83\x01Q\x01R\x7F\x11'X\x1A\xFEu=\xEF\xCA\x9A\xEF\x12\xE73-\xB9\x97\x8A \x0B\x16\x99\xCE8\x88\xC0\xF3\xAE\xA6\x11\x1D\xC3`\xE0\x82\x01QR\x7F\x08\x81\xE1?\0r;\xE1\xA0Hr\xED\x02\xB2\xD0x\xC3\x1E\x80\xFE\xAF'rN&,\xE9|,\xB0\xBB\x1D` `\xE0\x83\x01Q\x01R\x7F\x14\x82\xA3\xA6\xBB\x91\xD6H=\x156\x83\xE2@O/UF\xE0\xE8\x95S\x0F\xDF\x13 \x91I\x84\x06\xE3\xDEa\x01\0\x82\x01QR~\xFAR\xDB=R\xD9\x05\xEA\xD1$\x81\x02\xF3\xA8\nC\xA9\r\x84\0\xC6\x8F`\xA6,T<A{/K` a\x01\0\x83\x01Q\x01R\x7F\nW\xDA\xDDJU\x19\x95%\xACj\xC6\xFA\xBC\x87\xA4\xCC\xCF\xDC\x98\x14+\xCE\xF9\xDB\xF4}\xE0\x0E\xCCQda\x01 \x82\x01QR\x7F\x18\xD9Z\xBD\x9B\x8E\x12\xC3i6\xAA!\x8C\xFF\xF5\x82T\x8Ak\xBF\xF2\\3\x8C \x06\xEA\xEB\x1F\xE5\xB6\x96` a\x01 \x83\x01Q\x01R\x7F+\xC4\x0E\x91\xDD\x16\x9B\x8B\xC1C\xA0)R\xA1\xB6\xC6\xE6'\xBF\xEBz+\xBEPx\xE1A#\xF3\xC5L\x1Ca\x01@\x82\x01QR\x7F\x10\x8De\xA2\x0CW\x9Bm\x98\x83'^\xB6\x88\x9F\xC3\xF5\xFCys\\\xA9\xF6\x11\xA1;g\xDA\xA2\xFB\xC8\xD0` a\x01@\x83\x01Q\x01R\x7F!\xBC\x1F\x86\xD0`\x8E_\x06&\xB4g\xEEo\x82\x82\xB6\x19\"?`\xA7\xAC\xB0\xFCc\xBA{\xDA\xF7\x83\xBEa\x01`\x82\x01QR\x7F\x05\xEF2\x82\xF8\xEE\xF0\x15\x15\xFB\x9A\x8A}l\xA0k\x8B\0}\x1DQ$\x03\xEF\xB2h\xFB\x03\xCE_\t\xE9` a\x01`\x83\x01Q\x01R\x7F,\xABf\xC1\xCBZ\x83\x86\x9Es\xAC4\xFB\xE4gHi\x99\xBA\xBDT\x1D\x90\x10\xEE\x9A\x80H\x06\xEE\xE4\xEFa\x01\x80\x82\x01QR\x7F-\xB1\x98$\x19\xC5\xA4\xA1u\x93\xAC\xFF\x955\xFA\x96v\x83\xD7\\\x8A\xEC\x011\x9Bd\xB8J\xAD\xA2\xAD\x84` a\x01\x80\x83\x01Q\x01R\x7F,8f|l~\xB8h\xBD\xD3\x0C4\xDD?K\x84\xD9\xB9\xB1\xA2}xg\xB3d\xC8\xB7\x83\x14#\xE9\x08a\x01\xA0\x82\x01QR\x7F+,\xB4\x04M\xD5\x11e\xC4\x818!\x9DQ\xCF\x8D\x16\x89\xF9\x1E\xD3\xEE\xEF\xEA\xD6\xE0U\xEBH\x8A,\xE2` a\x01\xA0\x83\x01Q\x01R\x7F-H\xE5G\x03\x01\x1D\xF2\xC7J\x14\xDA\xFD\xE3\xAFO\xD8>\xC7\x18u\xD8\xDD\xC3UFXd\x0C\xC9U\x01a\x01\xC0\x82\x01QR\x7F$:\x99\xD8\r2\xEBT\x08\xB5\x9D[\x080+\xED\xE0p\xD3\xFB\n\x8E\xFE/\"b\xF8e\xBF\xFBM\r` a\x01\xC0\x83\x01Q\x01R\x7F\x04U\xD22[\xF6&\x9Af\xF0}\x83\x8FU\xF3iG\xA3\xCD\x9B\x87\xED\xD8H\x0B\xCE\xD9\\\xBBE\xCC\x11a\x01\xE0\x82\x01QR\x7F\x0Ff\xD9\x08Zn\xD6\x0B\x83\x81y\x98~$\t\x92\xBF\xF4\xC0Ql\xCFl\xCD\xE4\xA1\xCA\x94\xCE\x8B\x98d` a\x01\xE0\x83\x01Q\x01R\x7F+\xAC\r#\xC8X]\x14\x87\xECa\x1B^\xFF\xC9~XR\xFE\xA4:|\xBA6\xCC\xDD, y1\xF3\x94a\x02\0\x82\x01QR\x7F\x18`\xB5N\x01\xA0j\xEAZ\xDBK\x13\xBF[\xAE\xBA\xB9+sh\x07\xA3\xA8\x9F\xF2\x04\t\x92\xB0n\xE6\xEC` a\x02\0\x83\x01Q\x01R\x7F\x0C\x0B\xFA\x1C/\xC6\xF8\xED\x01#=Qh\xDB\x1E\x1D\xFErU\x04\xF02\xF6i\xF5\n\x92\xAEw\xC7)\x06a\x02 \x82\x01QR\x7F\rt\x1E\x12L}\x10i\xB8\xA4\0\xCB\xCD\xCF\xD9\x01(\xA53\x90\x1A\xD4\xDE\x1E\x03\x7F\xE7)\x84\xDC4\xCF` a\x02 \x83\x01Q\x01R\x7F\x01\xCF\xED0\x08\\\x9E\xFC\xE0Fh W\x94\xAA9\xB1\xA8\xEEY\x124\xB4\xC7z\"\xF8\xC2m\x89\x9E\x05a\x02@\x82\x01QR\x7F*\xB6\x8A\xC8-6\xCE\xDBd}\x14\xA5\xB0\x03^\x8C\x9A\x0B\xE8G\x80\xB7\xBA\xE1\x13:'\xA8\x80\x96n\xD1` a\x02@\x83\x01Q\x01R\x7F\x07.\x1DP\xF8\xB5\xCF\x8DWK8G'dw\xD9[\xBDQ\x165\x10\0\x84\x1Fr\x8D\xA4O@C\xB5a\x02`\x82\x01QR\x7F#\xF8\xEAn\xAC\xD0\x87mW\"\x0FW\xEA\xBA\xCB\xE7j##A\x16cs\x1A%\x1D]\xCA6\xF1\xB5\x9F` 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\x08!W`@Qc\x01l\x173`\xE2\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[_a\x14\x15a\x06\x97V[\x90Pa\x14\x1Fa\x1F\x14V[\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\x14\x9E\x90\x85\x90\x85\x90\x88\x90`\x04\x01a([V[` `@Q\x80\x83\x03\x81\x86Z\xF4\x15\x80\x15a\x14\xB9W=__>=_\xFD[PPPP`@Q=`\x1F\x19`\x1F\x82\x01\x16\x82\x01\x80`@RP\x81\x01\x90a\x14\xDD\x91\x90a*{V[a\x14\xFAW`@Qc\t\xBD\xE39`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[PPPPV[`\tT\x15\x80\x15\x90a\x15uWP`\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@Wa\x15@a&VV[_\x91\x82R` \x90\x91 `\x02\x90\x91\x02\x01Ta\x15j\x90`\x01`@\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x84a*\x9AV[`\x01`\x01`@\x1B\x03\x16\x11[\x15a\x16\x08W`\x08T`\t\x80T\x90\x91`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90\x81\x10a\x15\xA2Wa\x15\xA2a&VV[_\x91\x82R` \x82 `\x02\x90\x91\x02\x01\x80T`\x01`\x01`\xC0\x1B\x03\x19\x16\x81U`\x01\x01U`\x08\x80T`\x01`\xC0\x1B\x90\x04`\x01`\x01`@\x1B\x03\x16\x90`\x18a\x15\xE2\x83a*\xB9V[\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\x17oWP\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\x17c_Q` a+\x11_9_Q\x90_RT`\x01`\x01`\xA0\x1B\x03\x16\x90V[`\x01`\x01`\xA0\x1B\x03\x16\x14\x15[\x15a\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x17\x95a\rAV[`@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\x06CV[\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(WP`@\x80Q`\x1F=\x90\x81\x01`\x1F\x19\x16\x82\x01\x90\x92Ra\x18%\x91\x81\x01\x90a*\xE3V[`\x01[a\x18PW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x83\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_9_Q\x90_R\x81\x14a\x18\x80W`@Qc*\x87Ri`\xE2\x1B\x81R`\x04\x81\x01\x82\x90R`$\x01a\r,V[a\x18\x8A\x83\x83a\x1A\x8DV[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\x08\xACW`@Qcp>F\xDD`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\x18\xE0a\x1A\xE2V[a\r>\x81a\x1B+V[a\x08\xACa\x1A\xE2V[\x82Q`\x01`\x01`@\x1B\x03\x16\x15\x15\x80a\x19\x15WP` \x83\x01Q`\x01`\x01`@\x1B\x03\x16\x15\x15[\x80a\x19\"WP` \x82\x01Q\x15[\x80a\x19/WP`@\x82\x01Q\x15[\x80a\x19<WP``\x82\x01Q\x15[\x80a\x19FWP\x81Q\x15[\x80a\x19XWPa\x0E\x10\x81c\xFF\xFF\xFF\xFF\x16\x10[\x80a\x19lWPc\x01\xE13\x80\x81c\xFF\xFF\xFF\xFF\x16\x11[\x15a\x19\x8AW`@QcP\xDD\x03\xF7`\xE1\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[\x82Q`\x04\x80T` \x80\x87\x01Q`\x01`\x01`@\x1B\x03\x90\x81\x16`\x01`@\x1B\x02`\x01`\x01`\x80\x1B\x03\x19\x93\x84\x16\x91\x90\x95\x16\x90\x81\x17\x85\x17\x90\x93U`@\x96\x87\x01Q`\x05\x81\x90U\x86Q_U\x90\x86\x01Q`\x01U\x95\x85\x01Q`\x02U``\x90\x94\x01Q`\x03U`\x06\x80T\x90\x94\x16\x17\x17\x90\x91U`\x07\x91\x90\x91U`\x08\x80Tc\xFF\xFF\xFF\xFF\x90\x92\x16`\x01`\xA0\x1B\x02c\xFF\xFF\xFF\xFF`\xA0\x1B\x19\x90\x92\x16\x91\x90\x91\x17\x90UV[\x7F\x90\x16\xD0\x9Dr\xD4\x0F\xDA\xE2\xFD\x8C\xEA\xC6\xB6#Lw\x06!O\xD3\x9C\x1C\xD1\xE6\t\xA0R\x8C\x19\x93\0\x80T`\x01`\x01`\xA0\x1B\x03\x19\x81\x16`\x01`\x01`\xA0\x1B\x03\x84\x81\x16\x91\x82\x17\x84U`@Q\x92\x16\x91\x82\x90\x7F\x8B\xE0\x07\x9CS\x16Y\x14\x13D\xCD\x1F\xD0\xA4\xF2\x84\x19I\x7F\x97\"\xA3\xDA\xAF\xE3\xB4\x18okdW\xE0\x90_\x90\xA3PPPV[a\x1A\x96\x82a\x1B3V[`@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\x1A\xDAWa\x18\x8A\x82\x82a\x1B\x96V[a\x08!a\x1C\x08V[\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\x08\xACW`@Qc\x1A\xFC\xD7\x9F`\xE3\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[a\r\x07a\x1A\xE2V[\x80`\x01`\x01`\xA0\x1B\x03\x16;_\x03a\x1BhW`@QcL\x9C\x8C\xE3`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x82\x16`\x04\x82\x01R`$\x01a\r,V[_Q` a+\x11_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\x1B\xB2\x91\x90a*\xFAV[_`@Q\x80\x83\x03\x81\x85Z\xF4\x91PP=\x80_\x81\x14a\x1B\xEAW`@Q\x91P`\x1F\x19`?=\x01\x16\x82\x01`@R=\x82R=_` \x84\x01>a\x1B\xEFV[``\x91P[P\x91P\x91Pa\x1B\xFF\x85\x83\x83a\x1C'V[\x95\x94PPPPPV[4\x15a\x08\xACW`@Qc\xB3\x98\x97\x9F`\xE0\x1B\x81R`\x04\x01`@Q\x80\x91\x03\x90\xFD[``\x82a\x1C<Wa\x1C7\x82a\x1C\x86V[a\x1C\x7FV[\x81Q\x15\x80\x15a\x1CSWP`\x01`\x01`\xA0\x1B\x03\x84\x16;\x15[\x15a\x1C|W`@Qc\x99\x96\xB3\x15`\xE0\x1B\x81R`\x01`\x01`\xA0\x1B\x03\x85\x16`\x04\x82\x01R`$\x01a\r,V[P\x80[\x93\x92PPPV[\x80Q\x15a\x1C\x96W\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\x1C\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1DB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Db`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1D\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\"`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1EB`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1Eb`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\x82`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xA2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xC2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1E\xE2`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01a\x1F\x02`@Q\x80`@\x01`@R\x80_\x81R` \x01_\x81RP\x90V[\x81R` \x01_\x81R` \x01_\x81RP\x90V[`@Q\x80`\xE0\x01`@R\x80`\x07\x90` \x82\x02\x806\x837P\x91\x92\x91PPV[\x805`\x01`\x01`\xA0\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[\x91\x90PV[_` \x82\x84\x03\x12\x15a\x1F]W__\xFD[a\x1C\x7F\x82a\x1F2V[_` \x82\x84\x03\x12\x15a\x1FvW__\xFD[P5\x91\x90PV[_a\x05\0\x82\x01\x90P\x82Q\x82R` \x83\x01Q` \x83\x01R`@\x83\x01Qa\x1F\xAF`@\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!\xB5Wa!\xB5a!~V[`@R\x90V[`@Q`\x1F\x82\x01`\x1F\x19\x16\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a!\xE3Wa!\xE3a!~V[`@R\x91\x90PV[\x805`\x01`\x01`@\x1B\x03\x81\x16\x81\x14a\x1FHW__\xFD[_``\x82\x84\x03\x12\x15a\"\x11W__\xFD[`@Q``\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"3Wa\"3a!~V[`@R\x90P\x80a\"B\x83a!\xEBV[\x81Ra\"P` \x84\x01a!\xEBV[` \x82\x01R`@\x92\x83\x015\x92\x01\x91\x90\x91R\x91\x90PV[_`@\x82\x84\x03\x12\x15a\"vW__\xFD[`@\x80Q\x90\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a\"\x98Wa\"\x98a!~V[`@R\x825\x81R` \x92\x83\x015\x92\x81\x01\x92\x90\x92RP\x91\x90PV[__\x82\x84\x03a\x04\xE0\x81\x12\x15a\"\xC5W__\xFD[a\"\xCF\x85\x85a\"\x01V[\x92Pa\x04\x80`_\x19\x82\x01\x12\x15a\"\xE3W__\xFD[Pa\"\xECa!\x92V[a\"\xF9\x85``\x86\x01a\"fV[\x81Ra#\x08\x85`\xA0\x86\x01a\"fV[` \x82\x01Ra#\x1A\x85`\xE0\x86\x01a\"fV[`@\x82\x01Ra#-\x85a\x01 \x86\x01a\"fV[``\x82\x01Ra#@\x85a\x01`\x86\x01a\"fV[`\x80\x82\x01Ra#S\x85a\x01\xA0\x86\x01a\"fV[`\xA0\x82\x01Ra#f\x85a\x01\xE0\x86\x01a\"fV[`\xC0\x82\x01Ra#y\x85a\x02 \x86\x01a\"fV[`\xE0\x82\x01Ra#\x8C\x85a\x02`\x86\x01a\"fV[a\x01\0\x82\x01Ra#\xA0\x85a\x02\xA0\x86\x01a\"fV[a\x01 \x82\x01Ra#\xB4\x85a\x02\xE0\x86\x01a\"fV[a\x01@\x82\x01Ra#\xC8\x85a\x03 \x86\x01a\"fV[a\x01`\x82\x01Ra#\xDC\x85a\x03`\x86\x01a\"fV[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$sW__\xFD[a$|\x83a\x1F2V[\x91P` \x83\x015`\x01`\x01`@\x1B\x03\x81\x11\x15a$\x96W__\xFD[\x83\x01`\x1F\x81\x01\x85\x13a$\xA6W__\xFD[\x805`\x01`\x01`@\x1B\x03\x81\x11\x15a$\xBFWa$\xBFa!~V[a$\xD2`\x1F\x82\x01`\x1F\x19\x16` \x01a!\xBBV[\x81\x81R\x86` \x83\x85\x01\x01\x11\x15a$\xE6W__\xFD[\x81` \x84\x01` \x83\x017_` \x83\x83\x01\x01R\x80\x93PPPP\x92P\x92\x90PV[\x805c\xFF\xFF\xFF\xFF\x81\x16\x81\x14a\x1FHW__\xFD[_` \x82\x84\x03\x12\x15a%(W__\xFD[a\x1C\x7F\x82a%\x05V[____\x84\x86\x03a\x01 \x81\x12\x15a%FW__\xFD[a%P\x87\x87a\"\x01V[\x94P`\x80`_\x19\x82\x01\x12\x15a%cW__\xFD[P`@Q`\x80\x81\x01`\x01`\x01`@\x1B\x03\x81\x11\x82\x82\x10\x17\x15a%\x86Wa%\x86a!~V[`@\x90\x81R``\x87\x81\x015\x83R`\x80\x88\x015` \x84\x01R`\xA0\x88\x015\x91\x83\x01\x91\x90\x91R`\xC0\x87\x015\x90\x82\x01R\x92Pa%\xC0`\xE0\x86\x01a%\x05V[\x91Pa%\xCFa\x01\0\x86\x01a\x1F2V[\x90P\x92\x95\x91\x94P\x92PV[` \x81R_\x82Q\x80` \x84\x01R\x80` \x85\x01`@\x85\x01^_`@\x82\x85\x01\x01R`@`\x1F\x19`\x1F\x83\x01\x16\x84\x01\x01\x91PP\x92\x91PPV[__`@\x83\x85\x03\x12\x15a& W__\xFD[PP\x805\x92` \x90\x91\x015\x91PV[cNH{q`\xE0\x1B_R`\x11`\x04R`$_\xFD[\x81\x81\x03\x81\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[cNH{q`\xE0\x1B_R`2`\x04R`$_\xFD[_\x81a&xWa&xa&/V[P_\x19\x01\x90V[\x80_[`\x07\x81\x10\x15a\x14\xFAW\x81Q\x84R` \x93\x84\x01\x93\x90\x91\x01\x90`\x01\x01a&\x82V[a&\xB6\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(\x8D`@\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*ea\x05\0\x83\x01\x85a&\x7FV[a*sa\x05\xE0\x83\x01\x84a&\xA1V[\x94\x93PPPPV[_` \x82\x84\x03\x12\x15a*\x8BW__\xFD[\x81Q\x80\x15\x15\x81\x14a\x1C\x7FW__\xFD[`\x01`\x01`@\x1B\x03\x82\x81\x16\x82\x82\x16\x03\x90\x81\x11\x15a\x0C\xF9Wa\x0C\xF9a&/V[_`\x01`\x01`@\x1B\x03\x82\x16`\x01`\x01`@\x1B\x03\x81\x03a*\xDAWa*\xDAa&/V[`\x01\x01\x92\x91PPV[_` \x82\x84\x03\x12\x15a*\xF3W__\xFD[PQ\x91\x90PV[_\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",
3742    );
3743    #[derive(serde::Serialize, serde::Deserialize)]
3744    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3745    /**```solidity
3746struct LightClientState { uint64 viewNum; uint64 blockHeight; BN254.ScalarField blockCommRoot; }
3747```*/
3748    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3749    #[derive(Clone)]
3750    pub struct LightClientState {
3751        #[allow(missing_docs)]
3752        pub viewNum: u64,
3753        #[allow(missing_docs)]
3754        pub blockHeight: u64,
3755        #[allow(missing_docs)]
3756        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3757    }
3758    #[allow(
3759        non_camel_case_types,
3760        non_snake_case,
3761        clippy::pub_underscore_fields,
3762        clippy::style
3763    )]
3764    const _: () = {
3765        use alloy::sol_types as alloy_sol_types;
3766        #[doc(hidden)]
3767        type UnderlyingSolTuple<'a> = (
3768            alloy::sol_types::sol_data::Uint<64>,
3769            alloy::sol_types::sol_data::Uint<64>,
3770            BN254::ScalarField,
3771        );
3772        #[doc(hidden)]
3773        type UnderlyingRustTuple<'a> = (
3774            u64,
3775            u64,
3776            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
3777        );
3778        #[cfg(test)]
3779        #[allow(dead_code, unreachable_patterns)]
3780        fn _type_assertion(
3781            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
3782        ) {
3783            match _t {
3784                alloy_sol_types::private::AssertTypeEq::<
3785                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
3786                >(_) => {}
3787            }
3788        }
3789        #[automatically_derived]
3790        #[doc(hidden)]
3791        impl ::core::convert::From<LightClientState> for UnderlyingRustTuple<'_> {
3792            fn from(value: LightClientState) -> Self {
3793                (value.viewNum, value.blockHeight, value.blockCommRoot)
3794            }
3795        }
3796        #[automatically_derived]
3797        #[doc(hidden)]
3798        impl ::core::convert::From<UnderlyingRustTuple<'_>> for LightClientState {
3799            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
3800                Self {
3801                    viewNum: tuple.0,
3802                    blockHeight: tuple.1,
3803                    blockCommRoot: tuple.2,
3804                }
3805            }
3806        }
3807        #[automatically_derived]
3808        impl alloy_sol_types::SolValue for LightClientState {
3809            type SolType = Self;
3810        }
3811        #[automatically_derived]
3812        impl alloy_sol_types::private::SolTypeValue<Self> for LightClientState {
3813            #[inline]
3814            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
3815                (
3816                    <alloy::sol_types::sol_data::Uint<
3817                        64,
3818                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
3819                    <alloy::sol_types::sol_data::Uint<
3820                        64,
3821                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
3822                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
3823                        &self.blockCommRoot,
3824                    ),
3825                )
3826            }
3827            #[inline]
3828            fn stv_abi_encoded_size(&self) -> usize {
3829                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
3830                    return size;
3831                }
3832                let tuple = <UnderlyingRustTuple<
3833                    '_,
3834                > as ::core::convert::From<Self>>::from(self.clone());
3835                <UnderlyingSolTuple<
3836                    '_,
3837                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
3838            }
3839            #[inline]
3840            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
3841                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
3842            }
3843            #[inline]
3844            fn stv_abi_encode_packed_to(
3845                &self,
3846                out: &mut alloy_sol_types::private::Vec<u8>,
3847            ) {
3848                let tuple = <UnderlyingRustTuple<
3849                    '_,
3850                > as ::core::convert::From<Self>>::from(self.clone());
3851                <UnderlyingSolTuple<
3852                    '_,
3853                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
3854            }
3855            #[inline]
3856            fn stv_abi_packed_encoded_size(&self) -> usize {
3857                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
3858                    return size;
3859                }
3860                let tuple = <UnderlyingRustTuple<
3861                    '_,
3862                > as ::core::convert::From<Self>>::from(self.clone());
3863                <UnderlyingSolTuple<
3864                    '_,
3865                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
3866            }
3867        }
3868        #[automatically_derived]
3869        impl alloy_sol_types::SolType for LightClientState {
3870            type RustType = Self;
3871            type Token<'a> = <UnderlyingSolTuple<
3872                'a,
3873            > as alloy_sol_types::SolType>::Token<'a>;
3874            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
3875            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3876                '_,
3877            > as alloy_sol_types::SolType>::ENCODED_SIZE;
3878            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
3879                '_,
3880            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
3881            #[inline]
3882            fn valid_token(token: &Self::Token<'_>) -> bool {
3883                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
3884            }
3885            #[inline]
3886            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
3887                let tuple = <UnderlyingSolTuple<
3888                    '_,
3889                > as alloy_sol_types::SolType>::detokenize(token);
3890                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
3891            }
3892        }
3893        #[automatically_derived]
3894        impl alloy_sol_types::SolStruct for LightClientState {
3895            const NAME: &'static str = "LightClientState";
3896            #[inline]
3897            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
3898                alloy_sol_types::private::Cow::Borrowed(
3899                    "LightClientState(uint64 viewNum,uint64 blockHeight,uint256 blockCommRoot)",
3900                )
3901            }
3902            #[inline]
3903            fn eip712_components() -> alloy_sol_types::private::Vec<
3904                alloy_sol_types::private::Cow<'static, str>,
3905            > {
3906                alloy_sol_types::private::Vec::new()
3907            }
3908            #[inline]
3909            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
3910                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
3911            }
3912            #[inline]
3913            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
3914                [
3915                    <alloy::sol_types::sol_data::Uint<
3916                        64,
3917                    > as alloy_sol_types::SolType>::eip712_data_word(&self.viewNum)
3918                        .0,
3919                    <alloy::sol_types::sol_data::Uint<
3920                        64,
3921                    > as alloy_sol_types::SolType>::eip712_data_word(&self.blockHeight)
3922                        .0,
3923                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
3924                            &self.blockCommRoot,
3925                        )
3926                        .0,
3927                ]
3928                    .concat()
3929            }
3930        }
3931        #[automatically_derived]
3932        impl alloy_sol_types::EventTopic for LightClientState {
3933            #[inline]
3934            fn topic_preimage_length(rust: &Self::RustType) -> usize {
3935                0usize
3936                    + <alloy::sol_types::sol_data::Uint<
3937                        64,
3938                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3939                        &rust.viewNum,
3940                    )
3941                    + <alloy::sol_types::sol_data::Uint<
3942                        64,
3943                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
3944                        &rust.blockHeight,
3945                    )
3946                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
3947                        &rust.blockCommRoot,
3948                    )
3949            }
3950            #[inline]
3951            fn encode_topic_preimage(
3952                rust: &Self::RustType,
3953                out: &mut alloy_sol_types::private::Vec<u8>,
3954            ) {
3955                out.reserve(
3956                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
3957                );
3958                <alloy::sol_types::sol_data::Uint<
3959                    64,
3960                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3961                    &rust.viewNum,
3962                    out,
3963                );
3964                <alloy::sol_types::sol_data::Uint<
3965                    64,
3966                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
3967                    &rust.blockHeight,
3968                    out,
3969                );
3970                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
3971                    &rust.blockCommRoot,
3972                    out,
3973                );
3974            }
3975            #[inline]
3976            fn encode_topic(
3977                rust: &Self::RustType,
3978            ) -> alloy_sol_types::abi::token::WordToken {
3979                let mut out = alloy_sol_types::private::Vec::new();
3980                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
3981                    rust,
3982                    &mut out,
3983                );
3984                alloy_sol_types::abi::token::WordToken(
3985                    alloy_sol_types::private::keccak256(out),
3986                )
3987            }
3988        }
3989    };
3990    #[derive(serde::Serialize, serde::Deserialize)]
3991    #[derive(Default, Debug, PartialEq, Eq, Hash)]
3992    /**```solidity
3993struct StakeTableState { uint256 threshold; BN254.ScalarField blsKeyComm; BN254.ScalarField schnorrKeyComm; BN254.ScalarField amountComm; }
3994```*/
3995    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
3996    #[derive(Clone)]
3997    pub struct StakeTableState {
3998        #[allow(missing_docs)]
3999        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
4000        #[allow(missing_docs)]
4001        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4002        #[allow(missing_docs)]
4003        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4004        #[allow(missing_docs)]
4005        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4006    }
4007    #[allow(
4008        non_camel_case_types,
4009        non_snake_case,
4010        clippy::pub_underscore_fields,
4011        clippy::style
4012    )]
4013    const _: () = {
4014        use alloy::sol_types as alloy_sol_types;
4015        #[doc(hidden)]
4016        type UnderlyingSolTuple<'a> = (
4017            alloy::sol_types::sol_data::Uint<256>,
4018            BN254::ScalarField,
4019            BN254::ScalarField,
4020            BN254::ScalarField,
4021        );
4022        #[doc(hidden)]
4023        type UnderlyingRustTuple<'a> = (
4024            alloy::sol_types::private::primitives::aliases::U256,
4025            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4026            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4027            <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
4028        );
4029        #[cfg(test)]
4030        #[allow(dead_code, unreachable_patterns)]
4031        fn _type_assertion(
4032            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4033        ) {
4034            match _t {
4035                alloy_sol_types::private::AssertTypeEq::<
4036                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4037                >(_) => {}
4038            }
4039        }
4040        #[automatically_derived]
4041        #[doc(hidden)]
4042        impl ::core::convert::From<StakeTableState> for UnderlyingRustTuple<'_> {
4043            fn from(value: StakeTableState) -> Self {
4044                (
4045                    value.threshold,
4046                    value.blsKeyComm,
4047                    value.schnorrKeyComm,
4048                    value.amountComm,
4049                )
4050            }
4051        }
4052        #[automatically_derived]
4053        #[doc(hidden)]
4054        impl ::core::convert::From<UnderlyingRustTuple<'_>> for StakeTableState {
4055            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4056                Self {
4057                    threshold: tuple.0,
4058                    blsKeyComm: tuple.1,
4059                    schnorrKeyComm: tuple.2,
4060                    amountComm: tuple.3,
4061                }
4062            }
4063        }
4064        #[automatically_derived]
4065        impl alloy_sol_types::SolValue for StakeTableState {
4066            type SolType = Self;
4067        }
4068        #[automatically_derived]
4069        impl alloy_sol_types::private::SolTypeValue<Self> for StakeTableState {
4070            #[inline]
4071            fn stv_to_tokens(&self) -> <Self as alloy_sol_types::SolType>::Token<'_> {
4072                (
4073                    <alloy::sol_types::sol_data::Uint<
4074                        256,
4075                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
4076                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4077                        &self.blsKeyComm,
4078                    ),
4079                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4080                        &self.schnorrKeyComm,
4081                    ),
4082                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
4083                        &self.amountComm,
4084                    ),
4085                )
4086            }
4087            #[inline]
4088            fn stv_abi_encoded_size(&self) -> usize {
4089                if let Some(size) = <Self as alloy_sol_types::SolType>::ENCODED_SIZE {
4090                    return size;
4091                }
4092                let tuple = <UnderlyingRustTuple<
4093                    '_,
4094                > as ::core::convert::From<Self>>::from(self.clone());
4095                <UnderlyingSolTuple<
4096                    '_,
4097                > as alloy_sol_types::SolType>::abi_encoded_size(&tuple)
4098            }
4099            #[inline]
4100            fn stv_eip712_data_word(&self) -> alloy_sol_types::Word {
4101                <Self as alloy_sol_types::SolStruct>::eip712_hash_struct(self)
4102            }
4103            #[inline]
4104            fn stv_abi_encode_packed_to(
4105                &self,
4106                out: &mut alloy_sol_types::private::Vec<u8>,
4107            ) {
4108                let tuple = <UnderlyingRustTuple<
4109                    '_,
4110                > as ::core::convert::From<Self>>::from(self.clone());
4111                <UnderlyingSolTuple<
4112                    '_,
4113                > as alloy_sol_types::SolType>::abi_encode_packed_to(&tuple, out)
4114            }
4115            #[inline]
4116            fn stv_abi_packed_encoded_size(&self) -> usize {
4117                if let Some(size) = <Self as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE {
4118                    return size;
4119                }
4120                let tuple = <UnderlyingRustTuple<
4121                    '_,
4122                > as ::core::convert::From<Self>>::from(self.clone());
4123                <UnderlyingSolTuple<
4124                    '_,
4125                > as alloy_sol_types::SolType>::abi_packed_encoded_size(&tuple)
4126            }
4127        }
4128        #[automatically_derived]
4129        impl alloy_sol_types::SolType for StakeTableState {
4130            type RustType = Self;
4131            type Token<'a> = <UnderlyingSolTuple<
4132                'a,
4133            > as alloy_sol_types::SolType>::Token<'a>;
4134            const SOL_NAME: &'static str = <Self as alloy_sol_types::SolStruct>::NAME;
4135            const ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4136                '_,
4137            > as alloy_sol_types::SolType>::ENCODED_SIZE;
4138            const PACKED_ENCODED_SIZE: Option<usize> = <UnderlyingSolTuple<
4139                '_,
4140            > as alloy_sol_types::SolType>::PACKED_ENCODED_SIZE;
4141            #[inline]
4142            fn valid_token(token: &Self::Token<'_>) -> bool {
4143                <UnderlyingSolTuple<'_> as alloy_sol_types::SolType>::valid_token(token)
4144            }
4145            #[inline]
4146            fn detokenize(token: Self::Token<'_>) -> Self::RustType {
4147                let tuple = <UnderlyingSolTuple<
4148                    '_,
4149                > as alloy_sol_types::SolType>::detokenize(token);
4150                <Self as ::core::convert::From<UnderlyingRustTuple<'_>>>::from(tuple)
4151            }
4152        }
4153        #[automatically_derived]
4154        impl alloy_sol_types::SolStruct for StakeTableState {
4155            const NAME: &'static str = "StakeTableState";
4156            #[inline]
4157            fn eip712_root_type() -> alloy_sol_types::private::Cow<'static, str> {
4158                alloy_sol_types::private::Cow::Borrowed(
4159                    "StakeTableState(uint256 threshold,uint256 blsKeyComm,uint256 schnorrKeyComm,uint256 amountComm)",
4160                )
4161            }
4162            #[inline]
4163            fn eip712_components() -> alloy_sol_types::private::Vec<
4164                alloy_sol_types::private::Cow<'static, str>,
4165            > {
4166                alloy_sol_types::private::Vec::new()
4167            }
4168            #[inline]
4169            fn eip712_encode_type() -> alloy_sol_types::private::Cow<'static, str> {
4170                <Self as alloy_sol_types::SolStruct>::eip712_root_type()
4171            }
4172            #[inline]
4173            fn eip712_encode_data(&self) -> alloy_sol_types::private::Vec<u8> {
4174                [
4175                    <alloy::sol_types::sol_data::Uint<
4176                        256,
4177                    > as alloy_sol_types::SolType>::eip712_data_word(&self.threshold)
4178                        .0,
4179                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4180                            &self.blsKeyComm,
4181                        )
4182                        .0,
4183                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4184                            &self.schnorrKeyComm,
4185                        )
4186                        .0,
4187                    <BN254::ScalarField as alloy_sol_types::SolType>::eip712_data_word(
4188                            &self.amountComm,
4189                        )
4190                        .0,
4191                ]
4192                    .concat()
4193            }
4194        }
4195        #[automatically_derived]
4196        impl alloy_sol_types::EventTopic for StakeTableState {
4197            #[inline]
4198            fn topic_preimage_length(rust: &Self::RustType) -> usize {
4199                0usize
4200                    + <alloy::sol_types::sol_data::Uint<
4201                        256,
4202                    > as alloy_sol_types::EventTopic>::topic_preimage_length(
4203                        &rust.threshold,
4204                    )
4205                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4206                        &rust.blsKeyComm,
4207                    )
4208                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4209                        &rust.schnorrKeyComm,
4210                    )
4211                    + <BN254::ScalarField as alloy_sol_types::EventTopic>::topic_preimage_length(
4212                        &rust.amountComm,
4213                    )
4214            }
4215            #[inline]
4216            fn encode_topic_preimage(
4217                rust: &Self::RustType,
4218                out: &mut alloy_sol_types::private::Vec<u8>,
4219            ) {
4220                out.reserve(
4221                    <Self as alloy_sol_types::EventTopic>::topic_preimage_length(rust),
4222                );
4223                <alloy::sol_types::sol_data::Uint<
4224                    256,
4225                > as alloy_sol_types::EventTopic>::encode_topic_preimage(
4226                    &rust.threshold,
4227                    out,
4228                );
4229                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4230                    &rust.blsKeyComm,
4231                    out,
4232                );
4233                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4234                    &rust.schnorrKeyComm,
4235                    out,
4236                );
4237                <BN254::ScalarField as alloy_sol_types::EventTopic>::encode_topic_preimage(
4238                    &rust.amountComm,
4239                    out,
4240                );
4241            }
4242            #[inline]
4243            fn encode_topic(
4244                rust: &Self::RustType,
4245            ) -> alloy_sol_types::abi::token::WordToken {
4246                let mut out = alloy_sol_types::private::Vec::new();
4247                <Self as alloy_sol_types::EventTopic>::encode_topic_preimage(
4248                    rust,
4249                    &mut out,
4250                );
4251                alloy_sol_types::abi::token::WordToken(
4252                    alloy_sol_types::private::keccak256(out),
4253                )
4254            }
4255        }
4256    };
4257    #[derive(serde::Serialize, serde::Deserialize)]
4258    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4259    /**Custom error with signature `AddressEmptyCode(address)` and selector `0x9996b315`.
4260```solidity
4261error AddressEmptyCode(address target);
4262```*/
4263    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4264    #[derive(Clone)]
4265    pub struct AddressEmptyCode {
4266        #[allow(missing_docs)]
4267        pub target: alloy::sol_types::private::Address,
4268    }
4269    #[allow(
4270        non_camel_case_types,
4271        non_snake_case,
4272        clippy::pub_underscore_fields,
4273        clippy::style
4274    )]
4275    const _: () = {
4276        use alloy::sol_types as alloy_sol_types;
4277        #[doc(hidden)]
4278        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4279        #[doc(hidden)]
4280        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4281        #[cfg(test)]
4282        #[allow(dead_code, unreachable_patterns)]
4283        fn _type_assertion(
4284            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4285        ) {
4286            match _t {
4287                alloy_sol_types::private::AssertTypeEq::<
4288                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4289                >(_) => {}
4290            }
4291        }
4292        #[automatically_derived]
4293        #[doc(hidden)]
4294        impl ::core::convert::From<AddressEmptyCode> for UnderlyingRustTuple<'_> {
4295            fn from(value: AddressEmptyCode) -> Self {
4296                (value.target,)
4297            }
4298        }
4299        #[automatically_derived]
4300        #[doc(hidden)]
4301        impl ::core::convert::From<UnderlyingRustTuple<'_>> for AddressEmptyCode {
4302            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4303                Self { target: tuple.0 }
4304            }
4305        }
4306        #[automatically_derived]
4307        impl alloy_sol_types::SolError for AddressEmptyCode {
4308            type Parameters<'a> = UnderlyingSolTuple<'a>;
4309            type Token<'a> = <Self::Parameters<
4310                'a,
4311            > as alloy_sol_types::SolType>::Token<'a>;
4312            const SIGNATURE: &'static str = "AddressEmptyCode(address)";
4313            const SELECTOR: [u8; 4] = [153u8, 150u8, 179u8, 21u8];
4314            #[inline]
4315            fn new<'a>(
4316                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4317            ) -> Self {
4318                tuple.into()
4319            }
4320            #[inline]
4321            fn tokenize(&self) -> Self::Token<'_> {
4322                (
4323                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4324                        &self.target,
4325                    ),
4326                )
4327            }
4328            #[inline]
4329            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4330                <Self::Parameters<
4331                    '_,
4332                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4333                    .map(Self::new)
4334            }
4335        }
4336    };
4337    #[derive(serde::Serialize, serde::Deserialize)]
4338    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4339    /**Custom error with signature `ERC1967InvalidImplementation(address)` and selector `0x4c9c8ce3`.
4340```solidity
4341error ERC1967InvalidImplementation(address implementation);
4342```*/
4343    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4344    #[derive(Clone)]
4345    pub struct ERC1967InvalidImplementation {
4346        #[allow(missing_docs)]
4347        pub implementation: alloy::sol_types::private::Address,
4348    }
4349    #[allow(
4350        non_camel_case_types,
4351        non_snake_case,
4352        clippy::pub_underscore_fields,
4353        clippy::style
4354    )]
4355    const _: () = {
4356        use alloy::sol_types as alloy_sol_types;
4357        #[doc(hidden)]
4358        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
4359        #[doc(hidden)]
4360        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
4361        #[cfg(test)]
4362        #[allow(dead_code, unreachable_patterns)]
4363        fn _type_assertion(
4364            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4365        ) {
4366            match _t {
4367                alloy_sol_types::private::AssertTypeEq::<
4368                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4369                >(_) => {}
4370            }
4371        }
4372        #[automatically_derived]
4373        #[doc(hidden)]
4374        impl ::core::convert::From<ERC1967InvalidImplementation>
4375        for UnderlyingRustTuple<'_> {
4376            fn from(value: ERC1967InvalidImplementation) -> Self {
4377                (value.implementation,)
4378            }
4379        }
4380        #[automatically_derived]
4381        #[doc(hidden)]
4382        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4383        for ERC1967InvalidImplementation {
4384            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4385                Self { implementation: tuple.0 }
4386            }
4387        }
4388        #[automatically_derived]
4389        impl alloy_sol_types::SolError for ERC1967InvalidImplementation {
4390            type Parameters<'a> = UnderlyingSolTuple<'a>;
4391            type Token<'a> = <Self::Parameters<
4392                'a,
4393            > as alloy_sol_types::SolType>::Token<'a>;
4394            const SIGNATURE: &'static str = "ERC1967InvalidImplementation(address)";
4395            const SELECTOR: [u8; 4] = [76u8, 156u8, 140u8, 227u8];
4396            #[inline]
4397            fn new<'a>(
4398                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4399            ) -> Self {
4400                tuple.into()
4401            }
4402            #[inline]
4403            fn tokenize(&self) -> Self::Token<'_> {
4404                (
4405                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
4406                        &self.implementation,
4407                    ),
4408                )
4409            }
4410            #[inline]
4411            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4412                <Self::Parameters<
4413                    '_,
4414                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4415                    .map(Self::new)
4416            }
4417        }
4418    };
4419    #[derive(serde::Serialize, serde::Deserialize)]
4420    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4421    /**Custom error with signature `ERC1967NonPayable()` and selector `0xb398979f`.
4422```solidity
4423error ERC1967NonPayable();
4424```*/
4425    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4426    #[derive(Clone)]
4427    pub struct ERC1967NonPayable;
4428    #[allow(
4429        non_camel_case_types,
4430        non_snake_case,
4431        clippy::pub_underscore_fields,
4432        clippy::style
4433    )]
4434    const _: () = {
4435        use alloy::sol_types as alloy_sol_types;
4436        #[doc(hidden)]
4437        type UnderlyingSolTuple<'a> = ();
4438        #[doc(hidden)]
4439        type UnderlyingRustTuple<'a> = ();
4440        #[cfg(test)]
4441        #[allow(dead_code, unreachable_patterns)]
4442        fn _type_assertion(
4443            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4444        ) {
4445            match _t {
4446                alloy_sol_types::private::AssertTypeEq::<
4447                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4448                >(_) => {}
4449            }
4450        }
4451        #[automatically_derived]
4452        #[doc(hidden)]
4453        impl ::core::convert::From<ERC1967NonPayable> for UnderlyingRustTuple<'_> {
4454            fn from(value: ERC1967NonPayable) -> Self {
4455                ()
4456            }
4457        }
4458        #[automatically_derived]
4459        #[doc(hidden)]
4460        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ERC1967NonPayable {
4461            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4462                Self
4463            }
4464        }
4465        #[automatically_derived]
4466        impl alloy_sol_types::SolError for ERC1967NonPayable {
4467            type Parameters<'a> = UnderlyingSolTuple<'a>;
4468            type Token<'a> = <Self::Parameters<
4469                'a,
4470            > as alloy_sol_types::SolType>::Token<'a>;
4471            const SIGNATURE: &'static str = "ERC1967NonPayable()";
4472            const SELECTOR: [u8; 4] = [179u8, 152u8, 151u8, 159u8];
4473            #[inline]
4474            fn new<'a>(
4475                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4476            ) -> Self {
4477                tuple.into()
4478            }
4479            #[inline]
4480            fn tokenize(&self) -> Self::Token<'_> {
4481                ()
4482            }
4483            #[inline]
4484            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4485                <Self::Parameters<
4486                    '_,
4487                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4488                    .map(Self::new)
4489            }
4490        }
4491    };
4492    #[derive(serde::Serialize, serde::Deserialize)]
4493    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4494    /**Custom error with signature `FailedInnerCall()` and selector `0x1425ea42`.
4495```solidity
4496error FailedInnerCall();
4497```*/
4498    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4499    #[derive(Clone)]
4500    pub struct FailedInnerCall;
4501    #[allow(
4502        non_camel_case_types,
4503        non_snake_case,
4504        clippy::pub_underscore_fields,
4505        clippy::style
4506    )]
4507    const _: () = {
4508        use alloy::sol_types as alloy_sol_types;
4509        #[doc(hidden)]
4510        type UnderlyingSolTuple<'a> = ();
4511        #[doc(hidden)]
4512        type UnderlyingRustTuple<'a> = ();
4513        #[cfg(test)]
4514        #[allow(dead_code, unreachable_patterns)]
4515        fn _type_assertion(
4516            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4517        ) {
4518            match _t {
4519                alloy_sol_types::private::AssertTypeEq::<
4520                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4521                >(_) => {}
4522            }
4523        }
4524        #[automatically_derived]
4525        #[doc(hidden)]
4526        impl ::core::convert::From<FailedInnerCall> for UnderlyingRustTuple<'_> {
4527            fn from(value: FailedInnerCall) -> Self {
4528                ()
4529            }
4530        }
4531        #[automatically_derived]
4532        #[doc(hidden)]
4533        impl ::core::convert::From<UnderlyingRustTuple<'_>> for FailedInnerCall {
4534            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4535                Self
4536            }
4537        }
4538        #[automatically_derived]
4539        impl alloy_sol_types::SolError for FailedInnerCall {
4540            type Parameters<'a> = UnderlyingSolTuple<'a>;
4541            type Token<'a> = <Self::Parameters<
4542                'a,
4543            > as alloy_sol_types::SolType>::Token<'a>;
4544            const SIGNATURE: &'static str = "FailedInnerCall()";
4545            const SELECTOR: [u8; 4] = [20u8, 37u8, 234u8, 66u8];
4546            #[inline]
4547            fn new<'a>(
4548                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4549            ) -> Self {
4550                tuple.into()
4551            }
4552            #[inline]
4553            fn tokenize(&self) -> Self::Token<'_> {
4554                ()
4555            }
4556            #[inline]
4557            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4558                <Self::Parameters<
4559                    '_,
4560                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4561                    .map(Self::new)
4562            }
4563        }
4564    };
4565    #[derive(serde::Serialize, serde::Deserialize)]
4566    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4567    /**Custom error with signature `InsufficientSnapshotHistory()` and selector `0xb0b43877`.
4568```solidity
4569error InsufficientSnapshotHistory();
4570```*/
4571    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4572    #[derive(Clone)]
4573    pub struct InsufficientSnapshotHistory;
4574    #[allow(
4575        non_camel_case_types,
4576        non_snake_case,
4577        clippy::pub_underscore_fields,
4578        clippy::style
4579    )]
4580    const _: () = {
4581        use alloy::sol_types as alloy_sol_types;
4582        #[doc(hidden)]
4583        type UnderlyingSolTuple<'a> = ();
4584        #[doc(hidden)]
4585        type UnderlyingRustTuple<'a> = ();
4586        #[cfg(test)]
4587        #[allow(dead_code, unreachable_patterns)]
4588        fn _type_assertion(
4589            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4590        ) {
4591            match _t {
4592                alloy_sol_types::private::AssertTypeEq::<
4593                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4594                >(_) => {}
4595            }
4596        }
4597        #[automatically_derived]
4598        #[doc(hidden)]
4599        impl ::core::convert::From<InsufficientSnapshotHistory>
4600        for UnderlyingRustTuple<'_> {
4601            fn from(value: InsufficientSnapshotHistory) -> Self {
4602                ()
4603            }
4604        }
4605        #[automatically_derived]
4606        #[doc(hidden)]
4607        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4608        for InsufficientSnapshotHistory {
4609            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4610                Self
4611            }
4612        }
4613        #[automatically_derived]
4614        impl alloy_sol_types::SolError for InsufficientSnapshotHistory {
4615            type Parameters<'a> = UnderlyingSolTuple<'a>;
4616            type Token<'a> = <Self::Parameters<
4617                'a,
4618            > as alloy_sol_types::SolType>::Token<'a>;
4619            const SIGNATURE: &'static str = "InsufficientSnapshotHistory()";
4620            const SELECTOR: [u8; 4] = [176u8, 180u8, 56u8, 119u8];
4621            #[inline]
4622            fn new<'a>(
4623                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4624            ) -> Self {
4625                tuple.into()
4626            }
4627            #[inline]
4628            fn tokenize(&self) -> Self::Token<'_> {
4629                ()
4630            }
4631            #[inline]
4632            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4633                <Self::Parameters<
4634                    '_,
4635                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4636                    .map(Self::new)
4637            }
4638        }
4639    };
4640    #[derive(serde::Serialize, serde::Deserialize)]
4641    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4642    /**Custom error with signature `InvalidAddress()` and selector `0xe6c4247b`.
4643```solidity
4644error InvalidAddress();
4645```*/
4646    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4647    #[derive(Clone)]
4648    pub struct InvalidAddress;
4649    #[allow(
4650        non_camel_case_types,
4651        non_snake_case,
4652        clippy::pub_underscore_fields,
4653        clippy::style
4654    )]
4655    const _: () = {
4656        use alloy::sol_types as alloy_sol_types;
4657        #[doc(hidden)]
4658        type UnderlyingSolTuple<'a> = ();
4659        #[doc(hidden)]
4660        type UnderlyingRustTuple<'a> = ();
4661        #[cfg(test)]
4662        #[allow(dead_code, unreachable_patterns)]
4663        fn _type_assertion(
4664            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4665        ) {
4666            match _t {
4667                alloy_sol_types::private::AssertTypeEq::<
4668                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4669                >(_) => {}
4670            }
4671        }
4672        #[automatically_derived]
4673        #[doc(hidden)]
4674        impl ::core::convert::From<InvalidAddress> for UnderlyingRustTuple<'_> {
4675            fn from(value: InvalidAddress) -> Self {
4676                ()
4677            }
4678        }
4679        #[automatically_derived]
4680        #[doc(hidden)]
4681        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidAddress {
4682            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4683                Self
4684            }
4685        }
4686        #[automatically_derived]
4687        impl alloy_sol_types::SolError for InvalidAddress {
4688            type Parameters<'a> = UnderlyingSolTuple<'a>;
4689            type Token<'a> = <Self::Parameters<
4690                'a,
4691            > as alloy_sol_types::SolType>::Token<'a>;
4692            const SIGNATURE: &'static str = "InvalidAddress()";
4693            const SELECTOR: [u8; 4] = [230u8, 196u8, 36u8, 123u8];
4694            #[inline]
4695            fn new<'a>(
4696                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4697            ) -> Self {
4698                tuple.into()
4699            }
4700            #[inline]
4701            fn tokenize(&self) -> Self::Token<'_> {
4702                ()
4703            }
4704            #[inline]
4705            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4706                <Self::Parameters<
4707                    '_,
4708                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4709                    .map(Self::new)
4710            }
4711        }
4712    };
4713    #[derive(serde::Serialize, serde::Deserialize)]
4714    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4715    /**Custom error with signature `InvalidArgs()` and selector `0xa1ba07ee`.
4716```solidity
4717error InvalidArgs();
4718```*/
4719    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4720    #[derive(Clone)]
4721    pub struct InvalidArgs;
4722    #[allow(
4723        non_camel_case_types,
4724        non_snake_case,
4725        clippy::pub_underscore_fields,
4726        clippy::style
4727    )]
4728    const _: () = {
4729        use alloy::sol_types as alloy_sol_types;
4730        #[doc(hidden)]
4731        type UnderlyingSolTuple<'a> = ();
4732        #[doc(hidden)]
4733        type UnderlyingRustTuple<'a> = ();
4734        #[cfg(test)]
4735        #[allow(dead_code, unreachable_patterns)]
4736        fn _type_assertion(
4737            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4738        ) {
4739            match _t {
4740                alloy_sol_types::private::AssertTypeEq::<
4741                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4742                >(_) => {}
4743            }
4744        }
4745        #[automatically_derived]
4746        #[doc(hidden)]
4747        impl ::core::convert::From<InvalidArgs> for UnderlyingRustTuple<'_> {
4748            fn from(value: InvalidArgs) -> Self {
4749                ()
4750            }
4751        }
4752        #[automatically_derived]
4753        #[doc(hidden)]
4754        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidArgs {
4755            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4756                Self
4757            }
4758        }
4759        #[automatically_derived]
4760        impl alloy_sol_types::SolError for InvalidArgs {
4761            type Parameters<'a> = UnderlyingSolTuple<'a>;
4762            type Token<'a> = <Self::Parameters<
4763                'a,
4764            > as alloy_sol_types::SolType>::Token<'a>;
4765            const SIGNATURE: &'static str = "InvalidArgs()";
4766            const SELECTOR: [u8; 4] = [161u8, 186u8, 7u8, 238u8];
4767            #[inline]
4768            fn new<'a>(
4769                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4770            ) -> Self {
4771                tuple.into()
4772            }
4773            #[inline]
4774            fn tokenize(&self) -> Self::Token<'_> {
4775                ()
4776            }
4777            #[inline]
4778            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4779                <Self::Parameters<
4780                    '_,
4781                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4782                    .map(Self::new)
4783            }
4784        }
4785    };
4786    #[derive(serde::Serialize, serde::Deserialize)]
4787    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4788    /**Custom error with signature `InvalidHotShotBlockForCommitmentCheck()` and selector `0x615a9264`.
4789```solidity
4790error InvalidHotShotBlockForCommitmentCheck();
4791```*/
4792    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4793    #[derive(Clone)]
4794    pub struct InvalidHotShotBlockForCommitmentCheck;
4795    #[allow(
4796        non_camel_case_types,
4797        non_snake_case,
4798        clippy::pub_underscore_fields,
4799        clippy::style
4800    )]
4801    const _: () = {
4802        use alloy::sol_types as alloy_sol_types;
4803        #[doc(hidden)]
4804        type UnderlyingSolTuple<'a> = ();
4805        #[doc(hidden)]
4806        type UnderlyingRustTuple<'a> = ();
4807        #[cfg(test)]
4808        #[allow(dead_code, unreachable_patterns)]
4809        fn _type_assertion(
4810            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4811        ) {
4812            match _t {
4813                alloy_sol_types::private::AssertTypeEq::<
4814                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4815                >(_) => {}
4816            }
4817        }
4818        #[automatically_derived]
4819        #[doc(hidden)]
4820        impl ::core::convert::From<InvalidHotShotBlockForCommitmentCheck>
4821        for UnderlyingRustTuple<'_> {
4822            fn from(value: InvalidHotShotBlockForCommitmentCheck) -> Self {
4823                ()
4824            }
4825        }
4826        #[automatically_derived]
4827        #[doc(hidden)]
4828        impl ::core::convert::From<UnderlyingRustTuple<'_>>
4829        for InvalidHotShotBlockForCommitmentCheck {
4830            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4831                Self
4832            }
4833        }
4834        #[automatically_derived]
4835        impl alloy_sol_types::SolError for InvalidHotShotBlockForCommitmentCheck {
4836            type Parameters<'a> = UnderlyingSolTuple<'a>;
4837            type Token<'a> = <Self::Parameters<
4838                'a,
4839            > as alloy_sol_types::SolType>::Token<'a>;
4840            const SIGNATURE: &'static str = "InvalidHotShotBlockForCommitmentCheck()";
4841            const SELECTOR: [u8; 4] = [97u8, 90u8, 146u8, 100u8];
4842            #[inline]
4843            fn new<'a>(
4844                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4845            ) -> Self {
4846                tuple.into()
4847            }
4848            #[inline]
4849            fn tokenize(&self) -> Self::Token<'_> {
4850                ()
4851            }
4852            #[inline]
4853            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4854                <Self::Parameters<
4855                    '_,
4856                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4857                    .map(Self::new)
4858            }
4859        }
4860    };
4861    #[derive(serde::Serialize, serde::Deserialize)]
4862    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4863    /**Custom error with signature `InvalidInitialization()` and selector `0xf92ee8a9`.
4864```solidity
4865error InvalidInitialization();
4866```*/
4867    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4868    #[derive(Clone)]
4869    pub struct InvalidInitialization;
4870    #[allow(
4871        non_camel_case_types,
4872        non_snake_case,
4873        clippy::pub_underscore_fields,
4874        clippy::style
4875    )]
4876    const _: () = {
4877        use alloy::sol_types as alloy_sol_types;
4878        #[doc(hidden)]
4879        type UnderlyingSolTuple<'a> = ();
4880        #[doc(hidden)]
4881        type UnderlyingRustTuple<'a> = ();
4882        #[cfg(test)]
4883        #[allow(dead_code, unreachable_patterns)]
4884        fn _type_assertion(
4885            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4886        ) {
4887            match _t {
4888                alloy_sol_types::private::AssertTypeEq::<
4889                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4890                >(_) => {}
4891            }
4892        }
4893        #[automatically_derived]
4894        #[doc(hidden)]
4895        impl ::core::convert::From<InvalidInitialization> for UnderlyingRustTuple<'_> {
4896            fn from(value: InvalidInitialization) -> Self {
4897                ()
4898            }
4899        }
4900        #[automatically_derived]
4901        #[doc(hidden)]
4902        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidInitialization {
4903            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4904                Self
4905            }
4906        }
4907        #[automatically_derived]
4908        impl alloy_sol_types::SolError for InvalidInitialization {
4909            type Parameters<'a> = UnderlyingSolTuple<'a>;
4910            type Token<'a> = <Self::Parameters<
4911                'a,
4912            > as alloy_sol_types::SolType>::Token<'a>;
4913            const SIGNATURE: &'static str = "InvalidInitialization()";
4914            const SELECTOR: [u8; 4] = [249u8, 46u8, 232u8, 169u8];
4915            #[inline]
4916            fn new<'a>(
4917                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4918            ) -> Self {
4919                tuple.into()
4920            }
4921            #[inline]
4922            fn tokenize(&self) -> Self::Token<'_> {
4923                ()
4924            }
4925            #[inline]
4926            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
4927                <Self::Parameters<
4928                    '_,
4929                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
4930                    .map(Self::new)
4931            }
4932        }
4933    };
4934    #[derive(serde::Serialize, serde::Deserialize)]
4935    #[derive(Default, Debug, PartialEq, Eq, Hash)]
4936    /**Custom error with signature `InvalidMaxStateHistory()` and selector `0xf4a0eee0`.
4937```solidity
4938error InvalidMaxStateHistory();
4939```*/
4940    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
4941    #[derive(Clone)]
4942    pub struct InvalidMaxStateHistory;
4943    #[allow(
4944        non_camel_case_types,
4945        non_snake_case,
4946        clippy::pub_underscore_fields,
4947        clippy::style
4948    )]
4949    const _: () = {
4950        use alloy::sol_types as alloy_sol_types;
4951        #[doc(hidden)]
4952        type UnderlyingSolTuple<'a> = ();
4953        #[doc(hidden)]
4954        type UnderlyingRustTuple<'a> = ();
4955        #[cfg(test)]
4956        #[allow(dead_code, unreachable_patterns)]
4957        fn _type_assertion(
4958            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
4959        ) {
4960            match _t {
4961                alloy_sol_types::private::AssertTypeEq::<
4962                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
4963                >(_) => {}
4964            }
4965        }
4966        #[automatically_derived]
4967        #[doc(hidden)]
4968        impl ::core::convert::From<InvalidMaxStateHistory> for UnderlyingRustTuple<'_> {
4969            fn from(value: InvalidMaxStateHistory) -> Self {
4970                ()
4971            }
4972        }
4973        #[automatically_derived]
4974        #[doc(hidden)]
4975        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidMaxStateHistory {
4976            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
4977                Self
4978            }
4979        }
4980        #[automatically_derived]
4981        impl alloy_sol_types::SolError for InvalidMaxStateHistory {
4982            type Parameters<'a> = UnderlyingSolTuple<'a>;
4983            type Token<'a> = <Self::Parameters<
4984                'a,
4985            > as alloy_sol_types::SolType>::Token<'a>;
4986            const SIGNATURE: &'static str = "InvalidMaxStateHistory()";
4987            const SELECTOR: [u8; 4] = [244u8, 160u8, 238u8, 224u8];
4988            #[inline]
4989            fn new<'a>(
4990                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
4991            ) -> Self {
4992                tuple.into()
4993            }
4994            #[inline]
4995            fn tokenize(&self) -> Self::Token<'_> {
4996                ()
4997            }
4998            #[inline]
4999            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5000                <Self::Parameters<
5001                    '_,
5002                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5003                    .map(Self::new)
5004            }
5005        }
5006    };
5007    #[derive(serde::Serialize, serde::Deserialize)]
5008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5009    /**Custom error with signature `InvalidProof()` and selector `0x09bde339`.
5010```solidity
5011error InvalidProof();
5012```*/
5013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5014    #[derive(Clone)]
5015    pub struct InvalidProof;
5016    #[allow(
5017        non_camel_case_types,
5018        non_snake_case,
5019        clippy::pub_underscore_fields,
5020        clippy::style
5021    )]
5022    const _: () = {
5023        use alloy::sol_types as alloy_sol_types;
5024        #[doc(hidden)]
5025        type UnderlyingSolTuple<'a> = ();
5026        #[doc(hidden)]
5027        type UnderlyingRustTuple<'a> = ();
5028        #[cfg(test)]
5029        #[allow(dead_code, unreachable_patterns)]
5030        fn _type_assertion(
5031            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5032        ) {
5033            match _t {
5034                alloy_sol_types::private::AssertTypeEq::<
5035                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5036                >(_) => {}
5037            }
5038        }
5039        #[automatically_derived]
5040        #[doc(hidden)]
5041        impl ::core::convert::From<InvalidProof> for UnderlyingRustTuple<'_> {
5042            fn from(value: InvalidProof) -> Self {
5043                ()
5044            }
5045        }
5046        #[automatically_derived]
5047        #[doc(hidden)]
5048        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidProof {
5049            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5050                Self
5051            }
5052        }
5053        #[automatically_derived]
5054        impl alloy_sol_types::SolError for InvalidProof {
5055            type Parameters<'a> = UnderlyingSolTuple<'a>;
5056            type Token<'a> = <Self::Parameters<
5057                'a,
5058            > as alloy_sol_types::SolType>::Token<'a>;
5059            const SIGNATURE: &'static str = "InvalidProof()";
5060            const SELECTOR: [u8; 4] = [9u8, 189u8, 227u8, 57u8];
5061            #[inline]
5062            fn new<'a>(
5063                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5064            ) -> Self {
5065                tuple.into()
5066            }
5067            #[inline]
5068            fn tokenize(&self) -> Self::Token<'_> {
5069                ()
5070            }
5071            #[inline]
5072            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5073                <Self::Parameters<
5074                    '_,
5075                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5076                    .map(Self::new)
5077            }
5078        }
5079    };
5080    #[derive(serde::Serialize, serde::Deserialize)]
5081    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5082    /**Custom error with signature `InvalidScalar()` and selector `0x05b05ccc`.
5083```solidity
5084error InvalidScalar();
5085```*/
5086    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5087    #[derive(Clone)]
5088    pub struct InvalidScalar;
5089    #[allow(
5090        non_camel_case_types,
5091        non_snake_case,
5092        clippy::pub_underscore_fields,
5093        clippy::style
5094    )]
5095    const _: () = {
5096        use alloy::sol_types as alloy_sol_types;
5097        #[doc(hidden)]
5098        type UnderlyingSolTuple<'a> = ();
5099        #[doc(hidden)]
5100        type UnderlyingRustTuple<'a> = ();
5101        #[cfg(test)]
5102        #[allow(dead_code, unreachable_patterns)]
5103        fn _type_assertion(
5104            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5105        ) {
5106            match _t {
5107                alloy_sol_types::private::AssertTypeEq::<
5108                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5109                >(_) => {}
5110            }
5111        }
5112        #[automatically_derived]
5113        #[doc(hidden)]
5114        impl ::core::convert::From<InvalidScalar> for UnderlyingRustTuple<'_> {
5115            fn from(value: InvalidScalar) -> Self {
5116                ()
5117            }
5118        }
5119        #[automatically_derived]
5120        #[doc(hidden)]
5121        impl ::core::convert::From<UnderlyingRustTuple<'_>> for InvalidScalar {
5122            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5123                Self
5124            }
5125        }
5126        #[automatically_derived]
5127        impl alloy_sol_types::SolError for InvalidScalar {
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 = "InvalidScalar()";
5133            const SELECTOR: [u8; 4] = [5u8, 176u8, 92u8, 204u8];
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 `NoChangeRequired()` and selector `0xa863aec9`.
5156```solidity
5157error NoChangeRequired();
5158```*/
5159    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5160    #[derive(Clone)]
5161    pub struct NoChangeRequired;
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        type UnderlyingSolTuple<'a> = ();
5172        #[doc(hidden)]
5173        type UnderlyingRustTuple<'a> = ();
5174        #[cfg(test)]
5175        #[allow(dead_code, unreachable_patterns)]
5176        fn _type_assertion(
5177            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5178        ) {
5179            match _t {
5180                alloy_sol_types::private::AssertTypeEq::<
5181                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5182                >(_) => {}
5183            }
5184        }
5185        #[automatically_derived]
5186        #[doc(hidden)]
5187        impl ::core::convert::From<NoChangeRequired> for UnderlyingRustTuple<'_> {
5188            fn from(value: NoChangeRequired) -> Self {
5189                ()
5190            }
5191        }
5192        #[automatically_derived]
5193        #[doc(hidden)]
5194        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NoChangeRequired {
5195            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5196                Self
5197            }
5198        }
5199        #[automatically_derived]
5200        impl alloy_sol_types::SolError for NoChangeRequired {
5201            type Parameters<'a> = UnderlyingSolTuple<'a>;
5202            type Token<'a> = <Self::Parameters<
5203                'a,
5204            > as alloy_sol_types::SolType>::Token<'a>;
5205            const SIGNATURE: &'static str = "NoChangeRequired()";
5206            const SELECTOR: [u8; 4] = [168u8, 99u8, 174u8, 201u8];
5207            #[inline]
5208            fn new<'a>(
5209                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5210            ) -> Self {
5211                tuple.into()
5212            }
5213            #[inline]
5214            fn tokenize(&self) -> Self::Token<'_> {
5215                ()
5216            }
5217            #[inline]
5218            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5219                <Self::Parameters<
5220                    '_,
5221                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5222                    .map(Self::new)
5223            }
5224        }
5225    };
5226    #[derive(serde::Serialize, serde::Deserialize)]
5227    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5228    /**Custom error with signature `NotInitializing()` and selector `0xd7e6bcf8`.
5229```solidity
5230error NotInitializing();
5231```*/
5232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5233    #[derive(Clone)]
5234    pub struct NotInitializing;
5235    #[allow(
5236        non_camel_case_types,
5237        non_snake_case,
5238        clippy::pub_underscore_fields,
5239        clippy::style
5240    )]
5241    const _: () = {
5242        use alloy::sol_types as alloy_sol_types;
5243        #[doc(hidden)]
5244        type UnderlyingSolTuple<'a> = ();
5245        #[doc(hidden)]
5246        type UnderlyingRustTuple<'a> = ();
5247        #[cfg(test)]
5248        #[allow(dead_code, unreachable_patterns)]
5249        fn _type_assertion(
5250            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5251        ) {
5252            match _t {
5253                alloy_sol_types::private::AssertTypeEq::<
5254                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5255                >(_) => {}
5256            }
5257        }
5258        #[automatically_derived]
5259        #[doc(hidden)]
5260        impl ::core::convert::From<NotInitializing> for UnderlyingRustTuple<'_> {
5261            fn from(value: NotInitializing) -> Self {
5262                ()
5263            }
5264        }
5265        #[automatically_derived]
5266        #[doc(hidden)]
5267        impl ::core::convert::From<UnderlyingRustTuple<'_>> for NotInitializing {
5268            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5269                Self
5270            }
5271        }
5272        #[automatically_derived]
5273        impl alloy_sol_types::SolError for NotInitializing {
5274            type Parameters<'a> = UnderlyingSolTuple<'a>;
5275            type Token<'a> = <Self::Parameters<
5276                'a,
5277            > as alloy_sol_types::SolType>::Token<'a>;
5278            const SIGNATURE: &'static str = "NotInitializing()";
5279            const SELECTOR: [u8; 4] = [215u8, 230u8, 188u8, 248u8];
5280            #[inline]
5281            fn new<'a>(
5282                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5283            ) -> Self {
5284                tuple.into()
5285            }
5286            #[inline]
5287            fn tokenize(&self) -> Self::Token<'_> {
5288                ()
5289            }
5290            #[inline]
5291            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5292                <Self::Parameters<
5293                    '_,
5294                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5295                    .map(Self::new)
5296            }
5297        }
5298    };
5299    #[derive(serde::Serialize, serde::Deserialize)]
5300    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5301    /**Custom error with signature `OutdatedState()` and selector `0x051c46ef`.
5302```solidity
5303error OutdatedState();
5304```*/
5305    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5306    #[derive(Clone)]
5307    pub struct OutdatedState;
5308    #[allow(
5309        non_camel_case_types,
5310        non_snake_case,
5311        clippy::pub_underscore_fields,
5312        clippy::style
5313    )]
5314    const _: () = {
5315        use alloy::sol_types as alloy_sol_types;
5316        #[doc(hidden)]
5317        type UnderlyingSolTuple<'a> = ();
5318        #[doc(hidden)]
5319        type UnderlyingRustTuple<'a> = ();
5320        #[cfg(test)]
5321        #[allow(dead_code, unreachable_patterns)]
5322        fn _type_assertion(
5323            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5324        ) {
5325            match _t {
5326                alloy_sol_types::private::AssertTypeEq::<
5327                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5328                >(_) => {}
5329            }
5330        }
5331        #[automatically_derived]
5332        #[doc(hidden)]
5333        impl ::core::convert::From<OutdatedState> for UnderlyingRustTuple<'_> {
5334            fn from(value: OutdatedState) -> Self {
5335                ()
5336            }
5337        }
5338        #[automatically_derived]
5339        #[doc(hidden)]
5340        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OutdatedState {
5341            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5342                Self
5343            }
5344        }
5345        #[automatically_derived]
5346        impl alloy_sol_types::SolError for OutdatedState {
5347            type Parameters<'a> = UnderlyingSolTuple<'a>;
5348            type Token<'a> = <Self::Parameters<
5349                'a,
5350            > as alloy_sol_types::SolType>::Token<'a>;
5351            const SIGNATURE: &'static str = "OutdatedState()";
5352            const SELECTOR: [u8; 4] = [5u8, 28u8, 70u8, 239u8];
5353            #[inline]
5354            fn new<'a>(
5355                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5356            ) -> Self {
5357                tuple.into()
5358            }
5359            #[inline]
5360            fn tokenize(&self) -> Self::Token<'_> {
5361                ()
5362            }
5363            #[inline]
5364            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5365                <Self::Parameters<
5366                    '_,
5367                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5368                    .map(Self::new)
5369            }
5370        }
5371    };
5372    #[derive(serde::Serialize, serde::Deserialize)]
5373    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5374    /**Custom error with signature `OwnableInvalidOwner(address)` and selector `0x1e4fbdf7`.
5375```solidity
5376error OwnableInvalidOwner(address owner);
5377```*/
5378    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5379    #[derive(Clone)]
5380    pub struct OwnableInvalidOwner {
5381        #[allow(missing_docs)]
5382        pub owner: alloy::sol_types::private::Address,
5383    }
5384    #[allow(
5385        non_camel_case_types,
5386        non_snake_case,
5387        clippy::pub_underscore_fields,
5388        clippy::style
5389    )]
5390    const _: () = {
5391        use alloy::sol_types as alloy_sol_types;
5392        #[doc(hidden)]
5393        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5394        #[doc(hidden)]
5395        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5396        #[cfg(test)]
5397        #[allow(dead_code, unreachable_patterns)]
5398        fn _type_assertion(
5399            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5400        ) {
5401            match _t {
5402                alloy_sol_types::private::AssertTypeEq::<
5403                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5404                >(_) => {}
5405            }
5406        }
5407        #[automatically_derived]
5408        #[doc(hidden)]
5409        impl ::core::convert::From<OwnableInvalidOwner> for UnderlyingRustTuple<'_> {
5410            fn from(value: OwnableInvalidOwner) -> Self {
5411                (value.owner,)
5412            }
5413        }
5414        #[automatically_derived]
5415        #[doc(hidden)]
5416        impl ::core::convert::From<UnderlyingRustTuple<'_>> for OwnableInvalidOwner {
5417            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5418                Self { owner: tuple.0 }
5419            }
5420        }
5421        #[automatically_derived]
5422        impl alloy_sol_types::SolError for OwnableInvalidOwner {
5423            type Parameters<'a> = UnderlyingSolTuple<'a>;
5424            type Token<'a> = <Self::Parameters<
5425                'a,
5426            > as alloy_sol_types::SolType>::Token<'a>;
5427            const SIGNATURE: &'static str = "OwnableInvalidOwner(address)";
5428            const SELECTOR: [u8; 4] = [30u8, 79u8, 189u8, 247u8];
5429            #[inline]
5430            fn new<'a>(
5431                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5432            ) -> Self {
5433                tuple.into()
5434            }
5435            #[inline]
5436            fn tokenize(&self) -> Self::Token<'_> {
5437                (
5438                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5439                        &self.owner,
5440                    ),
5441                )
5442            }
5443            #[inline]
5444            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5445                <Self::Parameters<
5446                    '_,
5447                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5448                    .map(Self::new)
5449            }
5450        }
5451    };
5452    #[derive(serde::Serialize, serde::Deserialize)]
5453    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5454    /**Custom error with signature `OwnableUnauthorizedAccount(address)` and selector `0x118cdaa7`.
5455```solidity
5456error OwnableUnauthorizedAccount(address account);
5457```*/
5458    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5459    #[derive(Clone)]
5460    pub struct OwnableUnauthorizedAccount {
5461        #[allow(missing_docs)]
5462        pub account: alloy::sol_types::private::Address,
5463    }
5464    #[allow(
5465        non_camel_case_types,
5466        non_snake_case,
5467        clippy::pub_underscore_fields,
5468        clippy::style
5469    )]
5470    const _: () = {
5471        use alloy::sol_types as alloy_sol_types;
5472        #[doc(hidden)]
5473        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
5474        #[doc(hidden)]
5475        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
5476        #[cfg(test)]
5477        #[allow(dead_code, unreachable_patterns)]
5478        fn _type_assertion(
5479            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5480        ) {
5481            match _t {
5482                alloy_sol_types::private::AssertTypeEq::<
5483                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5484                >(_) => {}
5485            }
5486        }
5487        #[automatically_derived]
5488        #[doc(hidden)]
5489        impl ::core::convert::From<OwnableUnauthorizedAccount>
5490        for UnderlyingRustTuple<'_> {
5491            fn from(value: OwnableUnauthorizedAccount) -> Self {
5492                (value.account,)
5493            }
5494        }
5495        #[automatically_derived]
5496        #[doc(hidden)]
5497        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5498        for OwnableUnauthorizedAccount {
5499            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5500                Self { account: tuple.0 }
5501            }
5502        }
5503        #[automatically_derived]
5504        impl alloy_sol_types::SolError for OwnableUnauthorizedAccount {
5505            type Parameters<'a> = UnderlyingSolTuple<'a>;
5506            type Token<'a> = <Self::Parameters<
5507                'a,
5508            > as alloy_sol_types::SolType>::Token<'a>;
5509            const SIGNATURE: &'static str = "OwnableUnauthorizedAccount(address)";
5510            const SELECTOR: [u8; 4] = [17u8, 140u8, 218u8, 167u8];
5511            #[inline]
5512            fn new<'a>(
5513                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5514            ) -> Self {
5515                tuple.into()
5516            }
5517            #[inline]
5518            fn tokenize(&self) -> Self::Token<'_> {
5519                (
5520                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
5521                        &self.account,
5522                    ),
5523                )
5524            }
5525            #[inline]
5526            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5527                <Self::Parameters<
5528                    '_,
5529                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5530                    .map(Self::new)
5531            }
5532        }
5533    };
5534    #[derive(serde::Serialize, serde::Deserialize)]
5535    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5536    /**Custom error with signature `OwnershipCannotBeRenounced()` and selector `0x2fab92ca`.
5537```solidity
5538error OwnershipCannotBeRenounced();
5539```*/
5540    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5541    #[derive(Clone)]
5542    pub struct OwnershipCannotBeRenounced;
5543    #[allow(
5544        non_camel_case_types,
5545        non_snake_case,
5546        clippy::pub_underscore_fields,
5547        clippy::style
5548    )]
5549    const _: () = {
5550        use alloy::sol_types as alloy_sol_types;
5551        #[doc(hidden)]
5552        type UnderlyingSolTuple<'a> = ();
5553        #[doc(hidden)]
5554        type UnderlyingRustTuple<'a> = ();
5555        #[cfg(test)]
5556        #[allow(dead_code, unreachable_patterns)]
5557        fn _type_assertion(
5558            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5559        ) {
5560            match _t {
5561                alloy_sol_types::private::AssertTypeEq::<
5562                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5563                >(_) => {}
5564            }
5565        }
5566        #[automatically_derived]
5567        #[doc(hidden)]
5568        impl ::core::convert::From<OwnershipCannotBeRenounced>
5569        for UnderlyingRustTuple<'_> {
5570            fn from(value: OwnershipCannotBeRenounced) -> Self {
5571                ()
5572            }
5573        }
5574        #[automatically_derived]
5575        #[doc(hidden)]
5576        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5577        for OwnershipCannotBeRenounced {
5578            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5579                Self
5580            }
5581        }
5582        #[automatically_derived]
5583        impl alloy_sol_types::SolError for OwnershipCannotBeRenounced {
5584            type Parameters<'a> = UnderlyingSolTuple<'a>;
5585            type Token<'a> = <Self::Parameters<
5586                'a,
5587            > as alloy_sol_types::SolType>::Token<'a>;
5588            const SIGNATURE: &'static str = "OwnershipCannotBeRenounced()";
5589            const SELECTOR: [u8; 4] = [47u8, 171u8, 146u8, 202u8];
5590            #[inline]
5591            fn new<'a>(
5592                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5593            ) -> Self {
5594                tuple.into()
5595            }
5596            #[inline]
5597            fn tokenize(&self) -> Self::Token<'_> {
5598                ()
5599            }
5600            #[inline]
5601            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5602                <Self::Parameters<
5603                    '_,
5604                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5605                    .map(Self::new)
5606            }
5607        }
5608    };
5609    #[derive(serde::Serialize, serde::Deserialize)]
5610    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5611    /**Custom error with signature `ProverNotPermissioned()` and selector `0xa3a64780`.
5612```solidity
5613error ProverNotPermissioned();
5614```*/
5615    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5616    #[derive(Clone)]
5617    pub struct ProverNotPermissioned;
5618    #[allow(
5619        non_camel_case_types,
5620        non_snake_case,
5621        clippy::pub_underscore_fields,
5622        clippy::style
5623    )]
5624    const _: () = {
5625        use alloy::sol_types as alloy_sol_types;
5626        #[doc(hidden)]
5627        type UnderlyingSolTuple<'a> = ();
5628        #[doc(hidden)]
5629        type UnderlyingRustTuple<'a> = ();
5630        #[cfg(test)]
5631        #[allow(dead_code, unreachable_patterns)]
5632        fn _type_assertion(
5633            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5634        ) {
5635            match _t {
5636                alloy_sol_types::private::AssertTypeEq::<
5637                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5638                >(_) => {}
5639            }
5640        }
5641        #[automatically_derived]
5642        #[doc(hidden)]
5643        impl ::core::convert::From<ProverNotPermissioned> for UnderlyingRustTuple<'_> {
5644            fn from(value: ProverNotPermissioned) -> Self {
5645                ()
5646            }
5647        }
5648        #[automatically_derived]
5649        #[doc(hidden)]
5650        impl ::core::convert::From<UnderlyingRustTuple<'_>> for ProverNotPermissioned {
5651            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5652                Self
5653            }
5654        }
5655        #[automatically_derived]
5656        impl alloy_sol_types::SolError for ProverNotPermissioned {
5657            type Parameters<'a> = UnderlyingSolTuple<'a>;
5658            type Token<'a> = <Self::Parameters<
5659                'a,
5660            > as alloy_sol_types::SolType>::Token<'a>;
5661            const SIGNATURE: &'static str = "ProverNotPermissioned()";
5662            const SELECTOR: [u8; 4] = [163u8, 166u8, 71u8, 128u8];
5663            #[inline]
5664            fn new<'a>(
5665                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5666            ) -> Self {
5667                tuple.into()
5668            }
5669            #[inline]
5670            fn tokenize(&self) -> Self::Token<'_> {
5671                ()
5672            }
5673            #[inline]
5674            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5675                <Self::Parameters<
5676                    '_,
5677                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5678                    .map(Self::new)
5679            }
5680        }
5681    };
5682    #[derive(serde::Serialize, serde::Deserialize)]
5683    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5684    /**Custom error with signature `UUPSUnauthorizedCallContext()` and selector `0xe07c8dba`.
5685```solidity
5686error UUPSUnauthorizedCallContext();
5687```*/
5688    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5689    #[derive(Clone)]
5690    pub struct UUPSUnauthorizedCallContext;
5691    #[allow(
5692        non_camel_case_types,
5693        non_snake_case,
5694        clippy::pub_underscore_fields,
5695        clippy::style
5696    )]
5697    const _: () = {
5698        use alloy::sol_types as alloy_sol_types;
5699        #[doc(hidden)]
5700        type UnderlyingSolTuple<'a> = ();
5701        #[doc(hidden)]
5702        type UnderlyingRustTuple<'a> = ();
5703        #[cfg(test)]
5704        #[allow(dead_code, unreachable_patterns)]
5705        fn _type_assertion(
5706            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5707        ) {
5708            match _t {
5709                alloy_sol_types::private::AssertTypeEq::<
5710                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5711                >(_) => {}
5712            }
5713        }
5714        #[automatically_derived]
5715        #[doc(hidden)]
5716        impl ::core::convert::From<UUPSUnauthorizedCallContext>
5717        for UnderlyingRustTuple<'_> {
5718            fn from(value: UUPSUnauthorizedCallContext) -> Self {
5719                ()
5720            }
5721        }
5722        #[automatically_derived]
5723        #[doc(hidden)]
5724        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5725        for UUPSUnauthorizedCallContext {
5726            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5727                Self
5728            }
5729        }
5730        #[automatically_derived]
5731        impl alloy_sol_types::SolError for UUPSUnauthorizedCallContext {
5732            type Parameters<'a> = UnderlyingSolTuple<'a>;
5733            type Token<'a> = <Self::Parameters<
5734                'a,
5735            > as alloy_sol_types::SolType>::Token<'a>;
5736            const SIGNATURE: &'static str = "UUPSUnauthorizedCallContext()";
5737            const SELECTOR: [u8; 4] = [224u8, 124u8, 141u8, 186u8];
5738            #[inline]
5739            fn new<'a>(
5740                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5741            ) -> Self {
5742                tuple.into()
5743            }
5744            #[inline]
5745            fn tokenize(&self) -> Self::Token<'_> {
5746                ()
5747            }
5748            #[inline]
5749            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5750                <Self::Parameters<
5751                    '_,
5752                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5753                    .map(Self::new)
5754            }
5755        }
5756    };
5757    #[derive(serde::Serialize, serde::Deserialize)]
5758    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5759    /**Custom error with signature `UUPSUnsupportedProxiableUUID(bytes32)` and selector `0xaa1d49a4`.
5760```solidity
5761error UUPSUnsupportedProxiableUUID(bytes32 slot);
5762```*/
5763    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5764    #[derive(Clone)]
5765    pub struct UUPSUnsupportedProxiableUUID {
5766        #[allow(missing_docs)]
5767        pub slot: alloy::sol_types::private::FixedBytes<32>,
5768    }
5769    #[allow(
5770        non_camel_case_types,
5771        non_snake_case,
5772        clippy::pub_underscore_fields,
5773        clippy::style
5774    )]
5775    const _: () = {
5776        use alloy::sol_types as alloy_sol_types;
5777        #[doc(hidden)]
5778        type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
5779        #[doc(hidden)]
5780        type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
5781        #[cfg(test)]
5782        #[allow(dead_code, unreachable_patterns)]
5783        fn _type_assertion(
5784            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5785        ) {
5786            match _t {
5787                alloy_sol_types::private::AssertTypeEq::<
5788                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5789                >(_) => {}
5790            }
5791        }
5792        #[automatically_derived]
5793        #[doc(hidden)]
5794        impl ::core::convert::From<UUPSUnsupportedProxiableUUID>
5795        for UnderlyingRustTuple<'_> {
5796            fn from(value: UUPSUnsupportedProxiableUUID) -> Self {
5797                (value.slot,)
5798            }
5799        }
5800        #[automatically_derived]
5801        #[doc(hidden)]
5802        impl ::core::convert::From<UnderlyingRustTuple<'_>>
5803        for UUPSUnsupportedProxiableUUID {
5804            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5805                Self { slot: tuple.0 }
5806            }
5807        }
5808        #[automatically_derived]
5809        impl alloy_sol_types::SolError for UUPSUnsupportedProxiableUUID {
5810            type Parameters<'a> = UnderlyingSolTuple<'a>;
5811            type Token<'a> = <Self::Parameters<
5812                'a,
5813            > as alloy_sol_types::SolType>::Token<'a>;
5814            const SIGNATURE: &'static str = "UUPSUnsupportedProxiableUUID(bytes32)";
5815            const SELECTOR: [u8; 4] = [170u8, 29u8, 73u8, 164u8];
5816            #[inline]
5817            fn new<'a>(
5818                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5819            ) -> Self {
5820                tuple.into()
5821            }
5822            #[inline]
5823            fn tokenize(&self) -> Self::Token<'_> {
5824                (
5825                    <alloy::sol_types::sol_data::FixedBytes<
5826                        32,
5827                    > as alloy_sol_types::SolType>::tokenize(&self.slot),
5828                )
5829            }
5830            #[inline]
5831            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5832                <Self::Parameters<
5833                    '_,
5834                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5835                    .map(Self::new)
5836            }
5837        }
5838    };
5839    #[derive(serde::Serialize, serde::Deserialize)]
5840    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5841    /**Custom error with signature `WrongStakeTableUsed()` and selector `0x51618089`.
5842```solidity
5843error WrongStakeTableUsed();
5844```*/
5845    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
5846    #[derive(Clone)]
5847    pub struct WrongStakeTableUsed;
5848    #[allow(
5849        non_camel_case_types,
5850        non_snake_case,
5851        clippy::pub_underscore_fields,
5852        clippy::style
5853    )]
5854    const _: () = {
5855        use alloy::sol_types as alloy_sol_types;
5856        #[doc(hidden)]
5857        type UnderlyingSolTuple<'a> = ();
5858        #[doc(hidden)]
5859        type UnderlyingRustTuple<'a> = ();
5860        #[cfg(test)]
5861        #[allow(dead_code, unreachable_patterns)]
5862        fn _type_assertion(
5863            _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
5864        ) {
5865            match _t {
5866                alloy_sol_types::private::AssertTypeEq::<
5867                    <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
5868                >(_) => {}
5869            }
5870        }
5871        #[automatically_derived]
5872        #[doc(hidden)]
5873        impl ::core::convert::From<WrongStakeTableUsed> for UnderlyingRustTuple<'_> {
5874            fn from(value: WrongStakeTableUsed) -> Self {
5875                ()
5876            }
5877        }
5878        #[automatically_derived]
5879        #[doc(hidden)]
5880        impl ::core::convert::From<UnderlyingRustTuple<'_>> for WrongStakeTableUsed {
5881            fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
5882                Self
5883            }
5884        }
5885        #[automatically_derived]
5886        impl alloy_sol_types::SolError for WrongStakeTableUsed {
5887            type Parameters<'a> = UnderlyingSolTuple<'a>;
5888            type Token<'a> = <Self::Parameters<
5889                'a,
5890            > as alloy_sol_types::SolType>::Token<'a>;
5891            const SIGNATURE: &'static str = "WrongStakeTableUsed()";
5892            const SELECTOR: [u8; 4] = [81u8, 97u8, 128u8, 137u8];
5893            #[inline]
5894            fn new<'a>(
5895                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
5896            ) -> Self {
5897                tuple.into()
5898            }
5899            #[inline]
5900            fn tokenize(&self) -> Self::Token<'_> {
5901                ()
5902            }
5903            #[inline]
5904            fn abi_decode_raw_validate(data: &[u8]) -> alloy_sol_types::Result<Self> {
5905                <Self::Parameters<
5906                    '_,
5907                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
5908                    .map(Self::new)
5909            }
5910        }
5911    };
5912    #[derive(serde::Serialize, serde::Deserialize)]
5913    #[derive(Default, Debug, PartialEq, Eq, Hash)]
5914    /**Event with signature `Initialized(uint64)` and selector `0xc7f505b2f371ae2175ee4913f4499e1f2633a7b5936321eed1cdaeb6115181d2`.
5915```solidity
5916event Initialized(uint64 version);
5917```*/
5918    #[allow(
5919        non_camel_case_types,
5920        non_snake_case,
5921        clippy::pub_underscore_fields,
5922        clippy::style
5923    )]
5924    #[derive(Clone)]
5925    pub struct Initialized {
5926        #[allow(missing_docs)]
5927        pub version: u64,
5928    }
5929    #[allow(
5930        non_camel_case_types,
5931        non_snake_case,
5932        clippy::pub_underscore_fields,
5933        clippy::style
5934    )]
5935    const _: () = {
5936        use alloy::sol_types as alloy_sol_types;
5937        #[automatically_derived]
5938        impl alloy_sol_types::SolEvent for Initialized {
5939            type DataTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
5940            type DataToken<'a> = <Self::DataTuple<
5941                'a,
5942            > as alloy_sol_types::SolType>::Token<'a>;
5943            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
5944            const SIGNATURE: &'static str = "Initialized(uint64)";
5945            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
5946                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
5947                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
5948                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
5949            ]);
5950            const ANONYMOUS: bool = false;
5951            #[allow(unused_variables)]
5952            #[inline]
5953            fn new(
5954                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
5955                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
5956            ) -> Self {
5957                Self { version: data.0 }
5958            }
5959            #[inline]
5960            fn check_signature(
5961                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
5962            ) -> alloy_sol_types::Result<()> {
5963                if topics.0 != Self::SIGNATURE_HASH {
5964                    return Err(
5965                        alloy_sol_types::Error::invalid_event_signature_hash(
5966                            Self::SIGNATURE,
5967                            topics.0,
5968                            Self::SIGNATURE_HASH,
5969                        ),
5970                    );
5971                }
5972                Ok(())
5973            }
5974            #[inline]
5975            fn tokenize_body(&self) -> Self::DataToken<'_> {
5976                (
5977                    <alloy::sol_types::sol_data::Uint<
5978                        64,
5979                    > as alloy_sol_types::SolType>::tokenize(&self.version),
5980                )
5981            }
5982            #[inline]
5983            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
5984                (Self::SIGNATURE_HASH.into(),)
5985            }
5986            #[inline]
5987            fn encode_topics_raw(
5988                &self,
5989                out: &mut [alloy_sol_types::abi::token::WordToken],
5990            ) -> alloy_sol_types::Result<()> {
5991                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
5992                    return Err(alloy_sol_types::Error::Overrun);
5993                }
5994                out[0usize] = alloy_sol_types::abi::token::WordToken(
5995                    Self::SIGNATURE_HASH,
5996                );
5997                Ok(())
5998            }
5999        }
6000        #[automatically_derived]
6001        impl alloy_sol_types::private::IntoLogData for Initialized {
6002            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6003                From::from(self)
6004            }
6005            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6006                From::from(&self)
6007            }
6008        }
6009        #[automatically_derived]
6010        impl From<&Initialized> for alloy_sol_types::private::LogData {
6011            #[inline]
6012            fn from(this: &Initialized) -> alloy_sol_types::private::LogData {
6013                alloy_sol_types::SolEvent::encode_log_data(this)
6014            }
6015        }
6016    };
6017    #[derive(serde::Serialize, serde::Deserialize)]
6018    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6019    /**Event with signature `NewState(uint64,uint64,uint256)` and selector `0xa04a773924505a418564363725f56832f5772e6b8d0dbd6efce724dfe803dae6`.
6020```solidity
6021event NewState(uint64 indexed viewNum, uint64 indexed blockHeight, BN254.ScalarField blockCommRoot);
6022```*/
6023    #[allow(
6024        non_camel_case_types,
6025        non_snake_case,
6026        clippy::pub_underscore_fields,
6027        clippy::style
6028    )]
6029    #[derive(Clone)]
6030    pub struct NewState {
6031        #[allow(missing_docs)]
6032        pub viewNum: u64,
6033        #[allow(missing_docs)]
6034        pub blockHeight: u64,
6035        #[allow(missing_docs)]
6036        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
6037    }
6038    #[allow(
6039        non_camel_case_types,
6040        non_snake_case,
6041        clippy::pub_underscore_fields,
6042        clippy::style
6043    )]
6044    const _: () = {
6045        use alloy::sol_types as alloy_sol_types;
6046        #[automatically_derived]
6047        impl alloy_sol_types::SolEvent for NewState {
6048            type DataTuple<'a> = (BN254::ScalarField,);
6049            type DataToken<'a> = <Self::DataTuple<
6050                'a,
6051            > as alloy_sol_types::SolType>::Token<'a>;
6052            type TopicList = (
6053                alloy_sol_types::sol_data::FixedBytes<32>,
6054                alloy::sol_types::sol_data::Uint<64>,
6055                alloy::sol_types::sol_data::Uint<64>,
6056            );
6057            const SIGNATURE: &'static str = "NewState(uint64,uint64,uint256)";
6058            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6059                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
6060                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
6061                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
6062            ]);
6063            const ANONYMOUS: bool = false;
6064            #[allow(unused_variables)]
6065            #[inline]
6066            fn new(
6067                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6068                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6069            ) -> Self {
6070                Self {
6071                    viewNum: topics.1,
6072                    blockHeight: topics.2,
6073                    blockCommRoot: data.0,
6074                }
6075            }
6076            #[inline]
6077            fn check_signature(
6078                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6079            ) -> alloy_sol_types::Result<()> {
6080                if topics.0 != Self::SIGNATURE_HASH {
6081                    return Err(
6082                        alloy_sol_types::Error::invalid_event_signature_hash(
6083                            Self::SIGNATURE,
6084                            topics.0,
6085                            Self::SIGNATURE_HASH,
6086                        ),
6087                    );
6088                }
6089                Ok(())
6090            }
6091            #[inline]
6092            fn tokenize_body(&self) -> Self::DataToken<'_> {
6093                (
6094                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
6095                        &self.blockCommRoot,
6096                    ),
6097                )
6098            }
6099            #[inline]
6100            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6101                (
6102                    Self::SIGNATURE_HASH.into(),
6103                    self.viewNum.clone(),
6104                    self.blockHeight.clone(),
6105                )
6106            }
6107            #[inline]
6108            fn encode_topics_raw(
6109                &self,
6110                out: &mut [alloy_sol_types::abi::token::WordToken],
6111            ) -> alloy_sol_types::Result<()> {
6112                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6113                    return Err(alloy_sol_types::Error::Overrun);
6114                }
6115                out[0usize] = alloy_sol_types::abi::token::WordToken(
6116                    Self::SIGNATURE_HASH,
6117                );
6118                out[1usize] = <alloy::sol_types::sol_data::Uint<
6119                    64,
6120                > as alloy_sol_types::EventTopic>::encode_topic(&self.viewNum);
6121                out[2usize] = <alloy::sol_types::sol_data::Uint<
6122                    64,
6123                > as alloy_sol_types::EventTopic>::encode_topic(&self.blockHeight);
6124                Ok(())
6125            }
6126        }
6127        #[automatically_derived]
6128        impl alloy_sol_types::private::IntoLogData for NewState {
6129            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6130                From::from(self)
6131            }
6132            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6133                From::from(&self)
6134            }
6135        }
6136        #[automatically_derived]
6137        impl From<&NewState> for alloy_sol_types::private::LogData {
6138            #[inline]
6139            fn from(this: &NewState) -> alloy_sol_types::private::LogData {
6140                alloy_sol_types::SolEvent::encode_log_data(this)
6141            }
6142        }
6143    };
6144    #[derive(serde::Serialize, serde::Deserialize)]
6145    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6146    /**Event with signature `OwnershipTransferred(address,address)` and selector `0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0`.
6147```solidity
6148event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
6149```*/
6150    #[allow(
6151        non_camel_case_types,
6152        non_snake_case,
6153        clippy::pub_underscore_fields,
6154        clippy::style
6155    )]
6156    #[derive(Clone)]
6157    pub struct OwnershipTransferred {
6158        #[allow(missing_docs)]
6159        pub previousOwner: alloy::sol_types::private::Address,
6160        #[allow(missing_docs)]
6161        pub newOwner: alloy::sol_types::private::Address,
6162    }
6163    #[allow(
6164        non_camel_case_types,
6165        non_snake_case,
6166        clippy::pub_underscore_fields,
6167        clippy::style
6168    )]
6169    const _: () = {
6170        use alloy::sol_types as alloy_sol_types;
6171        #[automatically_derived]
6172        impl alloy_sol_types::SolEvent for OwnershipTransferred {
6173            type DataTuple<'a> = ();
6174            type DataToken<'a> = <Self::DataTuple<
6175                'a,
6176            > as alloy_sol_types::SolType>::Token<'a>;
6177            type TopicList = (
6178                alloy_sol_types::sol_data::FixedBytes<32>,
6179                alloy::sol_types::sol_data::Address,
6180                alloy::sol_types::sol_data::Address,
6181            );
6182            const SIGNATURE: &'static str = "OwnershipTransferred(address,address)";
6183            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6184                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
6185                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
6186                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
6187            ]);
6188            const ANONYMOUS: bool = false;
6189            #[allow(unused_variables)]
6190            #[inline]
6191            fn new(
6192                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6193                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6194            ) -> Self {
6195                Self {
6196                    previousOwner: topics.1,
6197                    newOwner: topics.2,
6198                }
6199            }
6200            #[inline]
6201            fn check_signature(
6202                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6203            ) -> alloy_sol_types::Result<()> {
6204                if topics.0 != Self::SIGNATURE_HASH {
6205                    return Err(
6206                        alloy_sol_types::Error::invalid_event_signature_hash(
6207                            Self::SIGNATURE,
6208                            topics.0,
6209                            Self::SIGNATURE_HASH,
6210                        ),
6211                    );
6212                }
6213                Ok(())
6214            }
6215            #[inline]
6216            fn tokenize_body(&self) -> Self::DataToken<'_> {
6217                ()
6218            }
6219            #[inline]
6220            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6221                (
6222                    Self::SIGNATURE_HASH.into(),
6223                    self.previousOwner.clone(),
6224                    self.newOwner.clone(),
6225                )
6226            }
6227            #[inline]
6228            fn encode_topics_raw(
6229                &self,
6230                out: &mut [alloy_sol_types::abi::token::WordToken],
6231            ) -> alloy_sol_types::Result<()> {
6232                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6233                    return Err(alloy_sol_types::Error::Overrun);
6234                }
6235                out[0usize] = alloy_sol_types::abi::token::WordToken(
6236                    Self::SIGNATURE_HASH,
6237                );
6238                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6239                    &self.previousOwner,
6240                );
6241                out[2usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6242                    &self.newOwner,
6243                );
6244                Ok(())
6245            }
6246        }
6247        #[automatically_derived]
6248        impl alloy_sol_types::private::IntoLogData for OwnershipTransferred {
6249            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6250                From::from(self)
6251            }
6252            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6253                From::from(&self)
6254            }
6255        }
6256        #[automatically_derived]
6257        impl From<&OwnershipTransferred> for alloy_sol_types::private::LogData {
6258            #[inline]
6259            fn from(this: &OwnershipTransferred) -> alloy_sol_types::private::LogData {
6260                alloy_sol_types::SolEvent::encode_log_data(this)
6261            }
6262        }
6263    };
6264    #[derive(serde::Serialize, serde::Deserialize)]
6265    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6266    /**Event with signature `PermissionedProverNotRequired()` and selector `0x9a5f57de856dd668c54dd95e5c55df93432171cbca49a8776d5620ea59c02450`.
6267```solidity
6268event PermissionedProverNotRequired();
6269```*/
6270    #[allow(
6271        non_camel_case_types,
6272        non_snake_case,
6273        clippy::pub_underscore_fields,
6274        clippy::style
6275    )]
6276    #[derive(Clone)]
6277    pub struct PermissionedProverNotRequired;
6278    #[allow(
6279        non_camel_case_types,
6280        non_snake_case,
6281        clippy::pub_underscore_fields,
6282        clippy::style
6283    )]
6284    const _: () = {
6285        use alloy::sol_types as alloy_sol_types;
6286        #[automatically_derived]
6287        impl alloy_sol_types::SolEvent for PermissionedProverNotRequired {
6288            type DataTuple<'a> = ();
6289            type DataToken<'a> = <Self::DataTuple<
6290                'a,
6291            > as alloy_sol_types::SolType>::Token<'a>;
6292            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6293            const SIGNATURE: &'static str = "PermissionedProverNotRequired()";
6294            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6295                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
6296                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
6297                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
6298            ]);
6299            const ANONYMOUS: bool = false;
6300            #[allow(unused_variables)]
6301            #[inline]
6302            fn new(
6303                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6304                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6305            ) -> Self {
6306                Self {}
6307            }
6308            #[inline]
6309            fn check_signature(
6310                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6311            ) -> alloy_sol_types::Result<()> {
6312                if topics.0 != Self::SIGNATURE_HASH {
6313                    return Err(
6314                        alloy_sol_types::Error::invalid_event_signature_hash(
6315                            Self::SIGNATURE,
6316                            topics.0,
6317                            Self::SIGNATURE_HASH,
6318                        ),
6319                    );
6320                }
6321                Ok(())
6322            }
6323            #[inline]
6324            fn tokenize_body(&self) -> Self::DataToken<'_> {
6325                ()
6326            }
6327            #[inline]
6328            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6329                (Self::SIGNATURE_HASH.into(),)
6330            }
6331            #[inline]
6332            fn encode_topics_raw(
6333                &self,
6334                out: &mut [alloy_sol_types::abi::token::WordToken],
6335            ) -> alloy_sol_types::Result<()> {
6336                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6337                    return Err(alloy_sol_types::Error::Overrun);
6338                }
6339                out[0usize] = alloy_sol_types::abi::token::WordToken(
6340                    Self::SIGNATURE_HASH,
6341                );
6342                Ok(())
6343            }
6344        }
6345        #[automatically_derived]
6346        impl alloy_sol_types::private::IntoLogData for PermissionedProverNotRequired {
6347            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6348                From::from(self)
6349            }
6350            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6351                From::from(&self)
6352            }
6353        }
6354        #[automatically_derived]
6355        impl From<&PermissionedProverNotRequired> for alloy_sol_types::private::LogData {
6356            #[inline]
6357            fn from(
6358                this: &PermissionedProverNotRequired,
6359            ) -> alloy_sol_types::private::LogData {
6360                alloy_sol_types::SolEvent::encode_log_data(this)
6361            }
6362        }
6363    };
6364    #[derive(serde::Serialize, serde::Deserialize)]
6365    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6366    /**Event with signature `PermissionedProverRequired(address)` and selector `0x8017bb887fdf8fca4314a9d40f6e73b3b81002d67e5cfa85d88173af6aa46072`.
6367```solidity
6368event PermissionedProverRequired(address permissionedProver);
6369```*/
6370    #[allow(
6371        non_camel_case_types,
6372        non_snake_case,
6373        clippy::pub_underscore_fields,
6374        clippy::style
6375    )]
6376    #[derive(Clone)]
6377    pub struct PermissionedProverRequired {
6378        #[allow(missing_docs)]
6379        pub permissionedProver: alloy::sol_types::private::Address,
6380    }
6381    #[allow(
6382        non_camel_case_types,
6383        non_snake_case,
6384        clippy::pub_underscore_fields,
6385        clippy::style
6386    )]
6387    const _: () = {
6388        use alloy::sol_types as alloy_sol_types;
6389        #[automatically_derived]
6390        impl alloy_sol_types::SolEvent for PermissionedProverRequired {
6391            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6392            type DataToken<'a> = <Self::DataTuple<
6393                'a,
6394            > as alloy_sol_types::SolType>::Token<'a>;
6395            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6396            const SIGNATURE: &'static str = "PermissionedProverRequired(address)";
6397            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6398                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
6399                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
6400                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
6401            ]);
6402            const ANONYMOUS: bool = false;
6403            #[allow(unused_variables)]
6404            #[inline]
6405            fn new(
6406                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6407                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6408            ) -> Self {
6409                Self { permissionedProver: data.0 }
6410            }
6411            #[inline]
6412            fn check_signature(
6413                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6414            ) -> alloy_sol_types::Result<()> {
6415                if topics.0 != Self::SIGNATURE_HASH {
6416                    return Err(
6417                        alloy_sol_types::Error::invalid_event_signature_hash(
6418                            Self::SIGNATURE,
6419                            topics.0,
6420                            Self::SIGNATURE_HASH,
6421                        ),
6422                    );
6423                }
6424                Ok(())
6425            }
6426            #[inline]
6427            fn tokenize_body(&self) -> Self::DataToken<'_> {
6428                (
6429                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6430                        &self.permissionedProver,
6431                    ),
6432                )
6433            }
6434            #[inline]
6435            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6436                (Self::SIGNATURE_HASH.into(),)
6437            }
6438            #[inline]
6439            fn encode_topics_raw(
6440                &self,
6441                out: &mut [alloy_sol_types::abi::token::WordToken],
6442            ) -> alloy_sol_types::Result<()> {
6443                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6444                    return Err(alloy_sol_types::Error::Overrun);
6445                }
6446                out[0usize] = alloy_sol_types::abi::token::WordToken(
6447                    Self::SIGNATURE_HASH,
6448                );
6449                Ok(())
6450            }
6451        }
6452        #[automatically_derived]
6453        impl alloy_sol_types::private::IntoLogData for PermissionedProverRequired {
6454            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6455                From::from(self)
6456            }
6457            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6458                From::from(&self)
6459            }
6460        }
6461        #[automatically_derived]
6462        impl From<&PermissionedProverRequired> for alloy_sol_types::private::LogData {
6463            #[inline]
6464            fn from(
6465                this: &PermissionedProverRequired,
6466            ) -> alloy_sol_types::private::LogData {
6467                alloy_sol_types::SolEvent::encode_log_data(this)
6468            }
6469        }
6470    };
6471    #[derive(serde::Serialize, serde::Deserialize)]
6472    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6473    /**Event with signature `Upgrade(address)` and selector `0xf78721226efe9a1bb678189a16d1554928b9f2192e2cb93eeda83b79fa40007d`.
6474```solidity
6475event Upgrade(address implementation);
6476```*/
6477    #[allow(
6478        non_camel_case_types,
6479        non_snake_case,
6480        clippy::pub_underscore_fields,
6481        clippy::style
6482    )]
6483    #[derive(Clone)]
6484    pub struct Upgrade {
6485        #[allow(missing_docs)]
6486        pub implementation: alloy::sol_types::private::Address,
6487    }
6488    #[allow(
6489        non_camel_case_types,
6490        non_snake_case,
6491        clippy::pub_underscore_fields,
6492        clippy::style
6493    )]
6494    const _: () = {
6495        use alloy::sol_types as alloy_sol_types;
6496        #[automatically_derived]
6497        impl alloy_sol_types::SolEvent for Upgrade {
6498            type DataTuple<'a> = (alloy::sol_types::sol_data::Address,);
6499            type DataToken<'a> = <Self::DataTuple<
6500                'a,
6501            > as alloy_sol_types::SolType>::Token<'a>;
6502            type TopicList = (alloy_sol_types::sol_data::FixedBytes<32>,);
6503            const SIGNATURE: &'static str = "Upgrade(address)";
6504            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6505                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
6506                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
6507                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
6508            ]);
6509            const ANONYMOUS: bool = false;
6510            #[allow(unused_variables)]
6511            #[inline]
6512            fn new(
6513                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6514                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6515            ) -> Self {
6516                Self { implementation: data.0 }
6517            }
6518            #[inline]
6519            fn check_signature(
6520                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6521            ) -> alloy_sol_types::Result<()> {
6522                if topics.0 != Self::SIGNATURE_HASH {
6523                    return Err(
6524                        alloy_sol_types::Error::invalid_event_signature_hash(
6525                            Self::SIGNATURE,
6526                            topics.0,
6527                            Self::SIGNATURE_HASH,
6528                        ),
6529                    );
6530                }
6531                Ok(())
6532            }
6533            #[inline]
6534            fn tokenize_body(&self) -> Self::DataToken<'_> {
6535                (
6536                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
6537                        &self.implementation,
6538                    ),
6539                )
6540            }
6541            #[inline]
6542            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6543                (Self::SIGNATURE_HASH.into(),)
6544            }
6545            #[inline]
6546            fn encode_topics_raw(
6547                &self,
6548                out: &mut [alloy_sol_types::abi::token::WordToken],
6549            ) -> alloy_sol_types::Result<()> {
6550                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6551                    return Err(alloy_sol_types::Error::Overrun);
6552                }
6553                out[0usize] = alloy_sol_types::abi::token::WordToken(
6554                    Self::SIGNATURE_HASH,
6555                );
6556                Ok(())
6557            }
6558        }
6559        #[automatically_derived]
6560        impl alloy_sol_types::private::IntoLogData for Upgrade {
6561            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6562                From::from(self)
6563            }
6564            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6565                From::from(&self)
6566            }
6567        }
6568        #[automatically_derived]
6569        impl From<&Upgrade> for alloy_sol_types::private::LogData {
6570            #[inline]
6571            fn from(this: &Upgrade) -> alloy_sol_types::private::LogData {
6572                alloy_sol_types::SolEvent::encode_log_data(this)
6573            }
6574        }
6575    };
6576    #[derive(serde::Serialize, serde::Deserialize)]
6577    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6578    /**Event with signature `Upgraded(address)` and selector `0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b`.
6579```solidity
6580event Upgraded(address indexed implementation);
6581```*/
6582    #[allow(
6583        non_camel_case_types,
6584        non_snake_case,
6585        clippy::pub_underscore_fields,
6586        clippy::style
6587    )]
6588    #[derive(Clone)]
6589    pub struct Upgraded {
6590        #[allow(missing_docs)]
6591        pub implementation: alloy::sol_types::private::Address,
6592    }
6593    #[allow(
6594        non_camel_case_types,
6595        non_snake_case,
6596        clippy::pub_underscore_fields,
6597        clippy::style
6598    )]
6599    const _: () = {
6600        use alloy::sol_types as alloy_sol_types;
6601        #[automatically_derived]
6602        impl alloy_sol_types::SolEvent for Upgraded {
6603            type DataTuple<'a> = ();
6604            type DataToken<'a> = <Self::DataTuple<
6605                'a,
6606            > as alloy_sol_types::SolType>::Token<'a>;
6607            type TopicList = (
6608                alloy_sol_types::sol_data::FixedBytes<32>,
6609                alloy::sol_types::sol_data::Address,
6610            );
6611            const SIGNATURE: &'static str = "Upgraded(address)";
6612            const SIGNATURE_HASH: alloy_sol_types::private::B256 = alloy_sol_types::private::B256::new([
6613                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
6614                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
6615                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
6616            ]);
6617            const ANONYMOUS: bool = false;
6618            #[allow(unused_variables)]
6619            #[inline]
6620            fn new(
6621                topics: <Self::TopicList as alloy_sol_types::SolType>::RustType,
6622                data: <Self::DataTuple<'_> as alloy_sol_types::SolType>::RustType,
6623            ) -> Self {
6624                Self { implementation: topics.1 }
6625            }
6626            #[inline]
6627            fn check_signature(
6628                topics: &<Self::TopicList as alloy_sol_types::SolType>::RustType,
6629            ) -> alloy_sol_types::Result<()> {
6630                if topics.0 != Self::SIGNATURE_HASH {
6631                    return Err(
6632                        alloy_sol_types::Error::invalid_event_signature_hash(
6633                            Self::SIGNATURE,
6634                            topics.0,
6635                            Self::SIGNATURE_HASH,
6636                        ),
6637                    );
6638                }
6639                Ok(())
6640            }
6641            #[inline]
6642            fn tokenize_body(&self) -> Self::DataToken<'_> {
6643                ()
6644            }
6645            #[inline]
6646            fn topics(&self) -> <Self::TopicList as alloy_sol_types::SolType>::RustType {
6647                (Self::SIGNATURE_HASH.into(), self.implementation.clone())
6648            }
6649            #[inline]
6650            fn encode_topics_raw(
6651                &self,
6652                out: &mut [alloy_sol_types::abi::token::WordToken],
6653            ) -> alloy_sol_types::Result<()> {
6654                if out.len() < <Self::TopicList as alloy_sol_types::TopicList>::COUNT {
6655                    return Err(alloy_sol_types::Error::Overrun);
6656                }
6657                out[0usize] = alloy_sol_types::abi::token::WordToken(
6658                    Self::SIGNATURE_HASH,
6659                );
6660                out[1usize] = <alloy::sol_types::sol_data::Address as alloy_sol_types::EventTopic>::encode_topic(
6661                    &self.implementation,
6662                );
6663                Ok(())
6664            }
6665        }
6666        #[automatically_derived]
6667        impl alloy_sol_types::private::IntoLogData for Upgraded {
6668            fn to_log_data(&self) -> alloy_sol_types::private::LogData {
6669                From::from(self)
6670            }
6671            fn into_log_data(self) -> alloy_sol_types::private::LogData {
6672                From::from(&self)
6673            }
6674        }
6675        #[automatically_derived]
6676        impl From<&Upgraded> for alloy_sol_types::private::LogData {
6677            #[inline]
6678            fn from(this: &Upgraded) -> alloy_sol_types::private::LogData {
6679                alloy_sol_types::SolEvent::encode_log_data(this)
6680            }
6681        }
6682    };
6683    /**Constructor`.
6684```solidity
6685constructor();
6686```*/
6687    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6688    #[derive(Clone)]
6689    pub struct constructorCall {}
6690    const _: () = {
6691        use alloy::sol_types as alloy_sol_types;
6692        {
6693            #[doc(hidden)]
6694            type UnderlyingSolTuple<'a> = ();
6695            #[doc(hidden)]
6696            type UnderlyingRustTuple<'a> = ();
6697            #[cfg(test)]
6698            #[allow(dead_code, unreachable_patterns)]
6699            fn _type_assertion(
6700                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6701            ) {
6702                match _t {
6703                    alloy_sol_types::private::AssertTypeEq::<
6704                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6705                    >(_) => {}
6706                }
6707            }
6708            #[automatically_derived]
6709            #[doc(hidden)]
6710            impl ::core::convert::From<constructorCall> for UnderlyingRustTuple<'_> {
6711                fn from(value: constructorCall) -> Self {
6712                    ()
6713                }
6714            }
6715            #[automatically_derived]
6716            #[doc(hidden)]
6717            impl ::core::convert::From<UnderlyingRustTuple<'_>> for constructorCall {
6718                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6719                    Self {}
6720                }
6721            }
6722        }
6723        #[automatically_derived]
6724        impl alloy_sol_types::SolConstructor for constructorCall {
6725            type Parameters<'a> = ();
6726            type Token<'a> = <Self::Parameters<
6727                'a,
6728            > as alloy_sol_types::SolType>::Token<'a>;
6729            #[inline]
6730            fn new<'a>(
6731                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6732            ) -> Self {
6733                tuple.into()
6734            }
6735            #[inline]
6736            fn tokenize(&self) -> Self::Token<'_> {
6737                ()
6738            }
6739        }
6740    };
6741    #[derive(serde::Serialize, serde::Deserialize)]
6742    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6743    /**Function with signature `UPGRADE_INTERFACE_VERSION()` and selector `0xad3cb1cc`.
6744```solidity
6745function UPGRADE_INTERFACE_VERSION() external view returns (string memory);
6746```*/
6747    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6748    #[derive(Clone)]
6749    pub struct UPGRADE_INTERFACE_VERSIONCall;
6750    #[derive(serde::Serialize, serde::Deserialize)]
6751    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6752    ///Container type for the return parameters of the [`UPGRADE_INTERFACE_VERSION()`](UPGRADE_INTERFACE_VERSIONCall) function.
6753    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6754    #[derive(Clone)]
6755    pub struct UPGRADE_INTERFACE_VERSIONReturn {
6756        #[allow(missing_docs)]
6757        pub _0: alloy::sol_types::private::String,
6758    }
6759    #[allow(
6760        non_camel_case_types,
6761        non_snake_case,
6762        clippy::pub_underscore_fields,
6763        clippy::style
6764    )]
6765    const _: () = {
6766        use alloy::sol_types as alloy_sol_types;
6767        {
6768            #[doc(hidden)]
6769            type UnderlyingSolTuple<'a> = ();
6770            #[doc(hidden)]
6771            type UnderlyingRustTuple<'a> = ();
6772            #[cfg(test)]
6773            #[allow(dead_code, unreachable_patterns)]
6774            fn _type_assertion(
6775                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6776            ) {
6777                match _t {
6778                    alloy_sol_types::private::AssertTypeEq::<
6779                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6780                    >(_) => {}
6781                }
6782            }
6783            #[automatically_derived]
6784            #[doc(hidden)]
6785            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONCall>
6786            for UnderlyingRustTuple<'_> {
6787                fn from(value: UPGRADE_INTERFACE_VERSIONCall) -> Self {
6788                    ()
6789                }
6790            }
6791            #[automatically_derived]
6792            #[doc(hidden)]
6793            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6794            for UPGRADE_INTERFACE_VERSIONCall {
6795                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6796                    Self
6797                }
6798            }
6799        }
6800        {
6801            #[doc(hidden)]
6802            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::String,);
6803            #[doc(hidden)]
6804            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::String,);
6805            #[cfg(test)]
6806            #[allow(dead_code, unreachable_patterns)]
6807            fn _type_assertion(
6808                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6809            ) {
6810                match _t {
6811                    alloy_sol_types::private::AssertTypeEq::<
6812                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6813                    >(_) => {}
6814                }
6815            }
6816            #[automatically_derived]
6817            #[doc(hidden)]
6818            impl ::core::convert::From<UPGRADE_INTERFACE_VERSIONReturn>
6819            for UnderlyingRustTuple<'_> {
6820                fn from(value: UPGRADE_INTERFACE_VERSIONReturn) -> Self {
6821                    (value._0,)
6822                }
6823            }
6824            #[automatically_derived]
6825            #[doc(hidden)]
6826            impl ::core::convert::From<UnderlyingRustTuple<'_>>
6827            for UPGRADE_INTERFACE_VERSIONReturn {
6828                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6829                    Self { _0: tuple.0 }
6830                }
6831            }
6832        }
6833        #[automatically_derived]
6834        impl alloy_sol_types::SolCall for UPGRADE_INTERFACE_VERSIONCall {
6835            type Parameters<'a> = ();
6836            type Token<'a> = <Self::Parameters<
6837                'a,
6838            > as alloy_sol_types::SolType>::Token<'a>;
6839            type Return = alloy::sol_types::private::String;
6840            type ReturnTuple<'a> = (alloy::sol_types::sol_data::String,);
6841            type ReturnToken<'a> = <Self::ReturnTuple<
6842                'a,
6843            > as alloy_sol_types::SolType>::Token<'a>;
6844            const SIGNATURE: &'static str = "UPGRADE_INTERFACE_VERSION()";
6845            const SELECTOR: [u8; 4] = [173u8, 60u8, 177u8, 204u8];
6846            #[inline]
6847            fn new<'a>(
6848                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6849            ) -> Self {
6850                tuple.into()
6851            }
6852            #[inline]
6853            fn tokenize(&self) -> Self::Token<'_> {
6854                ()
6855            }
6856            #[inline]
6857            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
6858                (
6859                    <alloy::sol_types::sol_data::String as alloy_sol_types::SolType>::tokenize(
6860                        ret,
6861                    ),
6862                )
6863            }
6864            #[inline]
6865            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
6866                <Self::ReturnTuple<
6867                    '_,
6868                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
6869                    .map(|r| {
6870                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6871                        r._0
6872                    })
6873            }
6874            #[inline]
6875            fn abi_decode_returns_validate(
6876                data: &[u8],
6877            ) -> alloy_sol_types::Result<Self::Return> {
6878                <Self::ReturnTuple<
6879                    '_,
6880                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
6881                    .map(|r| {
6882                        let r: UPGRADE_INTERFACE_VERSIONReturn = r.into();
6883                        r._0
6884                    })
6885            }
6886        }
6887    };
6888    #[derive(serde::Serialize, serde::Deserialize)]
6889    #[derive(Default, Debug, PartialEq, Eq, Hash)]
6890    /**Function with signature `_getVk()` and selector `0x12173c2c`.
6891```solidity
6892function _getVk() external pure returns (IPlonkVerifier.VerifyingKey memory vk);
6893```*/
6894    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6895    #[derive(Clone)]
6896    pub struct _getVkCall;
6897    #[derive(serde::Serialize, serde::Deserialize)]
6898    #[derive()]
6899    ///Container type for the return parameters of the [`_getVk()`](_getVkCall) function.
6900    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
6901    #[derive(Clone)]
6902    pub struct _getVkReturn {
6903        #[allow(missing_docs)]
6904        pub vk: <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6905    }
6906    #[allow(
6907        non_camel_case_types,
6908        non_snake_case,
6909        clippy::pub_underscore_fields,
6910        clippy::style
6911    )]
6912    const _: () = {
6913        use alloy::sol_types as alloy_sol_types;
6914        {
6915            #[doc(hidden)]
6916            type UnderlyingSolTuple<'a> = ();
6917            #[doc(hidden)]
6918            type UnderlyingRustTuple<'a> = ();
6919            #[cfg(test)]
6920            #[allow(dead_code, unreachable_patterns)]
6921            fn _type_assertion(
6922                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6923            ) {
6924                match _t {
6925                    alloy_sol_types::private::AssertTypeEq::<
6926                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6927                    >(_) => {}
6928                }
6929            }
6930            #[automatically_derived]
6931            #[doc(hidden)]
6932            impl ::core::convert::From<_getVkCall> for UnderlyingRustTuple<'_> {
6933                fn from(value: _getVkCall) -> Self {
6934                    ()
6935                }
6936            }
6937            #[automatically_derived]
6938            #[doc(hidden)]
6939            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkCall {
6940                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6941                    Self
6942                }
6943            }
6944        }
6945        {
6946            #[doc(hidden)]
6947            type UnderlyingSolTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6948            #[doc(hidden)]
6949            type UnderlyingRustTuple<'a> = (
6950                <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType,
6951            );
6952            #[cfg(test)]
6953            #[allow(dead_code, unreachable_patterns)]
6954            fn _type_assertion(
6955                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
6956            ) {
6957                match _t {
6958                    alloy_sol_types::private::AssertTypeEq::<
6959                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
6960                    >(_) => {}
6961                }
6962            }
6963            #[automatically_derived]
6964            #[doc(hidden)]
6965            impl ::core::convert::From<_getVkReturn> for UnderlyingRustTuple<'_> {
6966                fn from(value: _getVkReturn) -> Self {
6967                    (value.vk,)
6968                }
6969            }
6970            #[automatically_derived]
6971            #[doc(hidden)]
6972            impl ::core::convert::From<UnderlyingRustTuple<'_>> for _getVkReturn {
6973                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
6974                    Self { vk: tuple.0 }
6975                }
6976            }
6977        }
6978        #[automatically_derived]
6979        impl alloy_sol_types::SolCall for _getVkCall {
6980            type Parameters<'a> = ();
6981            type Token<'a> = <Self::Parameters<
6982                'a,
6983            > as alloy_sol_types::SolType>::Token<'a>;
6984            type Return = <IPlonkVerifier::VerifyingKey as alloy::sol_types::SolType>::RustType;
6985            type ReturnTuple<'a> = (IPlonkVerifier::VerifyingKey,);
6986            type ReturnToken<'a> = <Self::ReturnTuple<
6987                'a,
6988            > as alloy_sol_types::SolType>::Token<'a>;
6989            const SIGNATURE: &'static str = "_getVk()";
6990            const SELECTOR: [u8; 4] = [18u8, 23u8, 60u8, 44u8];
6991            #[inline]
6992            fn new<'a>(
6993                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
6994            ) -> Self {
6995                tuple.into()
6996            }
6997            #[inline]
6998            fn tokenize(&self) -> Self::Token<'_> {
6999                ()
7000            }
7001            #[inline]
7002            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7003                (
7004                    <IPlonkVerifier::VerifyingKey as alloy_sol_types::SolType>::tokenize(
7005                        ret,
7006                    ),
7007                )
7008            }
7009            #[inline]
7010            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7011                <Self::ReturnTuple<
7012                    '_,
7013                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7014                    .map(|r| {
7015                        let r: _getVkReturn = r.into();
7016                        r.vk
7017                    })
7018            }
7019            #[inline]
7020            fn abi_decode_returns_validate(
7021                data: &[u8],
7022            ) -> alloy_sol_types::Result<Self::Return> {
7023                <Self::ReturnTuple<
7024                    '_,
7025                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7026                    .map(|r| {
7027                        let r: _getVkReturn = r.into();
7028                        r.vk
7029                    })
7030            }
7031        }
7032    };
7033    #[derive(serde::Serialize, serde::Deserialize)]
7034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7035    /**Function with signature `currentBlockNumber()` and selector `0x378ec23b`.
7036```solidity
7037function currentBlockNumber() external view returns (uint256);
7038```*/
7039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7040    #[derive(Clone)]
7041    pub struct currentBlockNumberCall;
7042    #[derive(serde::Serialize, serde::Deserialize)]
7043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7044    ///Container type for the return parameters of the [`currentBlockNumber()`](currentBlockNumberCall) function.
7045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7046    #[derive(Clone)]
7047    pub struct currentBlockNumberReturn {
7048        #[allow(missing_docs)]
7049        pub _0: alloy::sol_types::private::primitives::aliases::U256,
7050    }
7051    #[allow(
7052        non_camel_case_types,
7053        non_snake_case,
7054        clippy::pub_underscore_fields,
7055        clippy::style
7056    )]
7057    const _: () = {
7058        use alloy::sol_types as alloy_sol_types;
7059        {
7060            #[doc(hidden)]
7061            type UnderlyingSolTuple<'a> = ();
7062            #[doc(hidden)]
7063            type UnderlyingRustTuple<'a> = ();
7064            #[cfg(test)]
7065            #[allow(dead_code, unreachable_patterns)]
7066            fn _type_assertion(
7067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7068            ) {
7069                match _t {
7070                    alloy_sol_types::private::AssertTypeEq::<
7071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7072                    >(_) => {}
7073                }
7074            }
7075            #[automatically_derived]
7076            #[doc(hidden)]
7077            impl ::core::convert::From<currentBlockNumberCall>
7078            for UnderlyingRustTuple<'_> {
7079                fn from(value: currentBlockNumberCall) -> Self {
7080                    ()
7081                }
7082            }
7083            #[automatically_derived]
7084            #[doc(hidden)]
7085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7086            for currentBlockNumberCall {
7087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7088                    Self
7089                }
7090            }
7091        }
7092        {
7093            #[doc(hidden)]
7094            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7095            #[doc(hidden)]
7096            type UnderlyingRustTuple<'a> = (
7097                alloy::sol_types::private::primitives::aliases::U256,
7098            );
7099            #[cfg(test)]
7100            #[allow(dead_code, unreachable_patterns)]
7101            fn _type_assertion(
7102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7103            ) {
7104                match _t {
7105                    alloy_sol_types::private::AssertTypeEq::<
7106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7107                    >(_) => {}
7108                }
7109            }
7110            #[automatically_derived]
7111            #[doc(hidden)]
7112            impl ::core::convert::From<currentBlockNumberReturn>
7113            for UnderlyingRustTuple<'_> {
7114                fn from(value: currentBlockNumberReturn) -> Self {
7115                    (value._0,)
7116                }
7117            }
7118            #[automatically_derived]
7119            #[doc(hidden)]
7120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7121            for currentBlockNumberReturn {
7122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7123                    Self { _0: tuple.0 }
7124                }
7125            }
7126        }
7127        #[automatically_derived]
7128        impl alloy_sol_types::SolCall for currentBlockNumberCall {
7129            type Parameters<'a> = ();
7130            type Token<'a> = <Self::Parameters<
7131                'a,
7132            > as alloy_sol_types::SolType>::Token<'a>;
7133            type Return = alloy::sol_types::private::primitives::aliases::U256;
7134            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7135            type ReturnToken<'a> = <Self::ReturnTuple<
7136                'a,
7137            > as alloy_sol_types::SolType>::Token<'a>;
7138            const SIGNATURE: &'static str = "currentBlockNumber()";
7139            const SELECTOR: [u8; 4] = [55u8, 142u8, 194u8, 59u8];
7140            #[inline]
7141            fn new<'a>(
7142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7143            ) -> Self {
7144                tuple.into()
7145            }
7146            #[inline]
7147            fn tokenize(&self) -> Self::Token<'_> {
7148                ()
7149            }
7150            #[inline]
7151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7152                (
7153                    <alloy::sol_types::sol_data::Uint<
7154                        256,
7155                    > as alloy_sol_types::SolType>::tokenize(ret),
7156                )
7157            }
7158            #[inline]
7159            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7160                <Self::ReturnTuple<
7161                    '_,
7162                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7163                    .map(|r| {
7164                        let r: currentBlockNumberReturn = r.into();
7165                        r._0
7166                    })
7167            }
7168            #[inline]
7169            fn abi_decode_returns_validate(
7170                data: &[u8],
7171            ) -> alloy_sol_types::Result<Self::Return> {
7172                <Self::ReturnTuple<
7173                    '_,
7174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7175                    .map(|r| {
7176                        let r: currentBlockNumberReturn = r.into();
7177                        r._0
7178                    })
7179            }
7180        }
7181    };
7182    #[derive(serde::Serialize, serde::Deserialize)]
7183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7184    /**Function with signature `disablePermissionedProverMode()` and selector `0x69cc6a04`.
7185```solidity
7186function disablePermissionedProverMode() external;
7187```*/
7188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7189    #[derive(Clone)]
7190    pub struct disablePermissionedProverModeCall;
7191    ///Container type for the return parameters of the [`disablePermissionedProverMode()`](disablePermissionedProverModeCall) function.
7192    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7193    #[derive(Clone)]
7194    pub struct disablePermissionedProverModeReturn {}
7195    #[allow(
7196        non_camel_case_types,
7197        non_snake_case,
7198        clippy::pub_underscore_fields,
7199        clippy::style
7200    )]
7201    const _: () = {
7202        use alloy::sol_types as alloy_sol_types;
7203        {
7204            #[doc(hidden)]
7205            type UnderlyingSolTuple<'a> = ();
7206            #[doc(hidden)]
7207            type UnderlyingRustTuple<'a> = ();
7208            #[cfg(test)]
7209            #[allow(dead_code, unreachable_patterns)]
7210            fn _type_assertion(
7211                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7212            ) {
7213                match _t {
7214                    alloy_sol_types::private::AssertTypeEq::<
7215                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7216                    >(_) => {}
7217                }
7218            }
7219            #[automatically_derived]
7220            #[doc(hidden)]
7221            impl ::core::convert::From<disablePermissionedProverModeCall>
7222            for UnderlyingRustTuple<'_> {
7223                fn from(value: disablePermissionedProverModeCall) -> Self {
7224                    ()
7225                }
7226            }
7227            #[automatically_derived]
7228            #[doc(hidden)]
7229            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7230            for disablePermissionedProverModeCall {
7231                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7232                    Self
7233                }
7234            }
7235        }
7236        {
7237            #[doc(hidden)]
7238            type UnderlyingSolTuple<'a> = ();
7239            #[doc(hidden)]
7240            type UnderlyingRustTuple<'a> = ();
7241            #[cfg(test)]
7242            #[allow(dead_code, unreachable_patterns)]
7243            fn _type_assertion(
7244                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7245            ) {
7246                match _t {
7247                    alloy_sol_types::private::AssertTypeEq::<
7248                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7249                    >(_) => {}
7250                }
7251            }
7252            #[automatically_derived]
7253            #[doc(hidden)]
7254            impl ::core::convert::From<disablePermissionedProverModeReturn>
7255            for UnderlyingRustTuple<'_> {
7256                fn from(value: disablePermissionedProverModeReturn) -> Self {
7257                    ()
7258                }
7259            }
7260            #[automatically_derived]
7261            #[doc(hidden)]
7262            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7263            for disablePermissionedProverModeReturn {
7264                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7265                    Self {}
7266                }
7267            }
7268        }
7269        impl disablePermissionedProverModeReturn {
7270            fn _tokenize(
7271                &self,
7272            ) -> <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::ReturnToken<
7273                '_,
7274            > {
7275                ()
7276            }
7277        }
7278        #[automatically_derived]
7279        impl alloy_sol_types::SolCall for disablePermissionedProverModeCall {
7280            type Parameters<'a> = ();
7281            type Token<'a> = <Self::Parameters<
7282                'a,
7283            > as alloy_sol_types::SolType>::Token<'a>;
7284            type Return = disablePermissionedProverModeReturn;
7285            type ReturnTuple<'a> = ();
7286            type ReturnToken<'a> = <Self::ReturnTuple<
7287                'a,
7288            > as alloy_sol_types::SolType>::Token<'a>;
7289            const SIGNATURE: &'static str = "disablePermissionedProverMode()";
7290            const SELECTOR: [u8; 4] = [105u8, 204u8, 106u8, 4u8];
7291            #[inline]
7292            fn new<'a>(
7293                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7294            ) -> Self {
7295                tuple.into()
7296            }
7297            #[inline]
7298            fn tokenize(&self) -> Self::Token<'_> {
7299                ()
7300            }
7301            #[inline]
7302            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7303                disablePermissionedProverModeReturn::_tokenize(ret)
7304            }
7305            #[inline]
7306            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7307                <Self::ReturnTuple<
7308                    '_,
7309                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7310                    .map(Into::into)
7311            }
7312            #[inline]
7313            fn abi_decode_returns_validate(
7314                data: &[u8],
7315            ) -> alloy_sol_types::Result<Self::Return> {
7316                <Self::ReturnTuple<
7317                    '_,
7318                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7319                    .map(Into::into)
7320            }
7321        }
7322    };
7323    #[derive(serde::Serialize, serde::Deserialize)]
7324    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7325    /**Function with signature `finalizedState()` and selector `0x9fdb54a7`.
7326```solidity
7327function finalizedState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7328```*/
7329    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7330    #[derive(Clone)]
7331    pub struct finalizedStateCall;
7332    #[derive(serde::Serialize, serde::Deserialize)]
7333    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7334    ///Container type for the return parameters of the [`finalizedState()`](finalizedStateCall) function.
7335    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7336    #[derive(Clone)]
7337    pub struct finalizedStateReturn {
7338        #[allow(missing_docs)]
7339        pub viewNum: u64,
7340        #[allow(missing_docs)]
7341        pub blockHeight: u64,
7342        #[allow(missing_docs)]
7343        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7344    }
7345    #[allow(
7346        non_camel_case_types,
7347        non_snake_case,
7348        clippy::pub_underscore_fields,
7349        clippy::style
7350    )]
7351    const _: () = {
7352        use alloy::sol_types as alloy_sol_types;
7353        {
7354            #[doc(hidden)]
7355            type UnderlyingSolTuple<'a> = ();
7356            #[doc(hidden)]
7357            type UnderlyingRustTuple<'a> = ();
7358            #[cfg(test)]
7359            #[allow(dead_code, unreachable_patterns)]
7360            fn _type_assertion(
7361                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7362            ) {
7363                match _t {
7364                    alloy_sol_types::private::AssertTypeEq::<
7365                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7366                    >(_) => {}
7367                }
7368            }
7369            #[automatically_derived]
7370            #[doc(hidden)]
7371            impl ::core::convert::From<finalizedStateCall> for UnderlyingRustTuple<'_> {
7372                fn from(value: finalizedStateCall) -> Self {
7373                    ()
7374                }
7375            }
7376            #[automatically_derived]
7377            #[doc(hidden)]
7378            impl ::core::convert::From<UnderlyingRustTuple<'_>> for finalizedStateCall {
7379                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7380                    Self
7381                }
7382            }
7383        }
7384        {
7385            #[doc(hidden)]
7386            type UnderlyingSolTuple<'a> = (
7387                alloy::sol_types::sol_data::Uint<64>,
7388                alloy::sol_types::sol_data::Uint<64>,
7389                BN254::ScalarField,
7390            );
7391            #[doc(hidden)]
7392            type UnderlyingRustTuple<'a> = (
7393                u64,
7394                u64,
7395                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7396            );
7397            #[cfg(test)]
7398            #[allow(dead_code, unreachable_patterns)]
7399            fn _type_assertion(
7400                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7401            ) {
7402                match _t {
7403                    alloy_sol_types::private::AssertTypeEq::<
7404                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7405                    >(_) => {}
7406                }
7407            }
7408            #[automatically_derived]
7409            #[doc(hidden)]
7410            impl ::core::convert::From<finalizedStateReturn>
7411            for UnderlyingRustTuple<'_> {
7412                fn from(value: finalizedStateReturn) -> Self {
7413                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7414                }
7415            }
7416            #[automatically_derived]
7417            #[doc(hidden)]
7418            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7419            for finalizedStateReturn {
7420                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7421                    Self {
7422                        viewNum: tuple.0,
7423                        blockHeight: tuple.1,
7424                        blockCommRoot: tuple.2,
7425                    }
7426                }
7427            }
7428        }
7429        impl finalizedStateReturn {
7430            fn _tokenize(
7431                &self,
7432            ) -> <finalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7433                (
7434                    <alloy::sol_types::sol_data::Uint<
7435                        64,
7436                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7437                    <alloy::sol_types::sol_data::Uint<
7438                        64,
7439                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7440                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7441                        &self.blockCommRoot,
7442                    ),
7443                )
7444            }
7445        }
7446        #[automatically_derived]
7447        impl alloy_sol_types::SolCall for finalizedStateCall {
7448            type Parameters<'a> = ();
7449            type Token<'a> = <Self::Parameters<
7450                'a,
7451            > as alloy_sol_types::SolType>::Token<'a>;
7452            type Return = finalizedStateReturn;
7453            type ReturnTuple<'a> = (
7454                alloy::sol_types::sol_data::Uint<64>,
7455                alloy::sol_types::sol_data::Uint<64>,
7456                BN254::ScalarField,
7457            );
7458            type ReturnToken<'a> = <Self::ReturnTuple<
7459                'a,
7460            > as alloy_sol_types::SolType>::Token<'a>;
7461            const SIGNATURE: &'static str = "finalizedState()";
7462            const SELECTOR: [u8; 4] = [159u8, 219u8, 84u8, 167u8];
7463            #[inline]
7464            fn new<'a>(
7465                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7466            ) -> Self {
7467                tuple.into()
7468            }
7469            #[inline]
7470            fn tokenize(&self) -> Self::Token<'_> {
7471                ()
7472            }
7473            #[inline]
7474            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7475                finalizedStateReturn::_tokenize(ret)
7476            }
7477            #[inline]
7478            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7479                <Self::ReturnTuple<
7480                    '_,
7481                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7482                    .map(Into::into)
7483            }
7484            #[inline]
7485            fn abi_decode_returns_validate(
7486                data: &[u8],
7487            ) -> alloy_sol_types::Result<Self::Return> {
7488                <Self::ReturnTuple<
7489                    '_,
7490                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7491                    .map(Into::into)
7492            }
7493        }
7494    };
7495    #[derive(serde::Serialize, serde::Deserialize)]
7496    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7497    /**Function with signature `genesisStakeTableState()` and selector `0x426d3194`.
7498```solidity
7499function genesisStakeTableState() external view returns (uint256 threshold, BN254.ScalarField blsKeyComm, BN254.ScalarField schnorrKeyComm, BN254.ScalarField amountComm);
7500```*/
7501    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7502    #[derive(Clone)]
7503    pub struct genesisStakeTableStateCall;
7504    #[derive(serde::Serialize, serde::Deserialize)]
7505    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7506    ///Container type for the return parameters of the [`genesisStakeTableState()`](genesisStakeTableStateCall) function.
7507    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7508    #[derive(Clone)]
7509    pub struct genesisStakeTableStateReturn {
7510        #[allow(missing_docs)]
7511        pub threshold: alloy::sol_types::private::primitives::aliases::U256,
7512        #[allow(missing_docs)]
7513        pub blsKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7514        #[allow(missing_docs)]
7515        pub schnorrKeyComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7516        #[allow(missing_docs)]
7517        pub amountComm: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7518    }
7519    #[allow(
7520        non_camel_case_types,
7521        non_snake_case,
7522        clippy::pub_underscore_fields,
7523        clippy::style
7524    )]
7525    const _: () = {
7526        use alloy::sol_types as alloy_sol_types;
7527        {
7528            #[doc(hidden)]
7529            type UnderlyingSolTuple<'a> = ();
7530            #[doc(hidden)]
7531            type UnderlyingRustTuple<'a> = ();
7532            #[cfg(test)]
7533            #[allow(dead_code, unreachable_patterns)]
7534            fn _type_assertion(
7535                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7536            ) {
7537                match _t {
7538                    alloy_sol_types::private::AssertTypeEq::<
7539                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7540                    >(_) => {}
7541                }
7542            }
7543            #[automatically_derived]
7544            #[doc(hidden)]
7545            impl ::core::convert::From<genesisStakeTableStateCall>
7546            for UnderlyingRustTuple<'_> {
7547                fn from(value: genesisStakeTableStateCall) -> Self {
7548                    ()
7549                }
7550            }
7551            #[automatically_derived]
7552            #[doc(hidden)]
7553            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7554            for genesisStakeTableStateCall {
7555                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7556                    Self
7557                }
7558            }
7559        }
7560        {
7561            #[doc(hidden)]
7562            type UnderlyingSolTuple<'a> = (
7563                alloy::sol_types::sol_data::Uint<256>,
7564                BN254::ScalarField,
7565                BN254::ScalarField,
7566                BN254::ScalarField,
7567            );
7568            #[doc(hidden)]
7569            type UnderlyingRustTuple<'a> = (
7570                alloy::sol_types::private::primitives::aliases::U256,
7571                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7572                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7573                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7574            );
7575            #[cfg(test)]
7576            #[allow(dead_code, unreachable_patterns)]
7577            fn _type_assertion(
7578                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7579            ) {
7580                match _t {
7581                    alloy_sol_types::private::AssertTypeEq::<
7582                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7583                    >(_) => {}
7584                }
7585            }
7586            #[automatically_derived]
7587            #[doc(hidden)]
7588            impl ::core::convert::From<genesisStakeTableStateReturn>
7589            for UnderlyingRustTuple<'_> {
7590                fn from(value: genesisStakeTableStateReturn) -> Self {
7591                    (
7592                        value.threshold,
7593                        value.blsKeyComm,
7594                        value.schnorrKeyComm,
7595                        value.amountComm,
7596                    )
7597                }
7598            }
7599            #[automatically_derived]
7600            #[doc(hidden)]
7601            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7602            for genesisStakeTableStateReturn {
7603                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7604                    Self {
7605                        threshold: tuple.0,
7606                        blsKeyComm: tuple.1,
7607                        schnorrKeyComm: tuple.2,
7608                        amountComm: tuple.3,
7609                    }
7610                }
7611            }
7612        }
7613        impl genesisStakeTableStateReturn {
7614            fn _tokenize(
7615                &self,
7616            ) -> <genesisStakeTableStateCall as alloy_sol_types::SolCall>::ReturnToken<
7617                '_,
7618            > {
7619                (
7620                    <alloy::sol_types::sol_data::Uint<
7621                        256,
7622                    > as alloy_sol_types::SolType>::tokenize(&self.threshold),
7623                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7624                        &self.blsKeyComm,
7625                    ),
7626                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7627                        &self.schnorrKeyComm,
7628                    ),
7629                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7630                        &self.amountComm,
7631                    ),
7632                )
7633            }
7634        }
7635        #[automatically_derived]
7636        impl alloy_sol_types::SolCall for genesisStakeTableStateCall {
7637            type Parameters<'a> = ();
7638            type Token<'a> = <Self::Parameters<
7639                'a,
7640            > as alloy_sol_types::SolType>::Token<'a>;
7641            type Return = genesisStakeTableStateReturn;
7642            type ReturnTuple<'a> = (
7643                alloy::sol_types::sol_data::Uint<256>,
7644                BN254::ScalarField,
7645                BN254::ScalarField,
7646                BN254::ScalarField,
7647            );
7648            type ReturnToken<'a> = <Self::ReturnTuple<
7649                'a,
7650            > as alloy_sol_types::SolType>::Token<'a>;
7651            const SIGNATURE: &'static str = "genesisStakeTableState()";
7652            const SELECTOR: [u8; 4] = [66u8, 109u8, 49u8, 148u8];
7653            #[inline]
7654            fn new<'a>(
7655                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7656            ) -> Self {
7657                tuple.into()
7658            }
7659            #[inline]
7660            fn tokenize(&self) -> Self::Token<'_> {
7661                ()
7662            }
7663            #[inline]
7664            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7665                genesisStakeTableStateReturn::_tokenize(ret)
7666            }
7667            #[inline]
7668            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7669                <Self::ReturnTuple<
7670                    '_,
7671                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7672                    .map(Into::into)
7673            }
7674            #[inline]
7675            fn abi_decode_returns_validate(
7676                data: &[u8],
7677            ) -> alloy_sol_types::Result<Self::Return> {
7678                <Self::ReturnTuple<
7679                    '_,
7680                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7681                    .map(Into::into)
7682            }
7683        }
7684    };
7685    #[derive(serde::Serialize, serde::Deserialize)]
7686    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7687    /**Function with signature `genesisState()` and selector `0xd24d933d`.
7688```solidity
7689function genesisState() external view returns (uint64 viewNum, uint64 blockHeight, BN254.ScalarField blockCommRoot);
7690```*/
7691    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7692    #[derive(Clone)]
7693    pub struct genesisStateCall;
7694    #[derive(serde::Serialize, serde::Deserialize)]
7695    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7696    ///Container type for the return parameters of the [`genesisState()`](genesisStateCall) function.
7697    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7698    #[derive(Clone)]
7699    pub struct genesisStateReturn {
7700        #[allow(missing_docs)]
7701        pub viewNum: u64,
7702        #[allow(missing_docs)]
7703        pub blockHeight: u64,
7704        #[allow(missing_docs)]
7705        pub blockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7706    }
7707    #[allow(
7708        non_camel_case_types,
7709        non_snake_case,
7710        clippy::pub_underscore_fields,
7711        clippy::style
7712    )]
7713    const _: () = {
7714        use alloy::sol_types as alloy_sol_types;
7715        {
7716            #[doc(hidden)]
7717            type UnderlyingSolTuple<'a> = ();
7718            #[doc(hidden)]
7719            type UnderlyingRustTuple<'a> = ();
7720            #[cfg(test)]
7721            #[allow(dead_code, unreachable_patterns)]
7722            fn _type_assertion(
7723                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7724            ) {
7725                match _t {
7726                    alloy_sol_types::private::AssertTypeEq::<
7727                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7728                    >(_) => {}
7729                }
7730            }
7731            #[automatically_derived]
7732            #[doc(hidden)]
7733            impl ::core::convert::From<genesisStateCall> for UnderlyingRustTuple<'_> {
7734                fn from(value: genesisStateCall) -> Self {
7735                    ()
7736                }
7737            }
7738            #[automatically_derived]
7739            #[doc(hidden)]
7740            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateCall {
7741                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7742                    Self
7743                }
7744            }
7745        }
7746        {
7747            #[doc(hidden)]
7748            type UnderlyingSolTuple<'a> = (
7749                alloy::sol_types::sol_data::Uint<64>,
7750                alloy::sol_types::sol_data::Uint<64>,
7751                BN254::ScalarField,
7752            );
7753            #[doc(hidden)]
7754            type UnderlyingRustTuple<'a> = (
7755                u64,
7756                u64,
7757                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7758            );
7759            #[cfg(test)]
7760            #[allow(dead_code, unreachable_patterns)]
7761            fn _type_assertion(
7762                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7763            ) {
7764                match _t {
7765                    alloy_sol_types::private::AssertTypeEq::<
7766                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7767                    >(_) => {}
7768                }
7769            }
7770            #[automatically_derived]
7771            #[doc(hidden)]
7772            impl ::core::convert::From<genesisStateReturn> for UnderlyingRustTuple<'_> {
7773                fn from(value: genesisStateReturn) -> Self {
7774                    (value.viewNum, value.blockHeight, value.blockCommRoot)
7775                }
7776            }
7777            #[automatically_derived]
7778            #[doc(hidden)]
7779            impl ::core::convert::From<UnderlyingRustTuple<'_>> for genesisStateReturn {
7780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7781                    Self {
7782                        viewNum: tuple.0,
7783                        blockHeight: tuple.1,
7784                        blockCommRoot: tuple.2,
7785                    }
7786                }
7787            }
7788        }
7789        impl genesisStateReturn {
7790            fn _tokenize(
7791                &self,
7792            ) -> <genesisStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
7793                (
7794                    <alloy::sol_types::sol_data::Uint<
7795                        64,
7796                    > as alloy_sol_types::SolType>::tokenize(&self.viewNum),
7797                    <alloy::sol_types::sol_data::Uint<
7798                        64,
7799                    > as alloy_sol_types::SolType>::tokenize(&self.blockHeight),
7800                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7801                        &self.blockCommRoot,
7802                    ),
7803                )
7804            }
7805        }
7806        #[automatically_derived]
7807        impl alloy_sol_types::SolCall for genesisStateCall {
7808            type Parameters<'a> = ();
7809            type Token<'a> = <Self::Parameters<
7810                'a,
7811            > as alloy_sol_types::SolType>::Token<'a>;
7812            type Return = genesisStateReturn;
7813            type ReturnTuple<'a> = (
7814                alloy::sol_types::sol_data::Uint<64>,
7815                alloy::sol_types::sol_data::Uint<64>,
7816                BN254::ScalarField,
7817            );
7818            type ReturnToken<'a> = <Self::ReturnTuple<
7819                'a,
7820            > as alloy_sol_types::SolType>::Token<'a>;
7821            const SIGNATURE: &'static str = "genesisState()";
7822            const SELECTOR: [u8; 4] = [210u8, 77u8, 147u8, 61u8];
7823            #[inline]
7824            fn new<'a>(
7825                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
7826            ) -> Self {
7827                tuple.into()
7828            }
7829            #[inline]
7830            fn tokenize(&self) -> Self::Token<'_> {
7831                ()
7832            }
7833            #[inline]
7834            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
7835                genesisStateReturn::_tokenize(ret)
7836            }
7837            #[inline]
7838            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
7839                <Self::ReturnTuple<
7840                    '_,
7841                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
7842                    .map(Into::into)
7843            }
7844            #[inline]
7845            fn abi_decode_returns_validate(
7846                data: &[u8],
7847            ) -> alloy_sol_types::Result<Self::Return> {
7848                <Self::ReturnTuple<
7849                    '_,
7850                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
7851                    .map(Into::into)
7852            }
7853        }
7854    };
7855    #[derive(serde::Serialize, serde::Deserialize)]
7856    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7857    /**Function with signature `getHotShotCommitment(uint256)` and selector `0x8584d23f`.
7858```solidity
7859function getHotShotCommitment(uint256 hotShotBlockHeight) external view returns (BN254.ScalarField hotShotBlockCommRoot, uint64 hotshotBlockHeight);
7860```*/
7861    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7862    #[derive(Clone)]
7863    pub struct getHotShotCommitmentCall {
7864        #[allow(missing_docs)]
7865        pub hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
7866    }
7867    #[derive(serde::Serialize, serde::Deserialize)]
7868    #[derive(Default, Debug, PartialEq, Eq, Hash)]
7869    ///Container type for the return parameters of the [`getHotShotCommitment(uint256)`](getHotShotCommitmentCall) function.
7870    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
7871    #[derive(Clone)]
7872    pub struct getHotShotCommitmentReturn {
7873        #[allow(missing_docs)]
7874        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7875        #[allow(missing_docs)]
7876        pub hotshotBlockHeight: u64,
7877    }
7878    #[allow(
7879        non_camel_case_types,
7880        non_snake_case,
7881        clippy::pub_underscore_fields,
7882        clippy::style
7883    )]
7884    const _: () = {
7885        use alloy::sol_types as alloy_sol_types;
7886        {
7887            #[doc(hidden)]
7888            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7889            #[doc(hidden)]
7890            type UnderlyingRustTuple<'a> = (
7891                alloy::sol_types::private::primitives::aliases::U256,
7892            );
7893            #[cfg(test)]
7894            #[allow(dead_code, unreachable_patterns)]
7895            fn _type_assertion(
7896                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7897            ) {
7898                match _t {
7899                    alloy_sol_types::private::AssertTypeEq::<
7900                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7901                    >(_) => {}
7902                }
7903            }
7904            #[automatically_derived]
7905            #[doc(hidden)]
7906            impl ::core::convert::From<getHotShotCommitmentCall>
7907            for UnderlyingRustTuple<'_> {
7908                fn from(value: getHotShotCommitmentCall) -> Self {
7909                    (value.hotShotBlockHeight,)
7910                }
7911            }
7912            #[automatically_derived]
7913            #[doc(hidden)]
7914            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7915            for getHotShotCommitmentCall {
7916                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7917                    Self {
7918                        hotShotBlockHeight: tuple.0,
7919                    }
7920                }
7921            }
7922        }
7923        {
7924            #[doc(hidden)]
7925            type UnderlyingSolTuple<'a> = (
7926                BN254::ScalarField,
7927                alloy::sol_types::sol_data::Uint<64>,
7928            );
7929            #[doc(hidden)]
7930            type UnderlyingRustTuple<'a> = (
7931                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
7932                u64,
7933            );
7934            #[cfg(test)]
7935            #[allow(dead_code, unreachable_patterns)]
7936            fn _type_assertion(
7937                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
7938            ) {
7939                match _t {
7940                    alloy_sol_types::private::AssertTypeEq::<
7941                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
7942                    >(_) => {}
7943                }
7944            }
7945            #[automatically_derived]
7946            #[doc(hidden)]
7947            impl ::core::convert::From<getHotShotCommitmentReturn>
7948            for UnderlyingRustTuple<'_> {
7949                fn from(value: getHotShotCommitmentReturn) -> Self {
7950                    (value.hotShotBlockCommRoot, value.hotshotBlockHeight)
7951                }
7952            }
7953            #[automatically_derived]
7954            #[doc(hidden)]
7955            impl ::core::convert::From<UnderlyingRustTuple<'_>>
7956            for getHotShotCommitmentReturn {
7957                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
7958                    Self {
7959                        hotShotBlockCommRoot: tuple.0,
7960                        hotshotBlockHeight: tuple.1,
7961                    }
7962                }
7963            }
7964        }
7965        impl getHotShotCommitmentReturn {
7966            fn _tokenize(
7967                &self,
7968            ) -> <getHotShotCommitmentCall as alloy_sol_types::SolCall>::ReturnToken<
7969                '_,
7970            > {
7971                (
7972                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
7973                        &self.hotShotBlockCommRoot,
7974                    ),
7975                    <alloy::sol_types::sol_data::Uint<
7976                        64,
7977                    > as alloy_sol_types::SolType>::tokenize(&self.hotshotBlockHeight),
7978                )
7979            }
7980        }
7981        #[automatically_derived]
7982        impl alloy_sol_types::SolCall for getHotShotCommitmentCall {
7983            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
7984            type Token<'a> = <Self::Parameters<
7985                'a,
7986            > as alloy_sol_types::SolType>::Token<'a>;
7987            type Return = getHotShotCommitmentReturn;
7988            type ReturnTuple<'a> = (
7989                BN254::ScalarField,
7990                alloy::sol_types::sol_data::Uint<64>,
7991            );
7992            type ReturnToken<'a> = <Self::ReturnTuple<
7993                'a,
7994            > as alloy_sol_types::SolType>::Token<'a>;
7995            const SIGNATURE: &'static str = "getHotShotCommitment(uint256)";
7996            const SELECTOR: [u8; 4] = [133u8, 132u8, 210u8, 63u8];
7997            #[inline]
7998            fn new<'a>(
7999                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8000            ) -> Self {
8001                tuple.into()
8002            }
8003            #[inline]
8004            fn tokenize(&self) -> Self::Token<'_> {
8005                (
8006                    <alloy::sol_types::sol_data::Uint<
8007                        256,
8008                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
8009                )
8010            }
8011            #[inline]
8012            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8013                getHotShotCommitmentReturn::_tokenize(ret)
8014            }
8015            #[inline]
8016            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8017                <Self::ReturnTuple<
8018                    '_,
8019                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8020                    .map(Into::into)
8021            }
8022            #[inline]
8023            fn abi_decode_returns_validate(
8024                data: &[u8],
8025            ) -> alloy_sol_types::Result<Self::Return> {
8026                <Self::ReturnTuple<
8027                    '_,
8028                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8029                    .map(Into::into)
8030            }
8031        }
8032    };
8033    #[derive(serde::Serialize, serde::Deserialize)]
8034    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8035    /**Function with signature `getStateHistoryCount()` and selector `0xf9e50d19`.
8036```solidity
8037function getStateHistoryCount() external view returns (uint256);
8038```*/
8039    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8040    #[derive(Clone)]
8041    pub struct getStateHistoryCountCall;
8042    #[derive(serde::Serialize, serde::Deserialize)]
8043    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8044    ///Container type for the return parameters of the [`getStateHistoryCount()`](getStateHistoryCountCall) function.
8045    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8046    #[derive(Clone)]
8047    pub struct getStateHistoryCountReturn {
8048        #[allow(missing_docs)]
8049        pub _0: alloy::sol_types::private::primitives::aliases::U256,
8050    }
8051    #[allow(
8052        non_camel_case_types,
8053        non_snake_case,
8054        clippy::pub_underscore_fields,
8055        clippy::style
8056    )]
8057    const _: () = {
8058        use alloy::sol_types as alloy_sol_types;
8059        {
8060            #[doc(hidden)]
8061            type UnderlyingSolTuple<'a> = ();
8062            #[doc(hidden)]
8063            type UnderlyingRustTuple<'a> = ();
8064            #[cfg(test)]
8065            #[allow(dead_code, unreachable_patterns)]
8066            fn _type_assertion(
8067                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8068            ) {
8069                match _t {
8070                    alloy_sol_types::private::AssertTypeEq::<
8071                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8072                    >(_) => {}
8073                }
8074            }
8075            #[automatically_derived]
8076            #[doc(hidden)]
8077            impl ::core::convert::From<getStateHistoryCountCall>
8078            for UnderlyingRustTuple<'_> {
8079                fn from(value: getStateHistoryCountCall) -> Self {
8080                    ()
8081                }
8082            }
8083            #[automatically_derived]
8084            #[doc(hidden)]
8085            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8086            for getStateHistoryCountCall {
8087                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8088                    Self
8089                }
8090            }
8091        }
8092        {
8093            #[doc(hidden)]
8094            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8095            #[doc(hidden)]
8096            type UnderlyingRustTuple<'a> = (
8097                alloy::sol_types::private::primitives::aliases::U256,
8098            );
8099            #[cfg(test)]
8100            #[allow(dead_code, unreachable_patterns)]
8101            fn _type_assertion(
8102                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8103            ) {
8104                match _t {
8105                    alloy_sol_types::private::AssertTypeEq::<
8106                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8107                    >(_) => {}
8108                }
8109            }
8110            #[automatically_derived]
8111            #[doc(hidden)]
8112            impl ::core::convert::From<getStateHistoryCountReturn>
8113            for UnderlyingRustTuple<'_> {
8114                fn from(value: getStateHistoryCountReturn) -> Self {
8115                    (value._0,)
8116                }
8117            }
8118            #[automatically_derived]
8119            #[doc(hidden)]
8120            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8121            for getStateHistoryCountReturn {
8122                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8123                    Self { _0: tuple.0 }
8124                }
8125            }
8126        }
8127        #[automatically_derived]
8128        impl alloy_sol_types::SolCall for getStateHistoryCountCall {
8129            type Parameters<'a> = ();
8130            type Token<'a> = <Self::Parameters<
8131                'a,
8132            > as alloy_sol_types::SolType>::Token<'a>;
8133            type Return = alloy::sol_types::private::primitives::aliases::U256;
8134            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
8135            type ReturnToken<'a> = <Self::ReturnTuple<
8136                'a,
8137            > as alloy_sol_types::SolType>::Token<'a>;
8138            const SIGNATURE: &'static str = "getStateHistoryCount()";
8139            const SELECTOR: [u8; 4] = [249u8, 229u8, 13u8, 25u8];
8140            #[inline]
8141            fn new<'a>(
8142                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8143            ) -> Self {
8144                tuple.into()
8145            }
8146            #[inline]
8147            fn tokenize(&self) -> Self::Token<'_> {
8148                ()
8149            }
8150            #[inline]
8151            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8152                (
8153                    <alloy::sol_types::sol_data::Uint<
8154                        256,
8155                    > as alloy_sol_types::SolType>::tokenize(ret),
8156                )
8157            }
8158            #[inline]
8159            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8160                <Self::ReturnTuple<
8161                    '_,
8162                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8163                    .map(|r| {
8164                        let r: getStateHistoryCountReturn = r.into();
8165                        r._0
8166                    })
8167            }
8168            #[inline]
8169            fn abi_decode_returns_validate(
8170                data: &[u8],
8171            ) -> alloy_sol_types::Result<Self::Return> {
8172                <Self::ReturnTuple<
8173                    '_,
8174                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8175                    .map(|r| {
8176                        let r: getStateHistoryCountReturn = r.into();
8177                        r._0
8178                    })
8179            }
8180        }
8181    };
8182    #[derive(serde::Serialize, serde::Deserialize)]
8183    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8184    /**Function with signature `getVersion()` and selector `0x0d8e6e2c`.
8185```solidity
8186function getVersion() external pure returns (uint8 majorVersion, uint8 minorVersion, uint8 patchVersion);
8187```*/
8188    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8189    #[derive(Clone)]
8190    pub struct getVersionCall;
8191    #[derive(serde::Serialize, serde::Deserialize)]
8192    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8193    ///Container type for the return parameters of the [`getVersion()`](getVersionCall) function.
8194    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8195    #[derive(Clone)]
8196    pub struct getVersionReturn {
8197        #[allow(missing_docs)]
8198        pub majorVersion: u8,
8199        #[allow(missing_docs)]
8200        pub minorVersion: u8,
8201        #[allow(missing_docs)]
8202        pub patchVersion: u8,
8203    }
8204    #[allow(
8205        non_camel_case_types,
8206        non_snake_case,
8207        clippy::pub_underscore_fields,
8208        clippy::style
8209    )]
8210    const _: () = {
8211        use alloy::sol_types as alloy_sol_types;
8212        {
8213            #[doc(hidden)]
8214            type UnderlyingSolTuple<'a> = ();
8215            #[doc(hidden)]
8216            type UnderlyingRustTuple<'a> = ();
8217            #[cfg(test)]
8218            #[allow(dead_code, unreachable_patterns)]
8219            fn _type_assertion(
8220                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8221            ) {
8222                match _t {
8223                    alloy_sol_types::private::AssertTypeEq::<
8224                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8225                    >(_) => {}
8226                }
8227            }
8228            #[automatically_derived]
8229            #[doc(hidden)]
8230            impl ::core::convert::From<getVersionCall> for UnderlyingRustTuple<'_> {
8231                fn from(value: getVersionCall) -> Self {
8232                    ()
8233                }
8234            }
8235            #[automatically_derived]
8236            #[doc(hidden)]
8237            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionCall {
8238                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8239                    Self
8240                }
8241            }
8242        }
8243        {
8244            #[doc(hidden)]
8245            type UnderlyingSolTuple<'a> = (
8246                alloy::sol_types::sol_data::Uint<8>,
8247                alloy::sol_types::sol_data::Uint<8>,
8248                alloy::sol_types::sol_data::Uint<8>,
8249            );
8250            #[doc(hidden)]
8251            type UnderlyingRustTuple<'a> = (u8, u8, u8);
8252            #[cfg(test)]
8253            #[allow(dead_code, unreachable_patterns)]
8254            fn _type_assertion(
8255                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8256            ) {
8257                match _t {
8258                    alloy_sol_types::private::AssertTypeEq::<
8259                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8260                    >(_) => {}
8261                }
8262            }
8263            #[automatically_derived]
8264            #[doc(hidden)]
8265            impl ::core::convert::From<getVersionReturn> for UnderlyingRustTuple<'_> {
8266                fn from(value: getVersionReturn) -> Self {
8267                    (value.majorVersion, value.minorVersion, value.patchVersion)
8268                }
8269            }
8270            #[automatically_derived]
8271            #[doc(hidden)]
8272            impl ::core::convert::From<UnderlyingRustTuple<'_>> for getVersionReturn {
8273                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8274                    Self {
8275                        majorVersion: tuple.0,
8276                        minorVersion: tuple.1,
8277                        patchVersion: tuple.2,
8278                    }
8279                }
8280            }
8281        }
8282        impl getVersionReturn {
8283            fn _tokenize(
8284                &self,
8285            ) -> <getVersionCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8286                (
8287                    <alloy::sol_types::sol_data::Uint<
8288                        8,
8289                    > as alloy_sol_types::SolType>::tokenize(&self.majorVersion),
8290                    <alloy::sol_types::sol_data::Uint<
8291                        8,
8292                    > as alloy_sol_types::SolType>::tokenize(&self.minorVersion),
8293                    <alloy::sol_types::sol_data::Uint<
8294                        8,
8295                    > as alloy_sol_types::SolType>::tokenize(&self.patchVersion),
8296                )
8297            }
8298        }
8299        #[automatically_derived]
8300        impl alloy_sol_types::SolCall for getVersionCall {
8301            type Parameters<'a> = ();
8302            type Token<'a> = <Self::Parameters<
8303                'a,
8304            > as alloy_sol_types::SolType>::Token<'a>;
8305            type Return = getVersionReturn;
8306            type ReturnTuple<'a> = (
8307                alloy::sol_types::sol_data::Uint<8>,
8308                alloy::sol_types::sol_data::Uint<8>,
8309                alloy::sol_types::sol_data::Uint<8>,
8310            );
8311            type ReturnToken<'a> = <Self::ReturnTuple<
8312                'a,
8313            > as alloy_sol_types::SolType>::Token<'a>;
8314            const SIGNATURE: &'static str = "getVersion()";
8315            const SELECTOR: [u8; 4] = [13u8, 142u8, 110u8, 44u8];
8316            #[inline]
8317            fn new<'a>(
8318                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8319            ) -> Self {
8320                tuple.into()
8321            }
8322            #[inline]
8323            fn tokenize(&self) -> Self::Token<'_> {
8324                ()
8325            }
8326            #[inline]
8327            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8328                getVersionReturn::_tokenize(ret)
8329            }
8330            #[inline]
8331            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8332                <Self::ReturnTuple<
8333                    '_,
8334                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8335                    .map(Into::into)
8336            }
8337            #[inline]
8338            fn abi_decode_returns_validate(
8339                data: &[u8],
8340            ) -> alloy_sol_types::Result<Self::Return> {
8341                <Self::ReturnTuple<
8342                    '_,
8343                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8344                    .map(Into::into)
8345            }
8346        }
8347    };
8348    #[derive(serde::Serialize, serde::Deserialize)]
8349    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8350    /**Function with signature `initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)` and selector `0x9baa3cc9`.
8351```solidity
8352function initialize(LightClientState memory _genesis, StakeTableState memory _genesisStakeTableState, uint32 _stateHistoryRetentionPeriod, address owner) external;
8353```*/
8354    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8355    #[derive(Clone)]
8356    pub struct initializeCall {
8357        #[allow(missing_docs)]
8358        pub _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
8359        #[allow(missing_docs)]
8360        pub _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
8361        #[allow(missing_docs)]
8362        pub _stateHistoryRetentionPeriod: u32,
8363        #[allow(missing_docs)]
8364        pub owner: alloy::sol_types::private::Address,
8365    }
8366    ///Container type for the return parameters of the [`initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)`](initializeCall) function.
8367    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8368    #[derive(Clone)]
8369    pub struct initializeReturn {}
8370    #[allow(
8371        non_camel_case_types,
8372        non_snake_case,
8373        clippy::pub_underscore_fields,
8374        clippy::style
8375    )]
8376    const _: () = {
8377        use alloy::sol_types as alloy_sol_types;
8378        {
8379            #[doc(hidden)]
8380            type UnderlyingSolTuple<'a> = (
8381                LightClientState,
8382                StakeTableState,
8383                alloy::sol_types::sol_data::Uint<32>,
8384                alloy::sol_types::sol_data::Address,
8385            );
8386            #[doc(hidden)]
8387            type UnderlyingRustTuple<'a> = (
8388                <LightClientState as alloy::sol_types::SolType>::RustType,
8389                <StakeTableState as alloy::sol_types::SolType>::RustType,
8390                u32,
8391                alloy::sol_types::private::Address,
8392            );
8393            #[cfg(test)]
8394            #[allow(dead_code, unreachable_patterns)]
8395            fn _type_assertion(
8396                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8397            ) {
8398                match _t {
8399                    alloy_sol_types::private::AssertTypeEq::<
8400                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8401                    >(_) => {}
8402                }
8403            }
8404            #[automatically_derived]
8405            #[doc(hidden)]
8406            impl ::core::convert::From<initializeCall> for UnderlyingRustTuple<'_> {
8407                fn from(value: initializeCall) -> Self {
8408                    (
8409                        value._genesis,
8410                        value._genesisStakeTableState,
8411                        value._stateHistoryRetentionPeriod,
8412                        value.owner,
8413                    )
8414                }
8415            }
8416            #[automatically_derived]
8417            #[doc(hidden)]
8418            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeCall {
8419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8420                    Self {
8421                        _genesis: tuple.0,
8422                        _genesisStakeTableState: tuple.1,
8423                        _stateHistoryRetentionPeriod: tuple.2,
8424                        owner: tuple.3,
8425                    }
8426                }
8427            }
8428        }
8429        {
8430            #[doc(hidden)]
8431            type UnderlyingSolTuple<'a> = ();
8432            #[doc(hidden)]
8433            type UnderlyingRustTuple<'a> = ();
8434            #[cfg(test)]
8435            #[allow(dead_code, unreachable_patterns)]
8436            fn _type_assertion(
8437                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8438            ) {
8439                match _t {
8440                    alloy_sol_types::private::AssertTypeEq::<
8441                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8442                    >(_) => {}
8443                }
8444            }
8445            #[automatically_derived]
8446            #[doc(hidden)]
8447            impl ::core::convert::From<initializeReturn> for UnderlyingRustTuple<'_> {
8448                fn from(value: initializeReturn) -> Self {
8449                    ()
8450                }
8451            }
8452            #[automatically_derived]
8453            #[doc(hidden)]
8454            impl ::core::convert::From<UnderlyingRustTuple<'_>> for initializeReturn {
8455                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8456                    Self {}
8457                }
8458            }
8459        }
8460        impl initializeReturn {
8461            fn _tokenize(
8462                &self,
8463            ) -> <initializeCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8464                ()
8465            }
8466        }
8467        #[automatically_derived]
8468        impl alloy_sol_types::SolCall for initializeCall {
8469            type Parameters<'a> = (
8470                LightClientState,
8471                StakeTableState,
8472                alloy::sol_types::sol_data::Uint<32>,
8473                alloy::sol_types::sol_data::Address,
8474            );
8475            type Token<'a> = <Self::Parameters<
8476                'a,
8477            > as alloy_sol_types::SolType>::Token<'a>;
8478            type Return = initializeReturn;
8479            type ReturnTuple<'a> = ();
8480            type ReturnToken<'a> = <Self::ReturnTuple<
8481                'a,
8482            > as alloy_sol_types::SolType>::Token<'a>;
8483            const SIGNATURE: &'static str = "initialize((uint64,uint64,uint256),(uint256,uint256,uint256,uint256),uint32,address)";
8484            const SELECTOR: [u8; 4] = [155u8, 170u8, 60u8, 201u8];
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                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8495                        &self._genesis,
8496                    ),
8497                    <StakeTableState as alloy_sol_types::SolType>::tokenize(
8498                        &self._genesisStakeTableState,
8499                    ),
8500                    <alloy::sol_types::sol_data::Uint<
8501                        32,
8502                    > as alloy_sol_types::SolType>::tokenize(
8503                        &self._stateHistoryRetentionPeriod,
8504                    ),
8505                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
8506                        &self.owner,
8507                    ),
8508                )
8509            }
8510            #[inline]
8511            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8512                initializeReturn::_tokenize(ret)
8513            }
8514            #[inline]
8515            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8516                <Self::ReturnTuple<
8517                    '_,
8518                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8519                    .map(Into::into)
8520            }
8521            #[inline]
8522            fn abi_decode_returns_validate(
8523                data: &[u8],
8524            ) -> alloy_sol_types::Result<Self::Return> {
8525                <Self::ReturnTuple<
8526                    '_,
8527                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8528                    .map(Into::into)
8529            }
8530        }
8531    };
8532    #[derive(serde::Serialize, serde::Deserialize)]
8533    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8534    /**Function with signature `isPermissionedProverEnabled()` and selector `0x826e41fc`.
8535```solidity
8536function isPermissionedProverEnabled() external view returns (bool);
8537```*/
8538    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8539    #[derive(Clone)]
8540    pub struct isPermissionedProverEnabledCall;
8541    #[derive(serde::Serialize, serde::Deserialize)]
8542    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8543    ///Container type for the return parameters of the [`isPermissionedProverEnabled()`](isPermissionedProverEnabledCall) function.
8544    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8545    #[derive(Clone)]
8546    pub struct isPermissionedProverEnabledReturn {
8547        #[allow(missing_docs)]
8548        pub _0: bool,
8549    }
8550    #[allow(
8551        non_camel_case_types,
8552        non_snake_case,
8553        clippy::pub_underscore_fields,
8554        clippy::style
8555    )]
8556    const _: () = {
8557        use alloy::sol_types as alloy_sol_types;
8558        {
8559            #[doc(hidden)]
8560            type UnderlyingSolTuple<'a> = ();
8561            #[doc(hidden)]
8562            type UnderlyingRustTuple<'a> = ();
8563            #[cfg(test)]
8564            #[allow(dead_code, unreachable_patterns)]
8565            fn _type_assertion(
8566                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8567            ) {
8568                match _t {
8569                    alloy_sol_types::private::AssertTypeEq::<
8570                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8571                    >(_) => {}
8572                }
8573            }
8574            #[automatically_derived]
8575            #[doc(hidden)]
8576            impl ::core::convert::From<isPermissionedProverEnabledCall>
8577            for UnderlyingRustTuple<'_> {
8578                fn from(value: isPermissionedProverEnabledCall) -> Self {
8579                    ()
8580                }
8581            }
8582            #[automatically_derived]
8583            #[doc(hidden)]
8584            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8585            for isPermissionedProverEnabledCall {
8586                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8587                    Self
8588                }
8589            }
8590        }
8591        {
8592            #[doc(hidden)]
8593            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8594            #[doc(hidden)]
8595            type UnderlyingRustTuple<'a> = (bool,);
8596            #[cfg(test)]
8597            #[allow(dead_code, unreachable_patterns)]
8598            fn _type_assertion(
8599                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8600            ) {
8601                match _t {
8602                    alloy_sol_types::private::AssertTypeEq::<
8603                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8604                    >(_) => {}
8605                }
8606            }
8607            #[automatically_derived]
8608            #[doc(hidden)]
8609            impl ::core::convert::From<isPermissionedProverEnabledReturn>
8610            for UnderlyingRustTuple<'_> {
8611                fn from(value: isPermissionedProverEnabledReturn) -> Self {
8612                    (value._0,)
8613                }
8614            }
8615            #[automatically_derived]
8616            #[doc(hidden)]
8617            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8618            for isPermissionedProverEnabledReturn {
8619                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8620                    Self { _0: tuple.0 }
8621                }
8622            }
8623        }
8624        #[automatically_derived]
8625        impl alloy_sol_types::SolCall for isPermissionedProverEnabledCall {
8626            type Parameters<'a> = ();
8627            type Token<'a> = <Self::Parameters<
8628                'a,
8629            > as alloy_sol_types::SolType>::Token<'a>;
8630            type Return = bool;
8631            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8632            type ReturnToken<'a> = <Self::ReturnTuple<
8633                'a,
8634            > as alloy_sol_types::SolType>::Token<'a>;
8635            const SIGNATURE: &'static str = "isPermissionedProverEnabled()";
8636            const SELECTOR: [u8; 4] = [130u8, 110u8, 65u8, 252u8];
8637            #[inline]
8638            fn new<'a>(
8639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8640            ) -> Self {
8641                tuple.into()
8642            }
8643            #[inline]
8644            fn tokenize(&self) -> Self::Token<'_> {
8645                ()
8646            }
8647            #[inline]
8648            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8649                (
8650                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8651                        ret,
8652                    ),
8653                )
8654            }
8655            #[inline]
8656            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8657                <Self::ReturnTuple<
8658                    '_,
8659                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8660                    .map(|r| {
8661                        let r: isPermissionedProverEnabledReturn = r.into();
8662                        r._0
8663                    })
8664            }
8665            #[inline]
8666            fn abi_decode_returns_validate(
8667                data: &[u8],
8668            ) -> alloy_sol_types::Result<Self::Return> {
8669                <Self::ReturnTuple<
8670                    '_,
8671                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8672                    .map(|r| {
8673                        let r: isPermissionedProverEnabledReturn = r.into();
8674                        r._0
8675                    })
8676            }
8677        }
8678    };
8679    #[derive(serde::Serialize, serde::Deserialize)]
8680    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8681    /**Function with signature `lagOverEscapeHatchThreshold(uint256,uint256)` and selector `0xe0303301`.
8682```solidity
8683function lagOverEscapeHatchThreshold(uint256 blockNumber, uint256 blockThreshold) external view returns (bool);
8684```*/
8685    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8686    #[derive(Clone)]
8687    pub struct lagOverEscapeHatchThresholdCall {
8688        #[allow(missing_docs)]
8689        pub blockNumber: alloy::sol_types::private::primitives::aliases::U256,
8690        #[allow(missing_docs)]
8691        pub blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
8692    }
8693    #[derive(serde::Serialize, serde::Deserialize)]
8694    #[derive(Default, Debug, PartialEq, Eq, Hash)]
8695    ///Container type for the return parameters of the [`lagOverEscapeHatchThreshold(uint256,uint256)`](lagOverEscapeHatchThresholdCall) function.
8696    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8697    #[derive(Clone)]
8698    pub struct lagOverEscapeHatchThresholdReturn {
8699        #[allow(missing_docs)]
8700        pub _0: bool,
8701    }
8702    #[allow(
8703        non_camel_case_types,
8704        non_snake_case,
8705        clippy::pub_underscore_fields,
8706        clippy::style
8707    )]
8708    const _: () = {
8709        use alloy::sol_types as alloy_sol_types;
8710        {
8711            #[doc(hidden)]
8712            type UnderlyingSolTuple<'a> = (
8713                alloy::sol_types::sol_data::Uint<256>,
8714                alloy::sol_types::sol_data::Uint<256>,
8715            );
8716            #[doc(hidden)]
8717            type UnderlyingRustTuple<'a> = (
8718                alloy::sol_types::private::primitives::aliases::U256,
8719                alloy::sol_types::private::primitives::aliases::U256,
8720            );
8721            #[cfg(test)]
8722            #[allow(dead_code, unreachable_patterns)]
8723            fn _type_assertion(
8724                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8725            ) {
8726                match _t {
8727                    alloy_sol_types::private::AssertTypeEq::<
8728                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8729                    >(_) => {}
8730                }
8731            }
8732            #[automatically_derived]
8733            #[doc(hidden)]
8734            impl ::core::convert::From<lagOverEscapeHatchThresholdCall>
8735            for UnderlyingRustTuple<'_> {
8736                fn from(value: lagOverEscapeHatchThresholdCall) -> Self {
8737                    (value.blockNumber, value.blockThreshold)
8738                }
8739            }
8740            #[automatically_derived]
8741            #[doc(hidden)]
8742            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8743            for lagOverEscapeHatchThresholdCall {
8744                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8745                    Self {
8746                        blockNumber: tuple.0,
8747                        blockThreshold: tuple.1,
8748                    }
8749                }
8750            }
8751        }
8752        {
8753            #[doc(hidden)]
8754            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8755            #[doc(hidden)]
8756            type UnderlyingRustTuple<'a> = (bool,);
8757            #[cfg(test)]
8758            #[allow(dead_code, unreachable_patterns)]
8759            fn _type_assertion(
8760                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8761            ) {
8762                match _t {
8763                    alloy_sol_types::private::AssertTypeEq::<
8764                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8765                    >(_) => {}
8766                }
8767            }
8768            #[automatically_derived]
8769            #[doc(hidden)]
8770            impl ::core::convert::From<lagOverEscapeHatchThresholdReturn>
8771            for UnderlyingRustTuple<'_> {
8772                fn from(value: lagOverEscapeHatchThresholdReturn) -> Self {
8773                    (value._0,)
8774                }
8775            }
8776            #[automatically_derived]
8777            #[doc(hidden)]
8778            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8779            for lagOverEscapeHatchThresholdReturn {
8780                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8781                    Self { _0: tuple.0 }
8782                }
8783            }
8784        }
8785        #[automatically_derived]
8786        impl alloy_sol_types::SolCall for lagOverEscapeHatchThresholdCall {
8787            type Parameters<'a> = (
8788                alloy::sol_types::sol_data::Uint<256>,
8789                alloy::sol_types::sol_data::Uint<256>,
8790            );
8791            type Token<'a> = <Self::Parameters<
8792                'a,
8793            > as alloy_sol_types::SolType>::Token<'a>;
8794            type Return = bool;
8795            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Bool,);
8796            type ReturnToken<'a> = <Self::ReturnTuple<
8797                'a,
8798            > as alloy_sol_types::SolType>::Token<'a>;
8799            const SIGNATURE: &'static str = "lagOverEscapeHatchThreshold(uint256,uint256)";
8800            const SELECTOR: [u8; 4] = [224u8, 48u8, 51u8, 1u8];
8801            #[inline]
8802            fn new<'a>(
8803                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8804            ) -> Self {
8805                tuple.into()
8806            }
8807            #[inline]
8808            fn tokenize(&self) -> Self::Token<'_> {
8809                (
8810                    <alloy::sol_types::sol_data::Uint<
8811                        256,
8812                    > as alloy_sol_types::SolType>::tokenize(&self.blockNumber),
8813                    <alloy::sol_types::sol_data::Uint<
8814                        256,
8815                    > as alloy_sol_types::SolType>::tokenize(&self.blockThreshold),
8816                )
8817            }
8818            #[inline]
8819            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8820                (
8821                    <alloy::sol_types::sol_data::Bool as alloy_sol_types::SolType>::tokenize(
8822                        ret,
8823                    ),
8824                )
8825            }
8826            #[inline]
8827            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8828                <Self::ReturnTuple<
8829                    '_,
8830                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8831                    .map(|r| {
8832                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8833                        r._0
8834                    })
8835            }
8836            #[inline]
8837            fn abi_decode_returns_validate(
8838                data: &[u8],
8839            ) -> alloy_sol_types::Result<Self::Return> {
8840                <Self::ReturnTuple<
8841                    '_,
8842                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
8843                    .map(|r| {
8844                        let r: lagOverEscapeHatchThresholdReturn = r.into();
8845                        r._0
8846                    })
8847            }
8848        }
8849    };
8850    #[derive(serde::Serialize, serde::Deserialize)]
8851    #[derive()]
8852    /**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`.
8853```solidity
8854function newFinalizedState(LightClientState memory newState, IPlonkVerifier.PlonkProof memory proof) external;
8855```*/
8856    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8857    #[derive(Clone)]
8858    pub struct newFinalizedStateCall {
8859        #[allow(missing_docs)]
8860        pub newState: <LightClientState as alloy::sol_types::SolType>::RustType,
8861        #[allow(missing_docs)]
8862        pub proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8863    }
8864    ///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.
8865    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
8866    #[derive(Clone)]
8867    pub struct newFinalizedStateReturn {}
8868    #[allow(
8869        non_camel_case_types,
8870        non_snake_case,
8871        clippy::pub_underscore_fields,
8872        clippy::style
8873    )]
8874    const _: () = {
8875        use alloy::sol_types as alloy_sol_types;
8876        {
8877            #[doc(hidden)]
8878            type UnderlyingSolTuple<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8879            #[doc(hidden)]
8880            type UnderlyingRustTuple<'a> = (
8881                <LightClientState as alloy::sol_types::SolType>::RustType,
8882                <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
8883            );
8884            #[cfg(test)]
8885            #[allow(dead_code, unreachable_patterns)]
8886            fn _type_assertion(
8887                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8888            ) {
8889                match _t {
8890                    alloy_sol_types::private::AssertTypeEq::<
8891                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8892                    >(_) => {}
8893                }
8894            }
8895            #[automatically_derived]
8896            #[doc(hidden)]
8897            impl ::core::convert::From<newFinalizedStateCall>
8898            for UnderlyingRustTuple<'_> {
8899                fn from(value: newFinalizedStateCall) -> Self {
8900                    (value.newState, value.proof)
8901                }
8902            }
8903            #[automatically_derived]
8904            #[doc(hidden)]
8905            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8906            for newFinalizedStateCall {
8907                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8908                    Self {
8909                        newState: tuple.0,
8910                        proof: tuple.1,
8911                    }
8912                }
8913            }
8914        }
8915        {
8916            #[doc(hidden)]
8917            type UnderlyingSolTuple<'a> = ();
8918            #[doc(hidden)]
8919            type UnderlyingRustTuple<'a> = ();
8920            #[cfg(test)]
8921            #[allow(dead_code, unreachable_patterns)]
8922            fn _type_assertion(
8923                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
8924            ) {
8925                match _t {
8926                    alloy_sol_types::private::AssertTypeEq::<
8927                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
8928                    >(_) => {}
8929                }
8930            }
8931            #[automatically_derived]
8932            #[doc(hidden)]
8933            impl ::core::convert::From<newFinalizedStateReturn>
8934            for UnderlyingRustTuple<'_> {
8935                fn from(value: newFinalizedStateReturn) -> Self {
8936                    ()
8937                }
8938            }
8939            #[automatically_derived]
8940            #[doc(hidden)]
8941            impl ::core::convert::From<UnderlyingRustTuple<'_>>
8942            for newFinalizedStateReturn {
8943                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
8944                    Self {}
8945                }
8946            }
8947        }
8948        impl newFinalizedStateReturn {
8949            fn _tokenize(
8950                &self,
8951            ) -> <newFinalizedStateCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
8952                ()
8953            }
8954        }
8955        #[automatically_derived]
8956        impl alloy_sol_types::SolCall for newFinalizedStateCall {
8957            type Parameters<'a> = (LightClientState, IPlonkVerifier::PlonkProof);
8958            type Token<'a> = <Self::Parameters<
8959                'a,
8960            > as alloy_sol_types::SolType>::Token<'a>;
8961            type Return = newFinalizedStateReturn;
8962            type ReturnTuple<'a> = ();
8963            type ReturnToken<'a> = <Self::ReturnTuple<
8964                'a,
8965            > as alloy_sol_types::SolType>::Token<'a>;
8966            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))";
8967            const SELECTOR: [u8; 4] = [32u8, 99u8, 212u8, 247u8];
8968            #[inline]
8969            fn new<'a>(
8970                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
8971            ) -> Self {
8972                tuple.into()
8973            }
8974            #[inline]
8975            fn tokenize(&self) -> Self::Token<'_> {
8976                (
8977                    <LightClientState as alloy_sol_types::SolType>::tokenize(
8978                        &self.newState,
8979                    ),
8980                    <IPlonkVerifier::PlonkProof as alloy_sol_types::SolType>::tokenize(
8981                        &self.proof,
8982                    ),
8983                )
8984            }
8985            #[inline]
8986            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
8987                newFinalizedStateReturn::_tokenize(ret)
8988            }
8989            #[inline]
8990            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
8991                <Self::ReturnTuple<
8992                    '_,
8993                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
8994                    .map(Into::into)
8995            }
8996            #[inline]
8997            fn abi_decode_returns_validate(
8998                data: &[u8],
8999            ) -> alloy_sol_types::Result<Self::Return> {
9000                <Self::ReturnTuple<
9001                    '_,
9002                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9003                    .map(Into::into)
9004            }
9005        }
9006    };
9007    #[derive(serde::Serialize, serde::Deserialize)]
9008    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9009    /**Function with signature `owner()` and selector `0x8da5cb5b`.
9010```solidity
9011function owner() external view returns (address);
9012```*/
9013    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9014    #[derive(Clone)]
9015    pub struct ownerCall;
9016    #[derive(serde::Serialize, serde::Deserialize)]
9017    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9018    ///Container type for the return parameters of the [`owner()`](ownerCall) function.
9019    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9020    #[derive(Clone)]
9021    pub struct ownerReturn {
9022        #[allow(missing_docs)]
9023        pub _0: alloy::sol_types::private::Address,
9024    }
9025    #[allow(
9026        non_camel_case_types,
9027        non_snake_case,
9028        clippy::pub_underscore_fields,
9029        clippy::style
9030    )]
9031    const _: () = {
9032        use alloy::sol_types as alloy_sol_types;
9033        {
9034            #[doc(hidden)]
9035            type UnderlyingSolTuple<'a> = ();
9036            #[doc(hidden)]
9037            type UnderlyingRustTuple<'a> = ();
9038            #[cfg(test)]
9039            #[allow(dead_code, unreachable_patterns)]
9040            fn _type_assertion(
9041                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9042            ) {
9043                match _t {
9044                    alloy_sol_types::private::AssertTypeEq::<
9045                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9046                    >(_) => {}
9047                }
9048            }
9049            #[automatically_derived]
9050            #[doc(hidden)]
9051            impl ::core::convert::From<ownerCall> for UnderlyingRustTuple<'_> {
9052                fn from(value: ownerCall) -> Self {
9053                    ()
9054                }
9055            }
9056            #[automatically_derived]
9057            #[doc(hidden)]
9058            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerCall {
9059                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9060                    Self
9061                }
9062            }
9063        }
9064        {
9065            #[doc(hidden)]
9066            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9067            #[doc(hidden)]
9068            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9069            #[cfg(test)]
9070            #[allow(dead_code, unreachable_patterns)]
9071            fn _type_assertion(
9072                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9073            ) {
9074                match _t {
9075                    alloy_sol_types::private::AssertTypeEq::<
9076                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9077                    >(_) => {}
9078                }
9079            }
9080            #[automatically_derived]
9081            #[doc(hidden)]
9082            impl ::core::convert::From<ownerReturn> for UnderlyingRustTuple<'_> {
9083                fn from(value: ownerReturn) -> Self {
9084                    (value._0,)
9085                }
9086            }
9087            #[automatically_derived]
9088            #[doc(hidden)]
9089            impl ::core::convert::From<UnderlyingRustTuple<'_>> for ownerReturn {
9090                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9091                    Self { _0: tuple.0 }
9092                }
9093            }
9094        }
9095        #[automatically_derived]
9096        impl alloy_sol_types::SolCall for ownerCall {
9097            type Parameters<'a> = ();
9098            type Token<'a> = <Self::Parameters<
9099                'a,
9100            > as alloy_sol_types::SolType>::Token<'a>;
9101            type Return = alloy::sol_types::private::Address;
9102            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9103            type ReturnToken<'a> = <Self::ReturnTuple<
9104                'a,
9105            > as alloy_sol_types::SolType>::Token<'a>;
9106            const SIGNATURE: &'static str = "owner()";
9107            const SELECTOR: [u8; 4] = [141u8, 165u8, 203u8, 91u8];
9108            #[inline]
9109            fn new<'a>(
9110                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9111            ) -> Self {
9112                tuple.into()
9113            }
9114            #[inline]
9115            fn tokenize(&self) -> Self::Token<'_> {
9116                ()
9117            }
9118            #[inline]
9119            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9120                (
9121                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9122                        ret,
9123                    ),
9124                )
9125            }
9126            #[inline]
9127            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9128                <Self::ReturnTuple<
9129                    '_,
9130                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9131                    .map(|r| {
9132                        let r: ownerReturn = r.into();
9133                        r._0
9134                    })
9135            }
9136            #[inline]
9137            fn abi_decode_returns_validate(
9138                data: &[u8],
9139            ) -> alloy_sol_types::Result<Self::Return> {
9140                <Self::ReturnTuple<
9141                    '_,
9142                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9143                    .map(|r| {
9144                        let r: ownerReturn = r.into();
9145                        r._0
9146                    })
9147            }
9148        }
9149    };
9150    #[derive(serde::Serialize, serde::Deserialize)]
9151    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9152    /**Function with signature `permissionedProver()` and selector `0x313df7b1`.
9153```solidity
9154function permissionedProver() external view returns (address);
9155```*/
9156    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9157    #[derive(Clone)]
9158    pub struct permissionedProverCall;
9159    #[derive(serde::Serialize, serde::Deserialize)]
9160    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9161    ///Container type for the return parameters of the [`permissionedProver()`](permissionedProverCall) function.
9162    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9163    #[derive(Clone)]
9164    pub struct permissionedProverReturn {
9165        #[allow(missing_docs)]
9166        pub _0: alloy::sol_types::private::Address,
9167    }
9168    #[allow(
9169        non_camel_case_types,
9170        non_snake_case,
9171        clippy::pub_underscore_fields,
9172        clippy::style
9173    )]
9174    const _: () = {
9175        use alloy::sol_types as alloy_sol_types;
9176        {
9177            #[doc(hidden)]
9178            type UnderlyingSolTuple<'a> = ();
9179            #[doc(hidden)]
9180            type UnderlyingRustTuple<'a> = ();
9181            #[cfg(test)]
9182            #[allow(dead_code, unreachable_patterns)]
9183            fn _type_assertion(
9184                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9185            ) {
9186                match _t {
9187                    alloy_sol_types::private::AssertTypeEq::<
9188                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9189                    >(_) => {}
9190                }
9191            }
9192            #[automatically_derived]
9193            #[doc(hidden)]
9194            impl ::core::convert::From<permissionedProverCall>
9195            for UnderlyingRustTuple<'_> {
9196                fn from(value: permissionedProverCall) -> Self {
9197                    ()
9198                }
9199            }
9200            #[automatically_derived]
9201            #[doc(hidden)]
9202            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9203            for permissionedProverCall {
9204                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9205                    Self
9206                }
9207            }
9208        }
9209        {
9210            #[doc(hidden)]
9211            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9212            #[doc(hidden)]
9213            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9214            #[cfg(test)]
9215            #[allow(dead_code, unreachable_patterns)]
9216            fn _type_assertion(
9217                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9218            ) {
9219                match _t {
9220                    alloy_sol_types::private::AssertTypeEq::<
9221                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9222                    >(_) => {}
9223                }
9224            }
9225            #[automatically_derived]
9226            #[doc(hidden)]
9227            impl ::core::convert::From<permissionedProverReturn>
9228            for UnderlyingRustTuple<'_> {
9229                fn from(value: permissionedProverReturn) -> Self {
9230                    (value._0,)
9231                }
9232            }
9233            #[automatically_derived]
9234            #[doc(hidden)]
9235            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9236            for permissionedProverReturn {
9237                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9238                    Self { _0: tuple.0 }
9239                }
9240            }
9241        }
9242        #[automatically_derived]
9243        impl alloy_sol_types::SolCall for permissionedProverCall {
9244            type Parameters<'a> = ();
9245            type Token<'a> = <Self::Parameters<
9246                'a,
9247            > as alloy_sol_types::SolType>::Token<'a>;
9248            type Return = alloy::sol_types::private::Address;
9249            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Address,);
9250            type ReturnToken<'a> = <Self::ReturnTuple<
9251                'a,
9252            > as alloy_sol_types::SolType>::Token<'a>;
9253            const SIGNATURE: &'static str = "permissionedProver()";
9254            const SELECTOR: [u8; 4] = [49u8, 61u8, 247u8, 177u8];
9255            #[inline]
9256            fn new<'a>(
9257                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9258            ) -> Self {
9259                tuple.into()
9260            }
9261            #[inline]
9262            fn tokenize(&self) -> Self::Token<'_> {
9263                ()
9264            }
9265            #[inline]
9266            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9267                (
9268                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9269                        ret,
9270                    ),
9271                )
9272            }
9273            #[inline]
9274            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9275                <Self::ReturnTuple<
9276                    '_,
9277                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9278                    .map(|r| {
9279                        let r: permissionedProverReturn = r.into();
9280                        r._0
9281                    })
9282            }
9283            #[inline]
9284            fn abi_decode_returns_validate(
9285                data: &[u8],
9286            ) -> alloy_sol_types::Result<Self::Return> {
9287                <Self::ReturnTuple<
9288                    '_,
9289                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9290                    .map(|r| {
9291                        let r: permissionedProverReturn = r.into();
9292                        r._0
9293                    })
9294            }
9295        }
9296    };
9297    #[derive(serde::Serialize, serde::Deserialize)]
9298    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9299    /**Function with signature `proxiableUUID()` and selector `0x52d1902d`.
9300```solidity
9301function proxiableUUID() external view returns (bytes32);
9302```*/
9303    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9304    #[derive(Clone)]
9305    pub struct proxiableUUIDCall;
9306    #[derive(serde::Serialize, serde::Deserialize)]
9307    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9308    ///Container type for the return parameters of the [`proxiableUUID()`](proxiableUUIDCall) function.
9309    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9310    #[derive(Clone)]
9311    pub struct proxiableUUIDReturn {
9312        #[allow(missing_docs)]
9313        pub _0: alloy::sol_types::private::FixedBytes<32>,
9314    }
9315    #[allow(
9316        non_camel_case_types,
9317        non_snake_case,
9318        clippy::pub_underscore_fields,
9319        clippy::style
9320    )]
9321    const _: () = {
9322        use alloy::sol_types as alloy_sol_types;
9323        {
9324            #[doc(hidden)]
9325            type UnderlyingSolTuple<'a> = ();
9326            #[doc(hidden)]
9327            type UnderlyingRustTuple<'a> = ();
9328            #[cfg(test)]
9329            #[allow(dead_code, unreachable_patterns)]
9330            fn _type_assertion(
9331                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9332            ) {
9333                match _t {
9334                    alloy_sol_types::private::AssertTypeEq::<
9335                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9336                    >(_) => {}
9337                }
9338            }
9339            #[automatically_derived]
9340            #[doc(hidden)]
9341            impl ::core::convert::From<proxiableUUIDCall> for UnderlyingRustTuple<'_> {
9342                fn from(value: proxiableUUIDCall) -> Self {
9343                    ()
9344                }
9345            }
9346            #[automatically_derived]
9347            #[doc(hidden)]
9348            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDCall {
9349                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9350                    Self
9351                }
9352            }
9353        }
9354        {
9355            #[doc(hidden)]
9356            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9357            #[doc(hidden)]
9358            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::FixedBytes<32>,);
9359            #[cfg(test)]
9360            #[allow(dead_code, unreachable_patterns)]
9361            fn _type_assertion(
9362                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9363            ) {
9364                match _t {
9365                    alloy_sol_types::private::AssertTypeEq::<
9366                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9367                    >(_) => {}
9368                }
9369            }
9370            #[automatically_derived]
9371            #[doc(hidden)]
9372            impl ::core::convert::From<proxiableUUIDReturn> for UnderlyingRustTuple<'_> {
9373                fn from(value: proxiableUUIDReturn) -> Self {
9374                    (value._0,)
9375                }
9376            }
9377            #[automatically_derived]
9378            #[doc(hidden)]
9379            impl ::core::convert::From<UnderlyingRustTuple<'_>> for proxiableUUIDReturn {
9380                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9381                    Self { _0: tuple.0 }
9382                }
9383            }
9384        }
9385        #[automatically_derived]
9386        impl alloy_sol_types::SolCall for proxiableUUIDCall {
9387            type Parameters<'a> = ();
9388            type Token<'a> = <Self::Parameters<
9389                'a,
9390            > as alloy_sol_types::SolType>::Token<'a>;
9391            type Return = alloy::sol_types::private::FixedBytes<32>;
9392            type ReturnTuple<'a> = (alloy::sol_types::sol_data::FixedBytes<32>,);
9393            type ReturnToken<'a> = <Self::ReturnTuple<
9394                'a,
9395            > as alloy_sol_types::SolType>::Token<'a>;
9396            const SIGNATURE: &'static str = "proxiableUUID()";
9397            const SELECTOR: [u8; 4] = [82u8, 209u8, 144u8, 45u8];
9398            #[inline]
9399            fn new<'a>(
9400                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9401            ) -> Self {
9402                tuple.into()
9403            }
9404            #[inline]
9405            fn tokenize(&self) -> Self::Token<'_> {
9406                ()
9407            }
9408            #[inline]
9409            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9410                (
9411                    <alloy::sol_types::sol_data::FixedBytes<
9412                        32,
9413                    > as alloy_sol_types::SolType>::tokenize(ret),
9414                )
9415            }
9416            #[inline]
9417            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9418                <Self::ReturnTuple<
9419                    '_,
9420                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9421                    .map(|r| {
9422                        let r: proxiableUUIDReturn = r.into();
9423                        r._0
9424                    })
9425            }
9426            #[inline]
9427            fn abi_decode_returns_validate(
9428                data: &[u8],
9429            ) -> alloy_sol_types::Result<Self::Return> {
9430                <Self::ReturnTuple<
9431                    '_,
9432                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9433                    .map(|r| {
9434                        let r: proxiableUUIDReturn = r.into();
9435                        r._0
9436                    })
9437            }
9438        }
9439    };
9440    #[derive(serde::Serialize, serde::Deserialize)]
9441    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9442    /**Function with signature `renounceOwnership()` and selector `0x715018a6`.
9443```solidity
9444function renounceOwnership() external;
9445```*/
9446    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9447    #[derive(Clone)]
9448    pub struct renounceOwnershipCall;
9449    ///Container type for the return parameters of the [`renounceOwnership()`](renounceOwnershipCall) function.
9450    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9451    #[derive(Clone)]
9452    pub struct renounceOwnershipReturn {}
9453    #[allow(
9454        non_camel_case_types,
9455        non_snake_case,
9456        clippy::pub_underscore_fields,
9457        clippy::style
9458    )]
9459    const _: () = {
9460        use alloy::sol_types as alloy_sol_types;
9461        {
9462            #[doc(hidden)]
9463            type UnderlyingSolTuple<'a> = ();
9464            #[doc(hidden)]
9465            type UnderlyingRustTuple<'a> = ();
9466            #[cfg(test)]
9467            #[allow(dead_code, unreachable_patterns)]
9468            fn _type_assertion(
9469                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9470            ) {
9471                match _t {
9472                    alloy_sol_types::private::AssertTypeEq::<
9473                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9474                    >(_) => {}
9475                }
9476            }
9477            #[automatically_derived]
9478            #[doc(hidden)]
9479            impl ::core::convert::From<renounceOwnershipCall>
9480            for UnderlyingRustTuple<'_> {
9481                fn from(value: renounceOwnershipCall) -> Self {
9482                    ()
9483                }
9484            }
9485            #[automatically_derived]
9486            #[doc(hidden)]
9487            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9488            for renounceOwnershipCall {
9489                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9490                    Self
9491                }
9492            }
9493        }
9494        {
9495            #[doc(hidden)]
9496            type UnderlyingSolTuple<'a> = ();
9497            #[doc(hidden)]
9498            type UnderlyingRustTuple<'a> = ();
9499            #[cfg(test)]
9500            #[allow(dead_code, unreachable_patterns)]
9501            fn _type_assertion(
9502                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9503            ) {
9504                match _t {
9505                    alloy_sol_types::private::AssertTypeEq::<
9506                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9507                    >(_) => {}
9508                }
9509            }
9510            #[automatically_derived]
9511            #[doc(hidden)]
9512            impl ::core::convert::From<renounceOwnershipReturn>
9513            for UnderlyingRustTuple<'_> {
9514                fn from(value: renounceOwnershipReturn) -> Self {
9515                    ()
9516                }
9517            }
9518            #[automatically_derived]
9519            #[doc(hidden)]
9520            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9521            for renounceOwnershipReturn {
9522                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9523                    Self {}
9524                }
9525            }
9526        }
9527        impl renounceOwnershipReturn {
9528            fn _tokenize(
9529                &self,
9530            ) -> <renounceOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
9531                ()
9532            }
9533        }
9534        #[automatically_derived]
9535        impl alloy_sol_types::SolCall for renounceOwnershipCall {
9536            type Parameters<'a> = ();
9537            type Token<'a> = <Self::Parameters<
9538                'a,
9539            > as alloy_sol_types::SolType>::Token<'a>;
9540            type Return = renounceOwnershipReturn;
9541            type ReturnTuple<'a> = ();
9542            type ReturnToken<'a> = <Self::ReturnTuple<
9543                'a,
9544            > as alloy_sol_types::SolType>::Token<'a>;
9545            const SIGNATURE: &'static str = "renounceOwnership()";
9546            const SELECTOR: [u8; 4] = [113u8, 80u8, 24u8, 166u8];
9547            #[inline]
9548            fn new<'a>(
9549                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9550            ) -> Self {
9551                tuple.into()
9552            }
9553            #[inline]
9554            fn tokenize(&self) -> Self::Token<'_> {
9555                ()
9556            }
9557            #[inline]
9558            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9559                renounceOwnershipReturn::_tokenize(ret)
9560            }
9561            #[inline]
9562            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9563                <Self::ReturnTuple<
9564                    '_,
9565                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9566                    .map(Into::into)
9567            }
9568            #[inline]
9569            fn abi_decode_returns_validate(
9570                data: &[u8],
9571            ) -> alloy_sol_types::Result<Self::Return> {
9572                <Self::ReturnTuple<
9573                    '_,
9574                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9575                    .map(Into::into)
9576            }
9577        }
9578    };
9579    #[derive(serde::Serialize, serde::Deserialize)]
9580    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9581    /**Function with signature `setPermissionedProver(address)` and selector `0x013fa5fc`.
9582```solidity
9583function setPermissionedProver(address prover) external;
9584```*/
9585    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9586    #[derive(Clone)]
9587    pub struct setPermissionedProverCall {
9588        #[allow(missing_docs)]
9589        pub prover: alloy::sol_types::private::Address,
9590    }
9591    ///Container type for the return parameters of the [`setPermissionedProver(address)`](setPermissionedProverCall) function.
9592    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9593    #[derive(Clone)]
9594    pub struct setPermissionedProverReturn {}
9595    #[allow(
9596        non_camel_case_types,
9597        non_snake_case,
9598        clippy::pub_underscore_fields,
9599        clippy::style
9600    )]
9601    const _: () = {
9602        use alloy::sol_types as alloy_sol_types;
9603        {
9604            #[doc(hidden)]
9605            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
9606            #[doc(hidden)]
9607            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
9608            #[cfg(test)]
9609            #[allow(dead_code, unreachable_patterns)]
9610            fn _type_assertion(
9611                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9612            ) {
9613                match _t {
9614                    alloy_sol_types::private::AssertTypeEq::<
9615                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9616                    >(_) => {}
9617                }
9618            }
9619            #[automatically_derived]
9620            #[doc(hidden)]
9621            impl ::core::convert::From<setPermissionedProverCall>
9622            for UnderlyingRustTuple<'_> {
9623                fn from(value: setPermissionedProverCall) -> Self {
9624                    (value.prover,)
9625                }
9626            }
9627            #[automatically_derived]
9628            #[doc(hidden)]
9629            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9630            for setPermissionedProverCall {
9631                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9632                    Self { prover: tuple.0 }
9633                }
9634            }
9635        }
9636        {
9637            #[doc(hidden)]
9638            type UnderlyingSolTuple<'a> = ();
9639            #[doc(hidden)]
9640            type UnderlyingRustTuple<'a> = ();
9641            #[cfg(test)]
9642            #[allow(dead_code, unreachable_patterns)]
9643            fn _type_assertion(
9644                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9645            ) {
9646                match _t {
9647                    alloy_sol_types::private::AssertTypeEq::<
9648                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9649                    >(_) => {}
9650                }
9651            }
9652            #[automatically_derived]
9653            #[doc(hidden)]
9654            impl ::core::convert::From<setPermissionedProverReturn>
9655            for UnderlyingRustTuple<'_> {
9656                fn from(value: setPermissionedProverReturn) -> Self {
9657                    ()
9658                }
9659            }
9660            #[automatically_derived]
9661            #[doc(hidden)]
9662            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9663            for setPermissionedProverReturn {
9664                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9665                    Self {}
9666                }
9667            }
9668        }
9669        impl setPermissionedProverReturn {
9670            fn _tokenize(
9671                &self,
9672            ) -> <setPermissionedProverCall as alloy_sol_types::SolCall>::ReturnToken<
9673                '_,
9674            > {
9675                ()
9676            }
9677        }
9678        #[automatically_derived]
9679        impl alloy_sol_types::SolCall for setPermissionedProverCall {
9680            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
9681            type Token<'a> = <Self::Parameters<
9682                'a,
9683            > as alloy_sol_types::SolType>::Token<'a>;
9684            type Return = setPermissionedProverReturn;
9685            type ReturnTuple<'a> = ();
9686            type ReturnToken<'a> = <Self::ReturnTuple<
9687                'a,
9688            > as alloy_sol_types::SolType>::Token<'a>;
9689            const SIGNATURE: &'static str = "setPermissionedProver(address)";
9690            const SELECTOR: [u8; 4] = [1u8, 63u8, 165u8, 252u8];
9691            #[inline]
9692            fn new<'a>(
9693                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9694            ) -> Self {
9695                tuple.into()
9696            }
9697            #[inline]
9698            fn tokenize(&self) -> Self::Token<'_> {
9699                (
9700                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
9701                        &self.prover,
9702                    ),
9703                )
9704            }
9705            #[inline]
9706            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9707                setPermissionedProverReturn::_tokenize(ret)
9708            }
9709            #[inline]
9710            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9711                <Self::ReturnTuple<
9712                    '_,
9713                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9714                    .map(Into::into)
9715            }
9716            #[inline]
9717            fn abi_decode_returns_validate(
9718                data: &[u8],
9719            ) -> alloy_sol_types::Result<Self::Return> {
9720                <Self::ReturnTuple<
9721                    '_,
9722                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9723                    .map(Into::into)
9724            }
9725        }
9726    };
9727    #[derive(serde::Serialize, serde::Deserialize)]
9728    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9729    /**Function with signature `setstateHistoryRetentionPeriod(uint32)` and selector `0x96c1ca61`.
9730```solidity
9731function setstateHistoryRetentionPeriod(uint32 historySeconds) external;
9732```*/
9733    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9734    #[derive(Clone)]
9735    pub struct setstateHistoryRetentionPeriodCall {
9736        #[allow(missing_docs)]
9737        pub historySeconds: u32,
9738    }
9739    ///Container type for the return parameters of the [`setstateHistoryRetentionPeriod(uint32)`](setstateHistoryRetentionPeriodCall) function.
9740    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9741    #[derive(Clone)]
9742    pub struct setstateHistoryRetentionPeriodReturn {}
9743    #[allow(
9744        non_camel_case_types,
9745        non_snake_case,
9746        clippy::pub_underscore_fields,
9747        clippy::style
9748    )]
9749    const _: () = {
9750        use alloy::sol_types as alloy_sol_types;
9751        {
9752            #[doc(hidden)]
9753            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9754            #[doc(hidden)]
9755            type UnderlyingRustTuple<'a> = (u32,);
9756            #[cfg(test)]
9757            #[allow(dead_code, unreachable_patterns)]
9758            fn _type_assertion(
9759                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9760            ) {
9761                match _t {
9762                    alloy_sol_types::private::AssertTypeEq::<
9763                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9764                    >(_) => {}
9765                }
9766            }
9767            #[automatically_derived]
9768            #[doc(hidden)]
9769            impl ::core::convert::From<setstateHistoryRetentionPeriodCall>
9770            for UnderlyingRustTuple<'_> {
9771                fn from(value: setstateHistoryRetentionPeriodCall) -> Self {
9772                    (value.historySeconds,)
9773                }
9774            }
9775            #[automatically_derived]
9776            #[doc(hidden)]
9777            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9778            for setstateHistoryRetentionPeriodCall {
9779                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9780                    Self { historySeconds: tuple.0 }
9781                }
9782            }
9783        }
9784        {
9785            #[doc(hidden)]
9786            type UnderlyingSolTuple<'a> = ();
9787            #[doc(hidden)]
9788            type UnderlyingRustTuple<'a> = ();
9789            #[cfg(test)]
9790            #[allow(dead_code, unreachable_patterns)]
9791            fn _type_assertion(
9792                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9793            ) {
9794                match _t {
9795                    alloy_sol_types::private::AssertTypeEq::<
9796                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9797                    >(_) => {}
9798                }
9799            }
9800            #[automatically_derived]
9801            #[doc(hidden)]
9802            impl ::core::convert::From<setstateHistoryRetentionPeriodReturn>
9803            for UnderlyingRustTuple<'_> {
9804                fn from(value: setstateHistoryRetentionPeriodReturn) -> Self {
9805                    ()
9806                }
9807            }
9808            #[automatically_derived]
9809            #[doc(hidden)]
9810            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9811            for setstateHistoryRetentionPeriodReturn {
9812                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9813                    Self {}
9814                }
9815            }
9816        }
9817        impl setstateHistoryRetentionPeriodReturn {
9818            fn _tokenize(
9819                &self,
9820            ) -> <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::ReturnToken<
9821                '_,
9822            > {
9823                ()
9824            }
9825        }
9826        #[automatically_derived]
9827        impl alloy_sol_types::SolCall for setstateHistoryRetentionPeriodCall {
9828            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<32>,);
9829            type Token<'a> = <Self::Parameters<
9830                'a,
9831            > as alloy_sol_types::SolType>::Token<'a>;
9832            type Return = setstateHistoryRetentionPeriodReturn;
9833            type ReturnTuple<'a> = ();
9834            type ReturnToken<'a> = <Self::ReturnTuple<
9835                'a,
9836            > as alloy_sol_types::SolType>::Token<'a>;
9837            const SIGNATURE: &'static str = "setstateHistoryRetentionPeriod(uint32)";
9838            const SELECTOR: [u8; 4] = [150u8, 193u8, 202u8, 97u8];
9839            #[inline]
9840            fn new<'a>(
9841                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
9842            ) -> Self {
9843                tuple.into()
9844            }
9845            #[inline]
9846            fn tokenize(&self) -> Self::Token<'_> {
9847                (
9848                    <alloy::sol_types::sol_data::Uint<
9849                        32,
9850                    > as alloy_sol_types::SolType>::tokenize(&self.historySeconds),
9851                )
9852            }
9853            #[inline]
9854            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
9855                setstateHistoryRetentionPeriodReturn::_tokenize(ret)
9856            }
9857            #[inline]
9858            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
9859                <Self::ReturnTuple<
9860                    '_,
9861                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
9862                    .map(Into::into)
9863            }
9864            #[inline]
9865            fn abi_decode_returns_validate(
9866                data: &[u8],
9867            ) -> alloy_sol_types::Result<Self::Return> {
9868                <Self::ReturnTuple<
9869                    '_,
9870                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
9871                    .map(Into::into)
9872            }
9873        }
9874    };
9875    #[derive(serde::Serialize, serde::Deserialize)]
9876    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9877    /**Function with signature `stateHistoryCommitments(uint256)` and selector `0x02b592f3`.
9878```solidity
9879function stateHistoryCommitments(uint256) external view returns (uint64 l1BlockHeight, uint64 l1BlockTimestamp, uint64 hotShotBlockHeight, BN254.ScalarField hotShotBlockCommRoot);
9880```*/
9881    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9882    #[derive(Clone)]
9883    pub struct stateHistoryCommitmentsCall(
9884        pub alloy::sol_types::private::primitives::aliases::U256,
9885    );
9886    #[derive(serde::Serialize, serde::Deserialize)]
9887    #[derive(Default, Debug, PartialEq, Eq, Hash)]
9888    ///Container type for the return parameters of the [`stateHistoryCommitments(uint256)`](stateHistoryCommitmentsCall) function.
9889    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
9890    #[derive(Clone)]
9891    pub struct stateHistoryCommitmentsReturn {
9892        #[allow(missing_docs)]
9893        pub l1BlockHeight: u64,
9894        #[allow(missing_docs)]
9895        pub l1BlockTimestamp: u64,
9896        #[allow(missing_docs)]
9897        pub hotShotBlockHeight: u64,
9898        #[allow(missing_docs)]
9899        pub hotShotBlockCommRoot: <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9900    }
9901    #[allow(
9902        non_camel_case_types,
9903        non_snake_case,
9904        clippy::pub_underscore_fields,
9905        clippy::style
9906    )]
9907    const _: () = {
9908        use alloy::sol_types as alloy_sol_types;
9909        {
9910            #[doc(hidden)]
9911            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<256>,);
9912            #[doc(hidden)]
9913            type UnderlyingRustTuple<'a> = (
9914                alloy::sol_types::private::primitives::aliases::U256,
9915            );
9916            #[cfg(test)]
9917            #[allow(dead_code, unreachable_patterns)]
9918            fn _type_assertion(
9919                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9920            ) {
9921                match _t {
9922                    alloy_sol_types::private::AssertTypeEq::<
9923                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9924                    >(_) => {}
9925                }
9926            }
9927            #[automatically_derived]
9928            #[doc(hidden)]
9929            impl ::core::convert::From<stateHistoryCommitmentsCall>
9930            for UnderlyingRustTuple<'_> {
9931                fn from(value: stateHistoryCommitmentsCall) -> Self {
9932                    (value.0,)
9933                }
9934            }
9935            #[automatically_derived]
9936            #[doc(hidden)]
9937            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9938            for stateHistoryCommitmentsCall {
9939                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9940                    Self(tuple.0)
9941                }
9942            }
9943        }
9944        {
9945            #[doc(hidden)]
9946            type UnderlyingSolTuple<'a> = (
9947                alloy::sol_types::sol_data::Uint<64>,
9948                alloy::sol_types::sol_data::Uint<64>,
9949                alloy::sol_types::sol_data::Uint<64>,
9950                BN254::ScalarField,
9951            );
9952            #[doc(hidden)]
9953            type UnderlyingRustTuple<'a> = (
9954                u64,
9955                u64,
9956                u64,
9957                <BN254::ScalarField as alloy::sol_types::SolType>::RustType,
9958            );
9959            #[cfg(test)]
9960            #[allow(dead_code, unreachable_patterns)]
9961            fn _type_assertion(
9962                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
9963            ) {
9964                match _t {
9965                    alloy_sol_types::private::AssertTypeEq::<
9966                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
9967                    >(_) => {}
9968                }
9969            }
9970            #[automatically_derived]
9971            #[doc(hidden)]
9972            impl ::core::convert::From<stateHistoryCommitmentsReturn>
9973            for UnderlyingRustTuple<'_> {
9974                fn from(value: stateHistoryCommitmentsReturn) -> Self {
9975                    (
9976                        value.l1BlockHeight,
9977                        value.l1BlockTimestamp,
9978                        value.hotShotBlockHeight,
9979                        value.hotShotBlockCommRoot,
9980                    )
9981                }
9982            }
9983            #[automatically_derived]
9984            #[doc(hidden)]
9985            impl ::core::convert::From<UnderlyingRustTuple<'_>>
9986            for stateHistoryCommitmentsReturn {
9987                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
9988                    Self {
9989                        l1BlockHeight: tuple.0,
9990                        l1BlockTimestamp: tuple.1,
9991                        hotShotBlockHeight: tuple.2,
9992                        hotShotBlockCommRoot: tuple.3,
9993                    }
9994                }
9995            }
9996        }
9997        impl stateHistoryCommitmentsReturn {
9998            fn _tokenize(
9999                &self,
10000            ) -> <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::ReturnToken<
10001                '_,
10002            > {
10003                (
10004                    <alloy::sol_types::sol_data::Uint<
10005                        64,
10006                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockHeight),
10007                    <alloy::sol_types::sol_data::Uint<
10008                        64,
10009                    > as alloy_sol_types::SolType>::tokenize(&self.l1BlockTimestamp),
10010                    <alloy::sol_types::sol_data::Uint<
10011                        64,
10012                    > as alloy_sol_types::SolType>::tokenize(&self.hotShotBlockHeight),
10013                    <BN254::ScalarField as alloy_sol_types::SolType>::tokenize(
10014                        &self.hotShotBlockCommRoot,
10015                    ),
10016                )
10017            }
10018        }
10019        #[automatically_derived]
10020        impl alloy_sol_types::SolCall for stateHistoryCommitmentsCall {
10021            type Parameters<'a> = (alloy::sol_types::sol_data::Uint<256>,);
10022            type Token<'a> = <Self::Parameters<
10023                'a,
10024            > as alloy_sol_types::SolType>::Token<'a>;
10025            type Return = stateHistoryCommitmentsReturn;
10026            type ReturnTuple<'a> = (
10027                alloy::sol_types::sol_data::Uint<64>,
10028                alloy::sol_types::sol_data::Uint<64>,
10029                alloy::sol_types::sol_data::Uint<64>,
10030                BN254::ScalarField,
10031            );
10032            type ReturnToken<'a> = <Self::ReturnTuple<
10033                'a,
10034            > as alloy_sol_types::SolType>::Token<'a>;
10035            const SIGNATURE: &'static str = "stateHistoryCommitments(uint256)";
10036            const SELECTOR: [u8; 4] = [2u8, 181u8, 146u8, 243u8];
10037            #[inline]
10038            fn new<'a>(
10039                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10040            ) -> Self {
10041                tuple.into()
10042            }
10043            #[inline]
10044            fn tokenize(&self) -> Self::Token<'_> {
10045                (
10046                    <alloy::sol_types::sol_data::Uint<
10047                        256,
10048                    > as alloy_sol_types::SolType>::tokenize(&self.0),
10049                )
10050            }
10051            #[inline]
10052            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10053                stateHistoryCommitmentsReturn::_tokenize(ret)
10054            }
10055            #[inline]
10056            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10057                <Self::ReturnTuple<
10058                    '_,
10059                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10060                    .map(Into::into)
10061            }
10062            #[inline]
10063            fn abi_decode_returns_validate(
10064                data: &[u8],
10065            ) -> alloy_sol_types::Result<Self::Return> {
10066                <Self::ReturnTuple<
10067                    '_,
10068                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10069                    .map(Into::into)
10070            }
10071        }
10072    };
10073    #[derive(serde::Serialize, serde::Deserialize)]
10074    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10075    /**Function with signature `stateHistoryFirstIndex()` and selector `0x2f79889d`.
10076```solidity
10077function stateHistoryFirstIndex() external view returns (uint64);
10078```*/
10079    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10080    #[derive(Clone)]
10081    pub struct stateHistoryFirstIndexCall;
10082    #[derive(serde::Serialize, serde::Deserialize)]
10083    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10084    ///Container type for the return parameters of the [`stateHistoryFirstIndex()`](stateHistoryFirstIndexCall) function.
10085    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10086    #[derive(Clone)]
10087    pub struct stateHistoryFirstIndexReturn {
10088        #[allow(missing_docs)]
10089        pub _0: u64,
10090    }
10091    #[allow(
10092        non_camel_case_types,
10093        non_snake_case,
10094        clippy::pub_underscore_fields,
10095        clippy::style
10096    )]
10097    const _: () = {
10098        use alloy::sol_types as alloy_sol_types;
10099        {
10100            #[doc(hidden)]
10101            type UnderlyingSolTuple<'a> = ();
10102            #[doc(hidden)]
10103            type UnderlyingRustTuple<'a> = ();
10104            #[cfg(test)]
10105            #[allow(dead_code, unreachable_patterns)]
10106            fn _type_assertion(
10107                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10108            ) {
10109                match _t {
10110                    alloy_sol_types::private::AssertTypeEq::<
10111                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10112                    >(_) => {}
10113                }
10114            }
10115            #[automatically_derived]
10116            #[doc(hidden)]
10117            impl ::core::convert::From<stateHistoryFirstIndexCall>
10118            for UnderlyingRustTuple<'_> {
10119                fn from(value: stateHistoryFirstIndexCall) -> Self {
10120                    ()
10121                }
10122            }
10123            #[automatically_derived]
10124            #[doc(hidden)]
10125            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10126            for stateHistoryFirstIndexCall {
10127                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10128                    Self
10129                }
10130            }
10131        }
10132        {
10133            #[doc(hidden)]
10134            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10135            #[doc(hidden)]
10136            type UnderlyingRustTuple<'a> = (u64,);
10137            #[cfg(test)]
10138            #[allow(dead_code, unreachable_patterns)]
10139            fn _type_assertion(
10140                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10141            ) {
10142                match _t {
10143                    alloy_sol_types::private::AssertTypeEq::<
10144                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10145                    >(_) => {}
10146                }
10147            }
10148            #[automatically_derived]
10149            #[doc(hidden)]
10150            impl ::core::convert::From<stateHistoryFirstIndexReturn>
10151            for UnderlyingRustTuple<'_> {
10152                fn from(value: stateHistoryFirstIndexReturn) -> Self {
10153                    (value._0,)
10154                }
10155            }
10156            #[automatically_derived]
10157            #[doc(hidden)]
10158            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10159            for stateHistoryFirstIndexReturn {
10160                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10161                    Self { _0: tuple.0 }
10162                }
10163            }
10164        }
10165        #[automatically_derived]
10166        impl alloy_sol_types::SolCall for stateHistoryFirstIndexCall {
10167            type Parameters<'a> = ();
10168            type Token<'a> = <Self::Parameters<
10169                'a,
10170            > as alloy_sol_types::SolType>::Token<'a>;
10171            type Return = u64;
10172            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<64>,);
10173            type ReturnToken<'a> = <Self::ReturnTuple<
10174                'a,
10175            > as alloy_sol_types::SolType>::Token<'a>;
10176            const SIGNATURE: &'static str = "stateHistoryFirstIndex()";
10177            const SELECTOR: [u8; 4] = [47u8, 121u8, 136u8, 157u8];
10178            #[inline]
10179            fn new<'a>(
10180                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10181            ) -> Self {
10182                tuple.into()
10183            }
10184            #[inline]
10185            fn tokenize(&self) -> Self::Token<'_> {
10186                ()
10187            }
10188            #[inline]
10189            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10190                (
10191                    <alloy::sol_types::sol_data::Uint<
10192                        64,
10193                    > as alloy_sol_types::SolType>::tokenize(ret),
10194                )
10195            }
10196            #[inline]
10197            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10198                <Self::ReturnTuple<
10199                    '_,
10200                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10201                    .map(|r| {
10202                        let r: stateHistoryFirstIndexReturn = r.into();
10203                        r._0
10204                    })
10205            }
10206            #[inline]
10207            fn abi_decode_returns_validate(
10208                data: &[u8],
10209            ) -> alloy_sol_types::Result<Self::Return> {
10210                <Self::ReturnTuple<
10211                    '_,
10212                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10213                    .map(|r| {
10214                        let r: stateHistoryFirstIndexReturn = r.into();
10215                        r._0
10216                    })
10217            }
10218        }
10219    };
10220    #[derive(serde::Serialize, serde::Deserialize)]
10221    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10222    /**Function with signature `stateHistoryRetentionPeriod()` and selector `0xc23b9e9e`.
10223```solidity
10224function stateHistoryRetentionPeriod() external view returns (uint32);
10225```*/
10226    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10227    #[derive(Clone)]
10228    pub struct stateHistoryRetentionPeriodCall;
10229    #[derive(serde::Serialize, serde::Deserialize)]
10230    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10231    ///Container type for the return parameters of the [`stateHistoryRetentionPeriod()`](stateHistoryRetentionPeriodCall) function.
10232    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10233    #[derive(Clone)]
10234    pub struct stateHistoryRetentionPeriodReturn {
10235        #[allow(missing_docs)]
10236        pub _0: u32,
10237    }
10238    #[allow(
10239        non_camel_case_types,
10240        non_snake_case,
10241        clippy::pub_underscore_fields,
10242        clippy::style
10243    )]
10244    const _: () = {
10245        use alloy::sol_types as alloy_sol_types;
10246        {
10247            #[doc(hidden)]
10248            type UnderlyingSolTuple<'a> = ();
10249            #[doc(hidden)]
10250            type UnderlyingRustTuple<'a> = ();
10251            #[cfg(test)]
10252            #[allow(dead_code, unreachable_patterns)]
10253            fn _type_assertion(
10254                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10255            ) {
10256                match _t {
10257                    alloy_sol_types::private::AssertTypeEq::<
10258                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10259                    >(_) => {}
10260                }
10261            }
10262            #[automatically_derived]
10263            #[doc(hidden)]
10264            impl ::core::convert::From<stateHistoryRetentionPeriodCall>
10265            for UnderlyingRustTuple<'_> {
10266                fn from(value: stateHistoryRetentionPeriodCall) -> Self {
10267                    ()
10268                }
10269            }
10270            #[automatically_derived]
10271            #[doc(hidden)]
10272            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10273            for stateHistoryRetentionPeriodCall {
10274                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10275                    Self
10276                }
10277            }
10278        }
10279        {
10280            #[doc(hidden)]
10281            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10282            #[doc(hidden)]
10283            type UnderlyingRustTuple<'a> = (u32,);
10284            #[cfg(test)]
10285            #[allow(dead_code, unreachable_patterns)]
10286            fn _type_assertion(
10287                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10288            ) {
10289                match _t {
10290                    alloy_sol_types::private::AssertTypeEq::<
10291                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10292                    >(_) => {}
10293                }
10294            }
10295            #[automatically_derived]
10296            #[doc(hidden)]
10297            impl ::core::convert::From<stateHistoryRetentionPeriodReturn>
10298            for UnderlyingRustTuple<'_> {
10299                fn from(value: stateHistoryRetentionPeriodReturn) -> Self {
10300                    (value._0,)
10301                }
10302            }
10303            #[automatically_derived]
10304            #[doc(hidden)]
10305            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10306            for stateHistoryRetentionPeriodReturn {
10307                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10308                    Self { _0: tuple.0 }
10309                }
10310            }
10311        }
10312        #[automatically_derived]
10313        impl alloy_sol_types::SolCall for stateHistoryRetentionPeriodCall {
10314            type Parameters<'a> = ();
10315            type Token<'a> = <Self::Parameters<
10316                'a,
10317            > as alloy_sol_types::SolType>::Token<'a>;
10318            type Return = u32;
10319            type ReturnTuple<'a> = (alloy::sol_types::sol_data::Uint<32>,);
10320            type ReturnToken<'a> = <Self::ReturnTuple<
10321                'a,
10322            > as alloy_sol_types::SolType>::Token<'a>;
10323            const SIGNATURE: &'static str = "stateHistoryRetentionPeriod()";
10324            const SELECTOR: [u8; 4] = [194u8, 59u8, 158u8, 158u8];
10325            #[inline]
10326            fn new<'a>(
10327                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10328            ) -> Self {
10329                tuple.into()
10330            }
10331            #[inline]
10332            fn tokenize(&self) -> Self::Token<'_> {
10333                ()
10334            }
10335            #[inline]
10336            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10337                (
10338                    <alloy::sol_types::sol_data::Uint<
10339                        32,
10340                    > as alloy_sol_types::SolType>::tokenize(ret),
10341                )
10342            }
10343            #[inline]
10344            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10345                <Self::ReturnTuple<
10346                    '_,
10347                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10348                    .map(|r| {
10349                        let r: stateHistoryRetentionPeriodReturn = r.into();
10350                        r._0
10351                    })
10352            }
10353            #[inline]
10354            fn abi_decode_returns_validate(
10355                data: &[u8],
10356            ) -> alloy_sol_types::Result<Self::Return> {
10357                <Self::ReturnTuple<
10358                    '_,
10359                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10360                    .map(|r| {
10361                        let r: stateHistoryRetentionPeriodReturn = r.into();
10362                        r._0
10363                    })
10364            }
10365        }
10366    };
10367    #[derive(serde::Serialize, serde::Deserialize)]
10368    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10369    /**Function with signature `transferOwnership(address)` and selector `0xf2fde38b`.
10370```solidity
10371function transferOwnership(address newOwner) external;
10372```*/
10373    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10374    #[derive(Clone)]
10375    pub struct transferOwnershipCall {
10376        #[allow(missing_docs)]
10377        pub newOwner: alloy::sol_types::private::Address,
10378    }
10379    ///Container type for the return parameters of the [`transferOwnership(address)`](transferOwnershipCall) function.
10380    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10381    #[derive(Clone)]
10382    pub struct transferOwnershipReturn {}
10383    #[allow(
10384        non_camel_case_types,
10385        non_snake_case,
10386        clippy::pub_underscore_fields,
10387        clippy::style
10388    )]
10389    const _: () = {
10390        use alloy::sol_types as alloy_sol_types;
10391        {
10392            #[doc(hidden)]
10393            type UnderlyingSolTuple<'a> = (alloy::sol_types::sol_data::Address,);
10394            #[doc(hidden)]
10395            type UnderlyingRustTuple<'a> = (alloy::sol_types::private::Address,);
10396            #[cfg(test)]
10397            #[allow(dead_code, unreachable_patterns)]
10398            fn _type_assertion(
10399                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10400            ) {
10401                match _t {
10402                    alloy_sol_types::private::AssertTypeEq::<
10403                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10404                    >(_) => {}
10405                }
10406            }
10407            #[automatically_derived]
10408            #[doc(hidden)]
10409            impl ::core::convert::From<transferOwnershipCall>
10410            for UnderlyingRustTuple<'_> {
10411                fn from(value: transferOwnershipCall) -> Self {
10412                    (value.newOwner,)
10413                }
10414            }
10415            #[automatically_derived]
10416            #[doc(hidden)]
10417            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10418            for transferOwnershipCall {
10419                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10420                    Self { newOwner: tuple.0 }
10421                }
10422            }
10423        }
10424        {
10425            #[doc(hidden)]
10426            type UnderlyingSolTuple<'a> = ();
10427            #[doc(hidden)]
10428            type UnderlyingRustTuple<'a> = ();
10429            #[cfg(test)]
10430            #[allow(dead_code, unreachable_patterns)]
10431            fn _type_assertion(
10432                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10433            ) {
10434                match _t {
10435                    alloy_sol_types::private::AssertTypeEq::<
10436                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10437                    >(_) => {}
10438                }
10439            }
10440            #[automatically_derived]
10441            #[doc(hidden)]
10442            impl ::core::convert::From<transferOwnershipReturn>
10443            for UnderlyingRustTuple<'_> {
10444                fn from(value: transferOwnershipReturn) -> Self {
10445                    ()
10446                }
10447            }
10448            #[automatically_derived]
10449            #[doc(hidden)]
10450            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10451            for transferOwnershipReturn {
10452                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10453                    Self {}
10454                }
10455            }
10456        }
10457        impl transferOwnershipReturn {
10458            fn _tokenize(
10459                &self,
10460            ) -> <transferOwnershipCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10461                ()
10462            }
10463        }
10464        #[automatically_derived]
10465        impl alloy_sol_types::SolCall for transferOwnershipCall {
10466            type Parameters<'a> = (alloy::sol_types::sol_data::Address,);
10467            type Token<'a> = <Self::Parameters<
10468                'a,
10469            > as alloy_sol_types::SolType>::Token<'a>;
10470            type Return = transferOwnershipReturn;
10471            type ReturnTuple<'a> = ();
10472            type ReturnToken<'a> = <Self::ReturnTuple<
10473                'a,
10474            > as alloy_sol_types::SolType>::Token<'a>;
10475            const SIGNATURE: &'static str = "transferOwnership(address)";
10476            const SELECTOR: [u8; 4] = [242u8, 253u8, 227u8, 139u8];
10477            #[inline]
10478            fn new<'a>(
10479                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10480            ) -> Self {
10481                tuple.into()
10482            }
10483            #[inline]
10484            fn tokenize(&self) -> Self::Token<'_> {
10485                (
10486                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10487                        &self.newOwner,
10488                    ),
10489                )
10490            }
10491            #[inline]
10492            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10493                transferOwnershipReturn::_tokenize(ret)
10494            }
10495            #[inline]
10496            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10497                <Self::ReturnTuple<
10498                    '_,
10499                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10500                    .map(Into::into)
10501            }
10502            #[inline]
10503            fn abi_decode_returns_validate(
10504                data: &[u8],
10505            ) -> alloy_sol_types::Result<Self::Return> {
10506                <Self::ReturnTuple<
10507                    '_,
10508                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10509                    .map(Into::into)
10510            }
10511        }
10512    };
10513    #[derive(serde::Serialize, serde::Deserialize)]
10514    #[derive(Default, Debug, PartialEq, Eq, Hash)]
10515    /**Function with signature `upgradeToAndCall(address,bytes)` and selector `0x4f1ef286`.
10516```solidity
10517function upgradeToAndCall(address newImplementation, bytes memory data) external payable;
10518```*/
10519    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10520    #[derive(Clone)]
10521    pub struct upgradeToAndCallCall {
10522        #[allow(missing_docs)]
10523        pub newImplementation: alloy::sol_types::private::Address,
10524        #[allow(missing_docs)]
10525        pub data: alloy::sol_types::private::Bytes,
10526    }
10527    ///Container type for the return parameters of the [`upgradeToAndCall(address,bytes)`](upgradeToAndCallCall) function.
10528    #[allow(non_camel_case_types, non_snake_case, clippy::pub_underscore_fields)]
10529    #[derive(Clone)]
10530    pub struct upgradeToAndCallReturn {}
10531    #[allow(
10532        non_camel_case_types,
10533        non_snake_case,
10534        clippy::pub_underscore_fields,
10535        clippy::style
10536    )]
10537    const _: () = {
10538        use alloy::sol_types as alloy_sol_types;
10539        {
10540            #[doc(hidden)]
10541            type UnderlyingSolTuple<'a> = (
10542                alloy::sol_types::sol_data::Address,
10543                alloy::sol_types::sol_data::Bytes,
10544            );
10545            #[doc(hidden)]
10546            type UnderlyingRustTuple<'a> = (
10547                alloy::sol_types::private::Address,
10548                alloy::sol_types::private::Bytes,
10549            );
10550            #[cfg(test)]
10551            #[allow(dead_code, unreachable_patterns)]
10552            fn _type_assertion(
10553                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10554            ) {
10555                match _t {
10556                    alloy_sol_types::private::AssertTypeEq::<
10557                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10558                    >(_) => {}
10559                }
10560            }
10561            #[automatically_derived]
10562            #[doc(hidden)]
10563            impl ::core::convert::From<upgradeToAndCallCall>
10564            for UnderlyingRustTuple<'_> {
10565                fn from(value: upgradeToAndCallCall) -> Self {
10566                    (value.newImplementation, value.data)
10567                }
10568            }
10569            #[automatically_derived]
10570            #[doc(hidden)]
10571            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10572            for upgradeToAndCallCall {
10573                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10574                    Self {
10575                        newImplementation: tuple.0,
10576                        data: tuple.1,
10577                    }
10578                }
10579            }
10580        }
10581        {
10582            #[doc(hidden)]
10583            type UnderlyingSolTuple<'a> = ();
10584            #[doc(hidden)]
10585            type UnderlyingRustTuple<'a> = ();
10586            #[cfg(test)]
10587            #[allow(dead_code, unreachable_patterns)]
10588            fn _type_assertion(
10589                _t: alloy_sol_types::private::AssertTypeEq<UnderlyingRustTuple>,
10590            ) {
10591                match _t {
10592                    alloy_sol_types::private::AssertTypeEq::<
10593                        <UnderlyingSolTuple as alloy_sol_types::SolType>::RustType,
10594                    >(_) => {}
10595                }
10596            }
10597            #[automatically_derived]
10598            #[doc(hidden)]
10599            impl ::core::convert::From<upgradeToAndCallReturn>
10600            for UnderlyingRustTuple<'_> {
10601                fn from(value: upgradeToAndCallReturn) -> Self {
10602                    ()
10603                }
10604            }
10605            #[automatically_derived]
10606            #[doc(hidden)]
10607            impl ::core::convert::From<UnderlyingRustTuple<'_>>
10608            for upgradeToAndCallReturn {
10609                fn from(tuple: UnderlyingRustTuple<'_>) -> Self {
10610                    Self {}
10611                }
10612            }
10613        }
10614        impl upgradeToAndCallReturn {
10615            fn _tokenize(
10616                &self,
10617            ) -> <upgradeToAndCallCall as alloy_sol_types::SolCall>::ReturnToken<'_> {
10618                ()
10619            }
10620        }
10621        #[automatically_derived]
10622        impl alloy_sol_types::SolCall for upgradeToAndCallCall {
10623            type Parameters<'a> = (
10624                alloy::sol_types::sol_data::Address,
10625                alloy::sol_types::sol_data::Bytes,
10626            );
10627            type Token<'a> = <Self::Parameters<
10628                'a,
10629            > as alloy_sol_types::SolType>::Token<'a>;
10630            type Return = upgradeToAndCallReturn;
10631            type ReturnTuple<'a> = ();
10632            type ReturnToken<'a> = <Self::ReturnTuple<
10633                'a,
10634            > as alloy_sol_types::SolType>::Token<'a>;
10635            const SIGNATURE: &'static str = "upgradeToAndCall(address,bytes)";
10636            const SELECTOR: [u8; 4] = [79u8, 30u8, 242u8, 134u8];
10637            #[inline]
10638            fn new<'a>(
10639                tuple: <Self::Parameters<'a> as alloy_sol_types::SolType>::RustType,
10640            ) -> Self {
10641                tuple.into()
10642            }
10643            #[inline]
10644            fn tokenize(&self) -> Self::Token<'_> {
10645                (
10646                    <alloy::sol_types::sol_data::Address as alloy_sol_types::SolType>::tokenize(
10647                        &self.newImplementation,
10648                    ),
10649                    <alloy::sol_types::sol_data::Bytes as alloy_sol_types::SolType>::tokenize(
10650                        &self.data,
10651                    ),
10652                )
10653            }
10654            #[inline]
10655            fn tokenize_returns(ret: &Self::Return) -> Self::ReturnToken<'_> {
10656                upgradeToAndCallReturn::_tokenize(ret)
10657            }
10658            #[inline]
10659            fn abi_decode_returns(data: &[u8]) -> alloy_sol_types::Result<Self::Return> {
10660                <Self::ReturnTuple<
10661                    '_,
10662                > as alloy_sol_types::SolType>::abi_decode_sequence(data)
10663                    .map(Into::into)
10664            }
10665            #[inline]
10666            fn abi_decode_returns_validate(
10667                data: &[u8],
10668            ) -> alloy_sol_types::Result<Self::Return> {
10669                <Self::ReturnTuple<
10670                    '_,
10671                > as alloy_sol_types::SolType>::abi_decode_sequence_validate(data)
10672                    .map(Into::into)
10673            }
10674        }
10675    };
10676    ///Container for all the [`LightClient`](self) function calls.
10677    #[derive(serde::Serialize, serde::Deserialize)]
10678    #[derive()]
10679    pub enum LightClientCalls {
10680        #[allow(missing_docs)]
10681        UPGRADE_INTERFACE_VERSION(UPGRADE_INTERFACE_VERSIONCall),
10682        #[allow(missing_docs)]
10683        _getVk(_getVkCall),
10684        #[allow(missing_docs)]
10685        currentBlockNumber(currentBlockNumberCall),
10686        #[allow(missing_docs)]
10687        disablePermissionedProverMode(disablePermissionedProverModeCall),
10688        #[allow(missing_docs)]
10689        finalizedState(finalizedStateCall),
10690        #[allow(missing_docs)]
10691        genesisStakeTableState(genesisStakeTableStateCall),
10692        #[allow(missing_docs)]
10693        genesisState(genesisStateCall),
10694        #[allow(missing_docs)]
10695        getHotShotCommitment(getHotShotCommitmentCall),
10696        #[allow(missing_docs)]
10697        getStateHistoryCount(getStateHistoryCountCall),
10698        #[allow(missing_docs)]
10699        getVersion(getVersionCall),
10700        #[allow(missing_docs)]
10701        initialize(initializeCall),
10702        #[allow(missing_docs)]
10703        isPermissionedProverEnabled(isPermissionedProverEnabledCall),
10704        #[allow(missing_docs)]
10705        lagOverEscapeHatchThreshold(lagOverEscapeHatchThresholdCall),
10706        #[allow(missing_docs)]
10707        newFinalizedState(newFinalizedStateCall),
10708        #[allow(missing_docs)]
10709        owner(ownerCall),
10710        #[allow(missing_docs)]
10711        permissionedProver(permissionedProverCall),
10712        #[allow(missing_docs)]
10713        proxiableUUID(proxiableUUIDCall),
10714        #[allow(missing_docs)]
10715        renounceOwnership(renounceOwnershipCall),
10716        #[allow(missing_docs)]
10717        setPermissionedProver(setPermissionedProverCall),
10718        #[allow(missing_docs)]
10719        setstateHistoryRetentionPeriod(setstateHistoryRetentionPeriodCall),
10720        #[allow(missing_docs)]
10721        stateHistoryCommitments(stateHistoryCommitmentsCall),
10722        #[allow(missing_docs)]
10723        stateHistoryFirstIndex(stateHistoryFirstIndexCall),
10724        #[allow(missing_docs)]
10725        stateHistoryRetentionPeriod(stateHistoryRetentionPeriodCall),
10726        #[allow(missing_docs)]
10727        transferOwnership(transferOwnershipCall),
10728        #[allow(missing_docs)]
10729        upgradeToAndCall(upgradeToAndCallCall),
10730    }
10731    #[automatically_derived]
10732    impl LightClientCalls {
10733        /// All the selectors of this enum.
10734        ///
10735        /// Note that the selectors might not be in the same order as the variants.
10736        /// No guarantees are made about the order of the selectors.
10737        ///
10738        /// Prefer using `SolInterface` methods instead.
10739        pub const SELECTORS: &'static [[u8; 4usize]] = &[
10740            [1u8, 63u8, 165u8, 252u8],
10741            [2u8, 181u8, 146u8, 243u8],
10742            [13u8, 142u8, 110u8, 44u8],
10743            [18u8, 23u8, 60u8, 44u8],
10744            [32u8, 99u8, 212u8, 247u8],
10745            [47u8, 121u8, 136u8, 157u8],
10746            [49u8, 61u8, 247u8, 177u8],
10747            [55u8, 142u8, 194u8, 59u8],
10748            [66u8, 109u8, 49u8, 148u8],
10749            [79u8, 30u8, 242u8, 134u8],
10750            [82u8, 209u8, 144u8, 45u8],
10751            [105u8, 204u8, 106u8, 4u8],
10752            [113u8, 80u8, 24u8, 166u8],
10753            [130u8, 110u8, 65u8, 252u8],
10754            [133u8, 132u8, 210u8, 63u8],
10755            [141u8, 165u8, 203u8, 91u8],
10756            [150u8, 193u8, 202u8, 97u8],
10757            [155u8, 170u8, 60u8, 201u8],
10758            [159u8, 219u8, 84u8, 167u8],
10759            [173u8, 60u8, 177u8, 204u8],
10760            [194u8, 59u8, 158u8, 158u8],
10761            [210u8, 77u8, 147u8, 61u8],
10762            [224u8, 48u8, 51u8, 1u8],
10763            [242u8, 253u8, 227u8, 139u8],
10764            [249u8, 229u8, 13u8, 25u8],
10765        ];
10766    }
10767    #[automatically_derived]
10768    impl alloy_sol_types::SolInterface for LightClientCalls {
10769        const NAME: &'static str = "LightClientCalls";
10770        const MIN_DATA_LENGTH: usize = 0usize;
10771        const COUNT: usize = 25usize;
10772        #[inline]
10773        fn selector(&self) -> [u8; 4] {
10774            match self {
10775                Self::UPGRADE_INTERFACE_VERSION(_) => {
10776                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::SELECTOR
10777                }
10778                Self::_getVk(_) => <_getVkCall as alloy_sol_types::SolCall>::SELECTOR,
10779                Self::currentBlockNumber(_) => {
10780                    <currentBlockNumberCall as alloy_sol_types::SolCall>::SELECTOR
10781                }
10782                Self::disablePermissionedProverMode(_) => {
10783                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::SELECTOR
10784                }
10785                Self::finalizedState(_) => {
10786                    <finalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10787                }
10788                Self::genesisStakeTableState(_) => {
10789                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::SELECTOR
10790                }
10791                Self::genesisState(_) => {
10792                    <genesisStateCall as alloy_sol_types::SolCall>::SELECTOR
10793                }
10794                Self::getHotShotCommitment(_) => {
10795                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::SELECTOR
10796                }
10797                Self::getStateHistoryCount(_) => {
10798                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::SELECTOR
10799                }
10800                Self::getVersion(_) => {
10801                    <getVersionCall as alloy_sol_types::SolCall>::SELECTOR
10802                }
10803                Self::initialize(_) => {
10804                    <initializeCall as alloy_sol_types::SolCall>::SELECTOR
10805                }
10806                Self::isPermissionedProverEnabled(_) => {
10807                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::SELECTOR
10808                }
10809                Self::lagOverEscapeHatchThreshold(_) => {
10810                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::SELECTOR
10811                }
10812                Self::newFinalizedState(_) => {
10813                    <newFinalizedStateCall as alloy_sol_types::SolCall>::SELECTOR
10814                }
10815                Self::owner(_) => <ownerCall as alloy_sol_types::SolCall>::SELECTOR,
10816                Self::permissionedProver(_) => {
10817                    <permissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10818                }
10819                Self::proxiableUUID(_) => {
10820                    <proxiableUUIDCall as alloy_sol_types::SolCall>::SELECTOR
10821                }
10822                Self::renounceOwnership(_) => {
10823                    <renounceOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10824                }
10825                Self::setPermissionedProver(_) => {
10826                    <setPermissionedProverCall as alloy_sol_types::SolCall>::SELECTOR
10827                }
10828                Self::setstateHistoryRetentionPeriod(_) => {
10829                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10830                }
10831                Self::stateHistoryCommitments(_) => {
10832                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::SELECTOR
10833                }
10834                Self::stateHistoryFirstIndex(_) => {
10835                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::SELECTOR
10836                }
10837                Self::stateHistoryRetentionPeriod(_) => {
10838                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::SELECTOR
10839                }
10840                Self::transferOwnership(_) => {
10841                    <transferOwnershipCall as alloy_sol_types::SolCall>::SELECTOR
10842                }
10843                Self::upgradeToAndCall(_) => {
10844                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::SELECTOR
10845                }
10846            }
10847        }
10848        #[inline]
10849        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
10850            Self::SELECTORS.get(i).copied()
10851        }
10852        #[inline]
10853        fn valid_selector(selector: [u8; 4]) -> bool {
10854            Self::SELECTORS.binary_search(&selector).is_ok()
10855        }
10856        #[inline]
10857        #[allow(non_snake_case)]
10858        fn abi_decode_raw(
10859            selector: [u8; 4],
10860            data: &[u8],
10861        ) -> alloy_sol_types::Result<Self> {
10862            static DECODE_SHIMS: &[fn(
10863                &[u8],
10864            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
10865                {
10866                    fn setPermissionedProver(
10867                        data: &[u8],
10868                    ) -> alloy_sol_types::Result<LightClientCalls> {
10869                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10870                                data,
10871                            )
10872                            .map(LightClientCalls::setPermissionedProver)
10873                    }
10874                    setPermissionedProver
10875                },
10876                {
10877                    fn stateHistoryCommitments(
10878                        data: &[u8],
10879                    ) -> alloy_sol_types::Result<LightClientCalls> {
10880                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw(
10881                                data,
10882                            )
10883                            .map(LightClientCalls::stateHistoryCommitments)
10884                    }
10885                    stateHistoryCommitments
10886                },
10887                {
10888                    fn getVersion(
10889                        data: &[u8],
10890                    ) -> alloy_sol_types::Result<LightClientCalls> {
10891                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw(
10892                                data,
10893                            )
10894                            .map(LightClientCalls::getVersion)
10895                    }
10896                    getVersion
10897                },
10898                {
10899                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
10900                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
10901                            .map(LightClientCalls::_getVk)
10902                    }
10903                    _getVk
10904                },
10905                {
10906                    fn newFinalizedState(
10907                        data: &[u8],
10908                    ) -> alloy_sol_types::Result<LightClientCalls> {
10909                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10910                                data,
10911                            )
10912                            .map(LightClientCalls::newFinalizedState)
10913                    }
10914                    newFinalizedState
10915                },
10916                {
10917                    fn stateHistoryFirstIndex(
10918                        data: &[u8],
10919                    ) -> alloy_sol_types::Result<LightClientCalls> {
10920                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw(
10921                                data,
10922                            )
10923                            .map(LightClientCalls::stateHistoryFirstIndex)
10924                    }
10925                    stateHistoryFirstIndex
10926                },
10927                {
10928                    fn permissionedProver(
10929                        data: &[u8],
10930                    ) -> alloy_sol_types::Result<LightClientCalls> {
10931                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw(
10932                                data,
10933                            )
10934                            .map(LightClientCalls::permissionedProver)
10935                    }
10936                    permissionedProver
10937                },
10938                {
10939                    fn currentBlockNumber(
10940                        data: &[u8],
10941                    ) -> alloy_sol_types::Result<LightClientCalls> {
10942                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw(
10943                                data,
10944                            )
10945                            .map(LightClientCalls::currentBlockNumber)
10946                    }
10947                    currentBlockNumber
10948                },
10949                {
10950                    fn genesisStakeTableState(
10951                        data: &[u8],
10952                    ) -> alloy_sol_types::Result<LightClientCalls> {
10953                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
10954                                data,
10955                            )
10956                            .map(LightClientCalls::genesisStakeTableState)
10957                    }
10958                    genesisStakeTableState
10959                },
10960                {
10961                    fn upgradeToAndCall(
10962                        data: &[u8],
10963                    ) -> alloy_sol_types::Result<LightClientCalls> {
10964                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw(
10965                                data,
10966                            )
10967                            .map(LightClientCalls::upgradeToAndCall)
10968                    }
10969                    upgradeToAndCall
10970                },
10971                {
10972                    fn proxiableUUID(
10973                        data: &[u8],
10974                    ) -> alloy_sol_types::Result<LightClientCalls> {
10975                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw(
10976                                data,
10977                            )
10978                            .map(LightClientCalls::proxiableUUID)
10979                    }
10980                    proxiableUUID
10981                },
10982                {
10983                    fn disablePermissionedProverMode(
10984                        data: &[u8],
10985                    ) -> alloy_sol_types::Result<LightClientCalls> {
10986                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw(
10987                                data,
10988                            )
10989                            .map(LightClientCalls::disablePermissionedProverMode)
10990                    }
10991                    disablePermissionedProverMode
10992                },
10993                {
10994                    fn renounceOwnership(
10995                        data: &[u8],
10996                    ) -> alloy_sol_types::Result<LightClientCalls> {
10997                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
10998                                data,
10999                            )
11000                            .map(LightClientCalls::renounceOwnership)
11001                    }
11002                    renounceOwnership
11003                },
11004                {
11005                    fn isPermissionedProverEnabled(
11006                        data: &[u8],
11007                    ) -> alloy_sol_types::Result<LightClientCalls> {
11008                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw(
11009                                data,
11010                            )
11011                            .map(LightClientCalls::isPermissionedProverEnabled)
11012                    }
11013                    isPermissionedProverEnabled
11014                },
11015                {
11016                    fn getHotShotCommitment(
11017                        data: &[u8],
11018                    ) -> alloy_sol_types::Result<LightClientCalls> {
11019                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw(
11020                                data,
11021                            )
11022                            .map(LightClientCalls::getHotShotCommitment)
11023                    }
11024                    getHotShotCommitment
11025                },
11026                {
11027                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11028                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw(data)
11029                            .map(LightClientCalls::owner)
11030                    }
11031                    owner
11032                },
11033                {
11034                    fn setstateHistoryRetentionPeriod(
11035                        data: &[u8],
11036                    ) -> alloy_sol_types::Result<LightClientCalls> {
11037                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11038                                data,
11039                            )
11040                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11041                    }
11042                    setstateHistoryRetentionPeriod
11043                },
11044                {
11045                    fn initialize(
11046                        data: &[u8],
11047                    ) -> alloy_sol_types::Result<LightClientCalls> {
11048                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw(
11049                                data,
11050                            )
11051                            .map(LightClientCalls::initialize)
11052                    }
11053                    initialize
11054                },
11055                {
11056                    fn finalizedState(
11057                        data: &[u8],
11058                    ) -> alloy_sol_types::Result<LightClientCalls> {
11059                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11060                                data,
11061                            )
11062                            .map(LightClientCalls::finalizedState)
11063                    }
11064                    finalizedState
11065                },
11066                {
11067                    fn UPGRADE_INTERFACE_VERSION(
11068                        data: &[u8],
11069                    ) -> alloy_sol_types::Result<LightClientCalls> {
11070                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw(
11071                                data,
11072                            )
11073                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11074                    }
11075                    UPGRADE_INTERFACE_VERSION
11076                },
11077                {
11078                    fn stateHistoryRetentionPeriod(
11079                        data: &[u8],
11080                    ) -> alloy_sol_types::Result<LightClientCalls> {
11081                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw(
11082                                data,
11083                            )
11084                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11085                    }
11086                    stateHistoryRetentionPeriod
11087                },
11088                {
11089                    fn genesisState(
11090                        data: &[u8],
11091                    ) -> alloy_sol_types::Result<LightClientCalls> {
11092                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw(
11093                                data,
11094                            )
11095                            .map(LightClientCalls::genesisState)
11096                    }
11097                    genesisState
11098                },
11099                {
11100                    fn lagOverEscapeHatchThreshold(
11101                        data: &[u8],
11102                    ) -> alloy_sol_types::Result<LightClientCalls> {
11103                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw(
11104                                data,
11105                            )
11106                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11107                    }
11108                    lagOverEscapeHatchThreshold
11109                },
11110                {
11111                    fn transferOwnership(
11112                        data: &[u8],
11113                    ) -> alloy_sol_types::Result<LightClientCalls> {
11114                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw(
11115                                data,
11116                            )
11117                            .map(LightClientCalls::transferOwnership)
11118                    }
11119                    transferOwnership
11120                },
11121                {
11122                    fn getStateHistoryCount(
11123                        data: &[u8],
11124                    ) -> alloy_sol_types::Result<LightClientCalls> {
11125                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw(
11126                                data,
11127                            )
11128                            .map(LightClientCalls::getStateHistoryCount)
11129                    }
11130                    getStateHistoryCount
11131                },
11132            ];
11133            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11134                return Err(
11135                    alloy_sol_types::Error::unknown_selector(
11136                        <Self as alloy_sol_types::SolInterface>::NAME,
11137                        selector,
11138                    ),
11139                );
11140            };
11141            DECODE_SHIMS[idx](data)
11142        }
11143        #[inline]
11144        #[allow(non_snake_case)]
11145        fn abi_decode_raw_validate(
11146            selector: [u8; 4],
11147            data: &[u8],
11148        ) -> alloy_sol_types::Result<Self> {
11149            static DECODE_VALIDATE_SHIMS: &[fn(
11150                &[u8],
11151            ) -> alloy_sol_types::Result<LightClientCalls>] = &[
11152                {
11153                    fn setPermissionedProver(
11154                        data: &[u8],
11155                    ) -> alloy_sol_types::Result<LightClientCalls> {
11156                        <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11157                                data,
11158                            )
11159                            .map(LightClientCalls::setPermissionedProver)
11160                    }
11161                    setPermissionedProver
11162                },
11163                {
11164                    fn stateHistoryCommitments(
11165                        data: &[u8],
11166                    ) -> alloy_sol_types::Result<LightClientCalls> {
11167                        <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11168                                data,
11169                            )
11170                            .map(LightClientCalls::stateHistoryCommitments)
11171                    }
11172                    stateHistoryCommitments
11173                },
11174                {
11175                    fn getVersion(
11176                        data: &[u8],
11177                    ) -> alloy_sol_types::Result<LightClientCalls> {
11178                        <getVersionCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11179                                data,
11180                            )
11181                            .map(LightClientCalls::getVersion)
11182                    }
11183                    getVersion
11184                },
11185                {
11186                    fn _getVk(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11187                        <_getVkCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11188                                data,
11189                            )
11190                            .map(LightClientCalls::_getVk)
11191                    }
11192                    _getVk
11193                },
11194                {
11195                    fn newFinalizedState(
11196                        data: &[u8],
11197                    ) -> alloy_sol_types::Result<LightClientCalls> {
11198                        <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11199                                data,
11200                            )
11201                            .map(LightClientCalls::newFinalizedState)
11202                    }
11203                    newFinalizedState
11204                },
11205                {
11206                    fn stateHistoryFirstIndex(
11207                        data: &[u8],
11208                    ) -> alloy_sol_types::Result<LightClientCalls> {
11209                        <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11210                                data,
11211                            )
11212                            .map(LightClientCalls::stateHistoryFirstIndex)
11213                    }
11214                    stateHistoryFirstIndex
11215                },
11216                {
11217                    fn permissionedProver(
11218                        data: &[u8],
11219                    ) -> alloy_sol_types::Result<LightClientCalls> {
11220                        <permissionedProverCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11221                                data,
11222                            )
11223                            .map(LightClientCalls::permissionedProver)
11224                    }
11225                    permissionedProver
11226                },
11227                {
11228                    fn currentBlockNumber(
11229                        data: &[u8],
11230                    ) -> alloy_sol_types::Result<LightClientCalls> {
11231                        <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11232                                data,
11233                            )
11234                            .map(LightClientCalls::currentBlockNumber)
11235                    }
11236                    currentBlockNumber
11237                },
11238                {
11239                    fn genesisStakeTableState(
11240                        data: &[u8],
11241                    ) -> alloy_sol_types::Result<LightClientCalls> {
11242                        <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11243                                data,
11244                            )
11245                            .map(LightClientCalls::genesisStakeTableState)
11246                    }
11247                    genesisStakeTableState
11248                },
11249                {
11250                    fn upgradeToAndCall(
11251                        data: &[u8],
11252                    ) -> alloy_sol_types::Result<LightClientCalls> {
11253                        <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11254                                data,
11255                            )
11256                            .map(LightClientCalls::upgradeToAndCall)
11257                    }
11258                    upgradeToAndCall
11259                },
11260                {
11261                    fn proxiableUUID(
11262                        data: &[u8],
11263                    ) -> alloy_sol_types::Result<LightClientCalls> {
11264                        <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11265                                data,
11266                            )
11267                            .map(LightClientCalls::proxiableUUID)
11268                    }
11269                    proxiableUUID
11270                },
11271                {
11272                    fn disablePermissionedProverMode(
11273                        data: &[u8],
11274                    ) -> alloy_sol_types::Result<LightClientCalls> {
11275                        <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11276                                data,
11277                            )
11278                            .map(LightClientCalls::disablePermissionedProverMode)
11279                    }
11280                    disablePermissionedProverMode
11281                },
11282                {
11283                    fn renounceOwnership(
11284                        data: &[u8],
11285                    ) -> alloy_sol_types::Result<LightClientCalls> {
11286                        <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11287                                data,
11288                            )
11289                            .map(LightClientCalls::renounceOwnership)
11290                    }
11291                    renounceOwnership
11292                },
11293                {
11294                    fn isPermissionedProverEnabled(
11295                        data: &[u8],
11296                    ) -> alloy_sol_types::Result<LightClientCalls> {
11297                        <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11298                                data,
11299                            )
11300                            .map(LightClientCalls::isPermissionedProverEnabled)
11301                    }
11302                    isPermissionedProverEnabled
11303                },
11304                {
11305                    fn getHotShotCommitment(
11306                        data: &[u8],
11307                    ) -> alloy_sol_types::Result<LightClientCalls> {
11308                        <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11309                                data,
11310                            )
11311                            .map(LightClientCalls::getHotShotCommitment)
11312                    }
11313                    getHotShotCommitment
11314                },
11315                {
11316                    fn owner(data: &[u8]) -> alloy_sol_types::Result<LightClientCalls> {
11317                        <ownerCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11318                                data,
11319                            )
11320                            .map(LightClientCalls::owner)
11321                    }
11322                    owner
11323                },
11324                {
11325                    fn setstateHistoryRetentionPeriod(
11326                        data: &[u8],
11327                    ) -> alloy_sol_types::Result<LightClientCalls> {
11328                        <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11329                                data,
11330                            )
11331                            .map(LightClientCalls::setstateHistoryRetentionPeriod)
11332                    }
11333                    setstateHistoryRetentionPeriod
11334                },
11335                {
11336                    fn initialize(
11337                        data: &[u8],
11338                    ) -> alloy_sol_types::Result<LightClientCalls> {
11339                        <initializeCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11340                                data,
11341                            )
11342                            .map(LightClientCalls::initialize)
11343                    }
11344                    initialize
11345                },
11346                {
11347                    fn finalizedState(
11348                        data: &[u8],
11349                    ) -> alloy_sol_types::Result<LightClientCalls> {
11350                        <finalizedStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11351                                data,
11352                            )
11353                            .map(LightClientCalls::finalizedState)
11354                    }
11355                    finalizedState
11356                },
11357                {
11358                    fn UPGRADE_INTERFACE_VERSION(
11359                        data: &[u8],
11360                    ) -> alloy_sol_types::Result<LightClientCalls> {
11361                        <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11362                                data,
11363                            )
11364                            .map(LightClientCalls::UPGRADE_INTERFACE_VERSION)
11365                    }
11366                    UPGRADE_INTERFACE_VERSION
11367                },
11368                {
11369                    fn stateHistoryRetentionPeriod(
11370                        data: &[u8],
11371                    ) -> alloy_sol_types::Result<LightClientCalls> {
11372                        <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11373                                data,
11374                            )
11375                            .map(LightClientCalls::stateHistoryRetentionPeriod)
11376                    }
11377                    stateHistoryRetentionPeriod
11378                },
11379                {
11380                    fn genesisState(
11381                        data: &[u8],
11382                    ) -> alloy_sol_types::Result<LightClientCalls> {
11383                        <genesisStateCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11384                                data,
11385                            )
11386                            .map(LightClientCalls::genesisState)
11387                    }
11388                    genesisState
11389                },
11390                {
11391                    fn lagOverEscapeHatchThreshold(
11392                        data: &[u8],
11393                    ) -> alloy_sol_types::Result<LightClientCalls> {
11394                        <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11395                                data,
11396                            )
11397                            .map(LightClientCalls::lagOverEscapeHatchThreshold)
11398                    }
11399                    lagOverEscapeHatchThreshold
11400                },
11401                {
11402                    fn transferOwnership(
11403                        data: &[u8],
11404                    ) -> alloy_sol_types::Result<LightClientCalls> {
11405                        <transferOwnershipCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11406                                data,
11407                            )
11408                            .map(LightClientCalls::transferOwnership)
11409                    }
11410                    transferOwnership
11411                },
11412                {
11413                    fn getStateHistoryCount(
11414                        data: &[u8],
11415                    ) -> alloy_sol_types::Result<LightClientCalls> {
11416                        <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_decode_raw_validate(
11417                                data,
11418                            )
11419                            .map(LightClientCalls::getStateHistoryCount)
11420                    }
11421                    getStateHistoryCount
11422                },
11423            ];
11424            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
11425                return Err(
11426                    alloy_sol_types::Error::unknown_selector(
11427                        <Self as alloy_sol_types::SolInterface>::NAME,
11428                        selector,
11429                    ),
11430                );
11431            };
11432            DECODE_VALIDATE_SHIMS[idx](data)
11433        }
11434        #[inline]
11435        fn abi_encoded_size(&self) -> usize {
11436            match self {
11437                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11438                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encoded_size(
11439                        inner,
11440                    )
11441                }
11442                Self::_getVk(inner) => {
11443                    <_getVkCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11444                }
11445                Self::currentBlockNumber(inner) => {
11446                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encoded_size(
11447                        inner,
11448                    )
11449                }
11450                Self::disablePermissionedProverMode(inner) => {
11451                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encoded_size(
11452                        inner,
11453                    )
11454                }
11455                Self::finalizedState(inner) => {
11456                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11457                        inner,
11458                    )
11459                }
11460                Self::genesisStakeTableState(inner) => {
11461                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11462                        inner,
11463                    )
11464                }
11465                Self::genesisState(inner) => {
11466                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11467                        inner,
11468                    )
11469                }
11470                Self::getHotShotCommitment(inner) => {
11471                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encoded_size(
11472                        inner,
11473                    )
11474                }
11475                Self::getStateHistoryCount(inner) => {
11476                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encoded_size(
11477                        inner,
11478                    )
11479                }
11480                Self::getVersion(inner) => {
11481                    <getVersionCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11482                }
11483                Self::initialize(inner) => {
11484                    <initializeCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11485                }
11486                Self::isPermissionedProverEnabled(inner) => {
11487                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encoded_size(
11488                        inner,
11489                    )
11490                }
11491                Self::lagOverEscapeHatchThreshold(inner) => {
11492                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encoded_size(
11493                        inner,
11494                    )
11495                }
11496                Self::newFinalizedState(inner) => {
11497                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encoded_size(
11498                        inner,
11499                    )
11500                }
11501                Self::owner(inner) => {
11502                    <ownerCall as alloy_sol_types::SolCall>::abi_encoded_size(inner)
11503                }
11504                Self::permissionedProver(inner) => {
11505                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11506                        inner,
11507                    )
11508                }
11509                Self::proxiableUUID(inner) => {
11510                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encoded_size(
11511                        inner,
11512                    )
11513                }
11514                Self::renounceOwnership(inner) => {
11515                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11516                        inner,
11517                    )
11518                }
11519                Self::setPermissionedProver(inner) => {
11520                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encoded_size(
11521                        inner,
11522                    )
11523                }
11524                Self::setstateHistoryRetentionPeriod(inner) => {
11525                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11526                        inner,
11527                    )
11528                }
11529                Self::stateHistoryCommitments(inner) => {
11530                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encoded_size(
11531                        inner,
11532                    )
11533                }
11534                Self::stateHistoryFirstIndex(inner) => {
11535                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encoded_size(
11536                        inner,
11537                    )
11538                }
11539                Self::stateHistoryRetentionPeriod(inner) => {
11540                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encoded_size(
11541                        inner,
11542                    )
11543                }
11544                Self::transferOwnership(inner) => {
11545                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encoded_size(
11546                        inner,
11547                    )
11548                }
11549                Self::upgradeToAndCall(inner) => {
11550                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encoded_size(
11551                        inner,
11552                    )
11553                }
11554            }
11555        }
11556        #[inline]
11557        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
11558            match self {
11559                Self::UPGRADE_INTERFACE_VERSION(inner) => {
11560                    <UPGRADE_INTERFACE_VERSIONCall as alloy_sol_types::SolCall>::abi_encode_raw(
11561                        inner,
11562                        out,
11563                    )
11564                }
11565                Self::_getVk(inner) => {
11566                    <_getVkCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11567                }
11568                Self::currentBlockNumber(inner) => {
11569                    <currentBlockNumberCall as alloy_sol_types::SolCall>::abi_encode_raw(
11570                        inner,
11571                        out,
11572                    )
11573                }
11574                Self::disablePermissionedProverMode(inner) => {
11575                    <disablePermissionedProverModeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11576                        inner,
11577                        out,
11578                    )
11579                }
11580                Self::finalizedState(inner) => {
11581                    <finalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11582                        inner,
11583                        out,
11584                    )
11585                }
11586                Self::genesisStakeTableState(inner) => {
11587                    <genesisStakeTableStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11588                        inner,
11589                        out,
11590                    )
11591                }
11592                Self::genesisState(inner) => {
11593                    <genesisStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11594                        inner,
11595                        out,
11596                    )
11597                }
11598                Self::getHotShotCommitment(inner) => {
11599                    <getHotShotCommitmentCall as alloy_sol_types::SolCall>::abi_encode_raw(
11600                        inner,
11601                        out,
11602                    )
11603                }
11604                Self::getStateHistoryCount(inner) => {
11605                    <getStateHistoryCountCall as alloy_sol_types::SolCall>::abi_encode_raw(
11606                        inner,
11607                        out,
11608                    )
11609                }
11610                Self::getVersion(inner) => {
11611                    <getVersionCall as alloy_sol_types::SolCall>::abi_encode_raw(
11612                        inner,
11613                        out,
11614                    )
11615                }
11616                Self::initialize(inner) => {
11617                    <initializeCall as alloy_sol_types::SolCall>::abi_encode_raw(
11618                        inner,
11619                        out,
11620                    )
11621                }
11622                Self::isPermissionedProverEnabled(inner) => {
11623                    <isPermissionedProverEnabledCall as alloy_sol_types::SolCall>::abi_encode_raw(
11624                        inner,
11625                        out,
11626                    )
11627                }
11628                Self::lagOverEscapeHatchThreshold(inner) => {
11629                    <lagOverEscapeHatchThresholdCall as alloy_sol_types::SolCall>::abi_encode_raw(
11630                        inner,
11631                        out,
11632                    )
11633                }
11634                Self::newFinalizedState(inner) => {
11635                    <newFinalizedStateCall as alloy_sol_types::SolCall>::abi_encode_raw(
11636                        inner,
11637                        out,
11638                    )
11639                }
11640                Self::owner(inner) => {
11641                    <ownerCall as alloy_sol_types::SolCall>::abi_encode_raw(inner, out)
11642                }
11643                Self::permissionedProver(inner) => {
11644                    <permissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11645                        inner,
11646                        out,
11647                    )
11648                }
11649                Self::proxiableUUID(inner) => {
11650                    <proxiableUUIDCall as alloy_sol_types::SolCall>::abi_encode_raw(
11651                        inner,
11652                        out,
11653                    )
11654                }
11655                Self::renounceOwnership(inner) => {
11656                    <renounceOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11657                        inner,
11658                        out,
11659                    )
11660                }
11661                Self::setPermissionedProver(inner) => {
11662                    <setPermissionedProverCall as alloy_sol_types::SolCall>::abi_encode_raw(
11663                        inner,
11664                        out,
11665                    )
11666                }
11667                Self::setstateHistoryRetentionPeriod(inner) => {
11668                    <setstateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11669                        inner,
11670                        out,
11671                    )
11672                }
11673                Self::stateHistoryCommitments(inner) => {
11674                    <stateHistoryCommitmentsCall as alloy_sol_types::SolCall>::abi_encode_raw(
11675                        inner,
11676                        out,
11677                    )
11678                }
11679                Self::stateHistoryFirstIndex(inner) => {
11680                    <stateHistoryFirstIndexCall as alloy_sol_types::SolCall>::abi_encode_raw(
11681                        inner,
11682                        out,
11683                    )
11684                }
11685                Self::stateHistoryRetentionPeriod(inner) => {
11686                    <stateHistoryRetentionPeriodCall as alloy_sol_types::SolCall>::abi_encode_raw(
11687                        inner,
11688                        out,
11689                    )
11690                }
11691                Self::transferOwnership(inner) => {
11692                    <transferOwnershipCall as alloy_sol_types::SolCall>::abi_encode_raw(
11693                        inner,
11694                        out,
11695                    )
11696                }
11697                Self::upgradeToAndCall(inner) => {
11698                    <upgradeToAndCallCall as alloy_sol_types::SolCall>::abi_encode_raw(
11699                        inner,
11700                        out,
11701                    )
11702                }
11703            }
11704        }
11705    }
11706    ///Container for all the [`LightClient`](self) custom errors.
11707    #[derive(serde::Serialize, serde::Deserialize)]
11708    #[derive(Debug, PartialEq, Eq, Hash)]
11709    pub enum LightClientErrors {
11710        #[allow(missing_docs)]
11711        AddressEmptyCode(AddressEmptyCode),
11712        #[allow(missing_docs)]
11713        ERC1967InvalidImplementation(ERC1967InvalidImplementation),
11714        #[allow(missing_docs)]
11715        ERC1967NonPayable(ERC1967NonPayable),
11716        #[allow(missing_docs)]
11717        FailedInnerCall(FailedInnerCall),
11718        #[allow(missing_docs)]
11719        InsufficientSnapshotHistory(InsufficientSnapshotHistory),
11720        #[allow(missing_docs)]
11721        InvalidAddress(InvalidAddress),
11722        #[allow(missing_docs)]
11723        InvalidArgs(InvalidArgs),
11724        #[allow(missing_docs)]
11725        InvalidHotShotBlockForCommitmentCheck(InvalidHotShotBlockForCommitmentCheck),
11726        #[allow(missing_docs)]
11727        InvalidInitialization(InvalidInitialization),
11728        #[allow(missing_docs)]
11729        InvalidMaxStateHistory(InvalidMaxStateHistory),
11730        #[allow(missing_docs)]
11731        InvalidProof(InvalidProof),
11732        #[allow(missing_docs)]
11733        InvalidScalar(InvalidScalar),
11734        #[allow(missing_docs)]
11735        NoChangeRequired(NoChangeRequired),
11736        #[allow(missing_docs)]
11737        NotInitializing(NotInitializing),
11738        #[allow(missing_docs)]
11739        OutdatedState(OutdatedState),
11740        #[allow(missing_docs)]
11741        OwnableInvalidOwner(OwnableInvalidOwner),
11742        #[allow(missing_docs)]
11743        OwnableUnauthorizedAccount(OwnableUnauthorizedAccount),
11744        #[allow(missing_docs)]
11745        OwnershipCannotBeRenounced(OwnershipCannotBeRenounced),
11746        #[allow(missing_docs)]
11747        ProverNotPermissioned(ProverNotPermissioned),
11748        #[allow(missing_docs)]
11749        UUPSUnauthorizedCallContext(UUPSUnauthorizedCallContext),
11750        #[allow(missing_docs)]
11751        UUPSUnsupportedProxiableUUID(UUPSUnsupportedProxiableUUID),
11752        #[allow(missing_docs)]
11753        WrongStakeTableUsed(WrongStakeTableUsed),
11754    }
11755    #[automatically_derived]
11756    impl LightClientErrors {
11757        /// All the selectors of this enum.
11758        ///
11759        /// Note that the selectors might not be in the same order as the variants.
11760        /// No guarantees are made about the order of the selectors.
11761        ///
11762        /// Prefer using `SolInterface` methods instead.
11763        pub const SELECTORS: &'static [[u8; 4usize]] = &[
11764            [5u8, 28u8, 70u8, 239u8],
11765            [5u8, 176u8, 92u8, 204u8],
11766            [9u8, 189u8, 227u8, 57u8],
11767            [17u8, 140u8, 218u8, 167u8],
11768            [20u8, 37u8, 234u8, 66u8],
11769            [30u8, 79u8, 189u8, 247u8],
11770            [47u8, 171u8, 146u8, 202u8],
11771            [76u8, 156u8, 140u8, 227u8],
11772            [81u8, 97u8, 128u8, 137u8],
11773            [97u8, 90u8, 146u8, 100u8],
11774            [153u8, 150u8, 179u8, 21u8],
11775            [161u8, 186u8, 7u8, 238u8],
11776            [163u8, 166u8, 71u8, 128u8],
11777            [168u8, 99u8, 174u8, 201u8],
11778            [170u8, 29u8, 73u8, 164u8],
11779            [176u8, 180u8, 56u8, 119u8],
11780            [179u8, 152u8, 151u8, 159u8],
11781            [215u8, 230u8, 188u8, 248u8],
11782            [224u8, 124u8, 141u8, 186u8],
11783            [230u8, 196u8, 36u8, 123u8],
11784            [244u8, 160u8, 238u8, 224u8],
11785            [249u8, 46u8, 232u8, 169u8],
11786        ];
11787    }
11788    #[automatically_derived]
11789    impl alloy_sol_types::SolInterface for LightClientErrors {
11790        const NAME: &'static str = "LightClientErrors";
11791        const MIN_DATA_LENGTH: usize = 0usize;
11792        const COUNT: usize = 22usize;
11793        #[inline]
11794        fn selector(&self) -> [u8; 4] {
11795            match self {
11796                Self::AddressEmptyCode(_) => {
11797                    <AddressEmptyCode as alloy_sol_types::SolError>::SELECTOR
11798                }
11799                Self::ERC1967InvalidImplementation(_) => {
11800                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::SELECTOR
11801                }
11802                Self::ERC1967NonPayable(_) => {
11803                    <ERC1967NonPayable as alloy_sol_types::SolError>::SELECTOR
11804                }
11805                Self::FailedInnerCall(_) => {
11806                    <FailedInnerCall as alloy_sol_types::SolError>::SELECTOR
11807                }
11808                Self::InsufficientSnapshotHistory(_) => {
11809                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::SELECTOR
11810                }
11811                Self::InvalidAddress(_) => {
11812                    <InvalidAddress as alloy_sol_types::SolError>::SELECTOR
11813                }
11814                Self::InvalidArgs(_) => {
11815                    <InvalidArgs as alloy_sol_types::SolError>::SELECTOR
11816                }
11817                Self::InvalidHotShotBlockForCommitmentCheck(_) => {
11818                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::SELECTOR
11819                }
11820                Self::InvalidInitialization(_) => {
11821                    <InvalidInitialization as alloy_sol_types::SolError>::SELECTOR
11822                }
11823                Self::InvalidMaxStateHistory(_) => {
11824                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::SELECTOR
11825                }
11826                Self::InvalidProof(_) => {
11827                    <InvalidProof as alloy_sol_types::SolError>::SELECTOR
11828                }
11829                Self::InvalidScalar(_) => {
11830                    <InvalidScalar as alloy_sol_types::SolError>::SELECTOR
11831                }
11832                Self::NoChangeRequired(_) => {
11833                    <NoChangeRequired as alloy_sol_types::SolError>::SELECTOR
11834                }
11835                Self::NotInitializing(_) => {
11836                    <NotInitializing as alloy_sol_types::SolError>::SELECTOR
11837                }
11838                Self::OutdatedState(_) => {
11839                    <OutdatedState as alloy_sol_types::SolError>::SELECTOR
11840                }
11841                Self::OwnableInvalidOwner(_) => {
11842                    <OwnableInvalidOwner as alloy_sol_types::SolError>::SELECTOR
11843                }
11844                Self::OwnableUnauthorizedAccount(_) => {
11845                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::SELECTOR
11846                }
11847                Self::OwnershipCannotBeRenounced(_) => {
11848                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::SELECTOR
11849                }
11850                Self::ProverNotPermissioned(_) => {
11851                    <ProverNotPermissioned as alloy_sol_types::SolError>::SELECTOR
11852                }
11853                Self::UUPSUnauthorizedCallContext(_) => {
11854                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::SELECTOR
11855                }
11856                Self::UUPSUnsupportedProxiableUUID(_) => {
11857                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::SELECTOR
11858                }
11859                Self::WrongStakeTableUsed(_) => {
11860                    <WrongStakeTableUsed as alloy_sol_types::SolError>::SELECTOR
11861                }
11862            }
11863        }
11864        #[inline]
11865        fn selector_at(i: usize) -> ::core::option::Option<[u8; 4]> {
11866            Self::SELECTORS.get(i).copied()
11867        }
11868        #[inline]
11869        fn valid_selector(selector: [u8; 4]) -> bool {
11870            Self::SELECTORS.binary_search(&selector).is_ok()
11871        }
11872        #[inline]
11873        #[allow(non_snake_case)]
11874        fn abi_decode_raw(
11875            selector: [u8; 4],
11876            data: &[u8],
11877        ) -> alloy_sol_types::Result<Self> {
11878            static DECODE_SHIMS: &[fn(
11879                &[u8],
11880            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
11881                {
11882                    fn OutdatedState(
11883                        data: &[u8],
11884                    ) -> alloy_sol_types::Result<LightClientErrors> {
11885                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw(
11886                                data,
11887                            )
11888                            .map(LightClientErrors::OutdatedState)
11889                    }
11890                    OutdatedState
11891                },
11892                {
11893                    fn InvalidScalar(
11894                        data: &[u8],
11895                    ) -> alloy_sol_types::Result<LightClientErrors> {
11896                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw(
11897                                data,
11898                            )
11899                            .map(LightClientErrors::InvalidScalar)
11900                    }
11901                    InvalidScalar
11902                },
11903                {
11904                    fn InvalidProof(
11905                        data: &[u8],
11906                    ) -> alloy_sol_types::Result<LightClientErrors> {
11907                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw(data)
11908                            .map(LightClientErrors::InvalidProof)
11909                    }
11910                    InvalidProof
11911                },
11912                {
11913                    fn OwnableUnauthorizedAccount(
11914                        data: &[u8],
11915                    ) -> alloy_sol_types::Result<LightClientErrors> {
11916                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw(
11917                                data,
11918                            )
11919                            .map(LightClientErrors::OwnableUnauthorizedAccount)
11920                    }
11921                    OwnableUnauthorizedAccount
11922                },
11923                {
11924                    fn FailedInnerCall(
11925                        data: &[u8],
11926                    ) -> alloy_sol_types::Result<LightClientErrors> {
11927                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw(
11928                                data,
11929                            )
11930                            .map(LightClientErrors::FailedInnerCall)
11931                    }
11932                    FailedInnerCall
11933                },
11934                {
11935                    fn OwnableInvalidOwner(
11936                        data: &[u8],
11937                    ) -> alloy_sol_types::Result<LightClientErrors> {
11938                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw(
11939                                data,
11940                            )
11941                            .map(LightClientErrors::OwnableInvalidOwner)
11942                    }
11943                    OwnableInvalidOwner
11944                },
11945                {
11946                    fn OwnershipCannotBeRenounced(
11947                        data: &[u8],
11948                    ) -> alloy_sol_types::Result<LightClientErrors> {
11949                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw(
11950                                data,
11951                            )
11952                            .map(LightClientErrors::OwnershipCannotBeRenounced)
11953                    }
11954                    OwnershipCannotBeRenounced
11955                },
11956                {
11957                    fn ERC1967InvalidImplementation(
11958                        data: &[u8],
11959                    ) -> alloy_sol_types::Result<LightClientErrors> {
11960                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw(
11961                                data,
11962                            )
11963                            .map(LightClientErrors::ERC1967InvalidImplementation)
11964                    }
11965                    ERC1967InvalidImplementation
11966                },
11967                {
11968                    fn WrongStakeTableUsed(
11969                        data: &[u8],
11970                    ) -> alloy_sol_types::Result<LightClientErrors> {
11971                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw(
11972                                data,
11973                            )
11974                            .map(LightClientErrors::WrongStakeTableUsed)
11975                    }
11976                    WrongStakeTableUsed
11977                },
11978                {
11979                    fn InvalidHotShotBlockForCommitmentCheck(
11980                        data: &[u8],
11981                    ) -> alloy_sol_types::Result<LightClientErrors> {
11982                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw(
11983                                data,
11984                            )
11985                            .map(
11986                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
11987                            )
11988                    }
11989                    InvalidHotShotBlockForCommitmentCheck
11990                },
11991                {
11992                    fn AddressEmptyCode(
11993                        data: &[u8],
11994                    ) -> alloy_sol_types::Result<LightClientErrors> {
11995                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw(
11996                                data,
11997                            )
11998                            .map(LightClientErrors::AddressEmptyCode)
11999                    }
12000                    AddressEmptyCode
12001                },
12002                {
12003                    fn InvalidArgs(
12004                        data: &[u8],
12005                    ) -> alloy_sol_types::Result<LightClientErrors> {
12006                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw(data)
12007                            .map(LightClientErrors::InvalidArgs)
12008                    }
12009                    InvalidArgs
12010                },
12011                {
12012                    fn ProverNotPermissioned(
12013                        data: &[u8],
12014                    ) -> alloy_sol_types::Result<LightClientErrors> {
12015                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw(
12016                                data,
12017                            )
12018                            .map(LightClientErrors::ProverNotPermissioned)
12019                    }
12020                    ProverNotPermissioned
12021                },
12022                {
12023                    fn NoChangeRequired(
12024                        data: &[u8],
12025                    ) -> alloy_sol_types::Result<LightClientErrors> {
12026                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw(
12027                                data,
12028                            )
12029                            .map(LightClientErrors::NoChangeRequired)
12030                    }
12031                    NoChangeRequired
12032                },
12033                {
12034                    fn UUPSUnsupportedProxiableUUID(
12035                        data: &[u8],
12036                    ) -> alloy_sol_types::Result<LightClientErrors> {
12037                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw(
12038                                data,
12039                            )
12040                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12041                    }
12042                    UUPSUnsupportedProxiableUUID
12043                },
12044                {
12045                    fn InsufficientSnapshotHistory(
12046                        data: &[u8],
12047                    ) -> alloy_sol_types::Result<LightClientErrors> {
12048                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw(
12049                                data,
12050                            )
12051                            .map(LightClientErrors::InsufficientSnapshotHistory)
12052                    }
12053                    InsufficientSnapshotHistory
12054                },
12055                {
12056                    fn ERC1967NonPayable(
12057                        data: &[u8],
12058                    ) -> alloy_sol_types::Result<LightClientErrors> {
12059                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw(
12060                                data,
12061                            )
12062                            .map(LightClientErrors::ERC1967NonPayable)
12063                    }
12064                    ERC1967NonPayable
12065                },
12066                {
12067                    fn NotInitializing(
12068                        data: &[u8],
12069                    ) -> alloy_sol_types::Result<LightClientErrors> {
12070                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw(
12071                                data,
12072                            )
12073                            .map(LightClientErrors::NotInitializing)
12074                    }
12075                    NotInitializing
12076                },
12077                {
12078                    fn UUPSUnauthorizedCallContext(
12079                        data: &[u8],
12080                    ) -> alloy_sol_types::Result<LightClientErrors> {
12081                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw(
12082                                data,
12083                            )
12084                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12085                    }
12086                    UUPSUnauthorizedCallContext
12087                },
12088                {
12089                    fn InvalidAddress(
12090                        data: &[u8],
12091                    ) -> alloy_sol_types::Result<LightClientErrors> {
12092                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw(
12093                                data,
12094                            )
12095                            .map(LightClientErrors::InvalidAddress)
12096                    }
12097                    InvalidAddress
12098                },
12099                {
12100                    fn InvalidMaxStateHistory(
12101                        data: &[u8],
12102                    ) -> alloy_sol_types::Result<LightClientErrors> {
12103                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw(
12104                                data,
12105                            )
12106                            .map(LightClientErrors::InvalidMaxStateHistory)
12107                    }
12108                    InvalidMaxStateHistory
12109                },
12110                {
12111                    fn InvalidInitialization(
12112                        data: &[u8],
12113                    ) -> alloy_sol_types::Result<LightClientErrors> {
12114                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw(
12115                                data,
12116                            )
12117                            .map(LightClientErrors::InvalidInitialization)
12118                    }
12119                    InvalidInitialization
12120                },
12121            ];
12122            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12123                return Err(
12124                    alloy_sol_types::Error::unknown_selector(
12125                        <Self as alloy_sol_types::SolInterface>::NAME,
12126                        selector,
12127                    ),
12128                );
12129            };
12130            DECODE_SHIMS[idx](data)
12131        }
12132        #[inline]
12133        #[allow(non_snake_case)]
12134        fn abi_decode_raw_validate(
12135            selector: [u8; 4],
12136            data: &[u8],
12137        ) -> alloy_sol_types::Result<Self> {
12138            static DECODE_VALIDATE_SHIMS: &[fn(
12139                &[u8],
12140            ) -> alloy_sol_types::Result<LightClientErrors>] = &[
12141                {
12142                    fn OutdatedState(
12143                        data: &[u8],
12144                    ) -> alloy_sol_types::Result<LightClientErrors> {
12145                        <OutdatedState as alloy_sol_types::SolError>::abi_decode_raw_validate(
12146                                data,
12147                            )
12148                            .map(LightClientErrors::OutdatedState)
12149                    }
12150                    OutdatedState
12151                },
12152                {
12153                    fn InvalidScalar(
12154                        data: &[u8],
12155                    ) -> alloy_sol_types::Result<LightClientErrors> {
12156                        <InvalidScalar as alloy_sol_types::SolError>::abi_decode_raw_validate(
12157                                data,
12158                            )
12159                            .map(LightClientErrors::InvalidScalar)
12160                    }
12161                    InvalidScalar
12162                },
12163                {
12164                    fn InvalidProof(
12165                        data: &[u8],
12166                    ) -> alloy_sol_types::Result<LightClientErrors> {
12167                        <InvalidProof as alloy_sol_types::SolError>::abi_decode_raw_validate(
12168                                data,
12169                            )
12170                            .map(LightClientErrors::InvalidProof)
12171                    }
12172                    InvalidProof
12173                },
12174                {
12175                    fn OwnableUnauthorizedAccount(
12176                        data: &[u8],
12177                    ) -> alloy_sol_types::Result<LightClientErrors> {
12178                        <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_decode_raw_validate(
12179                                data,
12180                            )
12181                            .map(LightClientErrors::OwnableUnauthorizedAccount)
12182                    }
12183                    OwnableUnauthorizedAccount
12184                },
12185                {
12186                    fn FailedInnerCall(
12187                        data: &[u8],
12188                    ) -> alloy_sol_types::Result<LightClientErrors> {
12189                        <FailedInnerCall as alloy_sol_types::SolError>::abi_decode_raw_validate(
12190                                data,
12191                            )
12192                            .map(LightClientErrors::FailedInnerCall)
12193                    }
12194                    FailedInnerCall
12195                },
12196                {
12197                    fn OwnableInvalidOwner(
12198                        data: &[u8],
12199                    ) -> alloy_sol_types::Result<LightClientErrors> {
12200                        <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_decode_raw_validate(
12201                                data,
12202                            )
12203                            .map(LightClientErrors::OwnableInvalidOwner)
12204                    }
12205                    OwnableInvalidOwner
12206                },
12207                {
12208                    fn OwnershipCannotBeRenounced(
12209                        data: &[u8],
12210                    ) -> alloy_sol_types::Result<LightClientErrors> {
12211                        <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_decode_raw_validate(
12212                                data,
12213                            )
12214                            .map(LightClientErrors::OwnershipCannotBeRenounced)
12215                    }
12216                    OwnershipCannotBeRenounced
12217                },
12218                {
12219                    fn ERC1967InvalidImplementation(
12220                        data: &[u8],
12221                    ) -> alloy_sol_types::Result<LightClientErrors> {
12222                        <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_decode_raw_validate(
12223                                data,
12224                            )
12225                            .map(LightClientErrors::ERC1967InvalidImplementation)
12226                    }
12227                    ERC1967InvalidImplementation
12228                },
12229                {
12230                    fn WrongStakeTableUsed(
12231                        data: &[u8],
12232                    ) -> alloy_sol_types::Result<LightClientErrors> {
12233                        <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_decode_raw_validate(
12234                                data,
12235                            )
12236                            .map(LightClientErrors::WrongStakeTableUsed)
12237                    }
12238                    WrongStakeTableUsed
12239                },
12240                {
12241                    fn InvalidHotShotBlockForCommitmentCheck(
12242                        data: &[u8],
12243                    ) -> alloy_sol_types::Result<LightClientErrors> {
12244                        <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_decode_raw_validate(
12245                                data,
12246                            )
12247                            .map(
12248                                LightClientErrors::InvalidHotShotBlockForCommitmentCheck,
12249                            )
12250                    }
12251                    InvalidHotShotBlockForCommitmentCheck
12252                },
12253                {
12254                    fn AddressEmptyCode(
12255                        data: &[u8],
12256                    ) -> alloy_sol_types::Result<LightClientErrors> {
12257                        <AddressEmptyCode as alloy_sol_types::SolError>::abi_decode_raw_validate(
12258                                data,
12259                            )
12260                            .map(LightClientErrors::AddressEmptyCode)
12261                    }
12262                    AddressEmptyCode
12263                },
12264                {
12265                    fn InvalidArgs(
12266                        data: &[u8],
12267                    ) -> alloy_sol_types::Result<LightClientErrors> {
12268                        <InvalidArgs as alloy_sol_types::SolError>::abi_decode_raw_validate(
12269                                data,
12270                            )
12271                            .map(LightClientErrors::InvalidArgs)
12272                    }
12273                    InvalidArgs
12274                },
12275                {
12276                    fn ProverNotPermissioned(
12277                        data: &[u8],
12278                    ) -> alloy_sol_types::Result<LightClientErrors> {
12279                        <ProverNotPermissioned as alloy_sol_types::SolError>::abi_decode_raw_validate(
12280                                data,
12281                            )
12282                            .map(LightClientErrors::ProverNotPermissioned)
12283                    }
12284                    ProverNotPermissioned
12285                },
12286                {
12287                    fn NoChangeRequired(
12288                        data: &[u8],
12289                    ) -> alloy_sol_types::Result<LightClientErrors> {
12290                        <NoChangeRequired as alloy_sol_types::SolError>::abi_decode_raw_validate(
12291                                data,
12292                            )
12293                            .map(LightClientErrors::NoChangeRequired)
12294                    }
12295                    NoChangeRequired
12296                },
12297                {
12298                    fn UUPSUnsupportedProxiableUUID(
12299                        data: &[u8],
12300                    ) -> alloy_sol_types::Result<LightClientErrors> {
12301                        <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_decode_raw_validate(
12302                                data,
12303                            )
12304                            .map(LightClientErrors::UUPSUnsupportedProxiableUUID)
12305                    }
12306                    UUPSUnsupportedProxiableUUID
12307                },
12308                {
12309                    fn InsufficientSnapshotHistory(
12310                        data: &[u8],
12311                    ) -> alloy_sol_types::Result<LightClientErrors> {
12312                        <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12313                                data,
12314                            )
12315                            .map(LightClientErrors::InsufficientSnapshotHistory)
12316                    }
12317                    InsufficientSnapshotHistory
12318                },
12319                {
12320                    fn ERC1967NonPayable(
12321                        data: &[u8],
12322                    ) -> alloy_sol_types::Result<LightClientErrors> {
12323                        <ERC1967NonPayable as alloy_sol_types::SolError>::abi_decode_raw_validate(
12324                                data,
12325                            )
12326                            .map(LightClientErrors::ERC1967NonPayable)
12327                    }
12328                    ERC1967NonPayable
12329                },
12330                {
12331                    fn NotInitializing(
12332                        data: &[u8],
12333                    ) -> alloy_sol_types::Result<LightClientErrors> {
12334                        <NotInitializing as alloy_sol_types::SolError>::abi_decode_raw_validate(
12335                                data,
12336                            )
12337                            .map(LightClientErrors::NotInitializing)
12338                    }
12339                    NotInitializing
12340                },
12341                {
12342                    fn UUPSUnauthorizedCallContext(
12343                        data: &[u8],
12344                    ) -> alloy_sol_types::Result<LightClientErrors> {
12345                        <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_decode_raw_validate(
12346                                data,
12347                            )
12348                            .map(LightClientErrors::UUPSUnauthorizedCallContext)
12349                    }
12350                    UUPSUnauthorizedCallContext
12351                },
12352                {
12353                    fn InvalidAddress(
12354                        data: &[u8],
12355                    ) -> alloy_sol_types::Result<LightClientErrors> {
12356                        <InvalidAddress as alloy_sol_types::SolError>::abi_decode_raw_validate(
12357                                data,
12358                            )
12359                            .map(LightClientErrors::InvalidAddress)
12360                    }
12361                    InvalidAddress
12362                },
12363                {
12364                    fn InvalidMaxStateHistory(
12365                        data: &[u8],
12366                    ) -> alloy_sol_types::Result<LightClientErrors> {
12367                        <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_decode_raw_validate(
12368                                data,
12369                            )
12370                            .map(LightClientErrors::InvalidMaxStateHistory)
12371                    }
12372                    InvalidMaxStateHistory
12373                },
12374                {
12375                    fn InvalidInitialization(
12376                        data: &[u8],
12377                    ) -> alloy_sol_types::Result<LightClientErrors> {
12378                        <InvalidInitialization as alloy_sol_types::SolError>::abi_decode_raw_validate(
12379                                data,
12380                            )
12381                            .map(LightClientErrors::InvalidInitialization)
12382                    }
12383                    InvalidInitialization
12384                },
12385            ];
12386            let Ok(idx) = Self::SELECTORS.binary_search(&selector) else {
12387                return Err(
12388                    alloy_sol_types::Error::unknown_selector(
12389                        <Self as alloy_sol_types::SolInterface>::NAME,
12390                        selector,
12391                    ),
12392                );
12393            };
12394            DECODE_VALIDATE_SHIMS[idx](data)
12395        }
12396        #[inline]
12397        fn abi_encoded_size(&self) -> usize {
12398            match self {
12399                Self::AddressEmptyCode(inner) => {
12400                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encoded_size(
12401                        inner,
12402                    )
12403                }
12404                Self::ERC1967InvalidImplementation(inner) => {
12405                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encoded_size(
12406                        inner,
12407                    )
12408                }
12409                Self::ERC1967NonPayable(inner) => {
12410                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encoded_size(
12411                        inner,
12412                    )
12413                }
12414                Self::FailedInnerCall(inner) => {
12415                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encoded_size(
12416                        inner,
12417                    )
12418                }
12419                Self::InsufficientSnapshotHistory(inner) => {
12420                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encoded_size(
12421                        inner,
12422                    )
12423                }
12424                Self::InvalidAddress(inner) => {
12425                    <InvalidAddress as alloy_sol_types::SolError>::abi_encoded_size(
12426                        inner,
12427                    )
12428                }
12429                Self::InvalidArgs(inner) => {
12430                    <InvalidArgs as alloy_sol_types::SolError>::abi_encoded_size(inner)
12431                }
12432                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12433                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encoded_size(
12434                        inner,
12435                    )
12436                }
12437                Self::InvalidInitialization(inner) => {
12438                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encoded_size(
12439                        inner,
12440                    )
12441                }
12442                Self::InvalidMaxStateHistory(inner) => {
12443                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encoded_size(
12444                        inner,
12445                    )
12446                }
12447                Self::InvalidProof(inner) => {
12448                    <InvalidProof as alloy_sol_types::SolError>::abi_encoded_size(inner)
12449                }
12450                Self::InvalidScalar(inner) => {
12451                    <InvalidScalar as alloy_sol_types::SolError>::abi_encoded_size(inner)
12452                }
12453                Self::NoChangeRequired(inner) => {
12454                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encoded_size(
12455                        inner,
12456                    )
12457                }
12458                Self::NotInitializing(inner) => {
12459                    <NotInitializing as alloy_sol_types::SolError>::abi_encoded_size(
12460                        inner,
12461                    )
12462                }
12463                Self::OutdatedState(inner) => {
12464                    <OutdatedState as alloy_sol_types::SolError>::abi_encoded_size(inner)
12465                }
12466                Self::OwnableInvalidOwner(inner) => {
12467                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encoded_size(
12468                        inner,
12469                    )
12470                }
12471                Self::OwnableUnauthorizedAccount(inner) => {
12472                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encoded_size(
12473                        inner,
12474                    )
12475                }
12476                Self::OwnershipCannotBeRenounced(inner) => {
12477                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encoded_size(
12478                        inner,
12479                    )
12480                }
12481                Self::ProverNotPermissioned(inner) => {
12482                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encoded_size(
12483                        inner,
12484                    )
12485                }
12486                Self::UUPSUnauthorizedCallContext(inner) => {
12487                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encoded_size(
12488                        inner,
12489                    )
12490                }
12491                Self::UUPSUnsupportedProxiableUUID(inner) => {
12492                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encoded_size(
12493                        inner,
12494                    )
12495                }
12496                Self::WrongStakeTableUsed(inner) => {
12497                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encoded_size(
12498                        inner,
12499                    )
12500                }
12501            }
12502        }
12503        #[inline]
12504        fn abi_encode_raw(&self, out: &mut alloy_sol_types::private::Vec<u8>) {
12505            match self {
12506                Self::AddressEmptyCode(inner) => {
12507                    <AddressEmptyCode as alloy_sol_types::SolError>::abi_encode_raw(
12508                        inner,
12509                        out,
12510                    )
12511                }
12512                Self::ERC1967InvalidImplementation(inner) => {
12513                    <ERC1967InvalidImplementation as alloy_sol_types::SolError>::abi_encode_raw(
12514                        inner,
12515                        out,
12516                    )
12517                }
12518                Self::ERC1967NonPayable(inner) => {
12519                    <ERC1967NonPayable as alloy_sol_types::SolError>::abi_encode_raw(
12520                        inner,
12521                        out,
12522                    )
12523                }
12524                Self::FailedInnerCall(inner) => {
12525                    <FailedInnerCall as alloy_sol_types::SolError>::abi_encode_raw(
12526                        inner,
12527                        out,
12528                    )
12529                }
12530                Self::InsufficientSnapshotHistory(inner) => {
12531                    <InsufficientSnapshotHistory as alloy_sol_types::SolError>::abi_encode_raw(
12532                        inner,
12533                        out,
12534                    )
12535                }
12536                Self::InvalidAddress(inner) => {
12537                    <InvalidAddress as alloy_sol_types::SolError>::abi_encode_raw(
12538                        inner,
12539                        out,
12540                    )
12541                }
12542                Self::InvalidArgs(inner) => {
12543                    <InvalidArgs as alloy_sol_types::SolError>::abi_encode_raw(
12544                        inner,
12545                        out,
12546                    )
12547                }
12548                Self::InvalidHotShotBlockForCommitmentCheck(inner) => {
12549                    <InvalidHotShotBlockForCommitmentCheck as alloy_sol_types::SolError>::abi_encode_raw(
12550                        inner,
12551                        out,
12552                    )
12553                }
12554                Self::InvalidInitialization(inner) => {
12555                    <InvalidInitialization as alloy_sol_types::SolError>::abi_encode_raw(
12556                        inner,
12557                        out,
12558                    )
12559                }
12560                Self::InvalidMaxStateHistory(inner) => {
12561                    <InvalidMaxStateHistory as alloy_sol_types::SolError>::abi_encode_raw(
12562                        inner,
12563                        out,
12564                    )
12565                }
12566                Self::InvalidProof(inner) => {
12567                    <InvalidProof as alloy_sol_types::SolError>::abi_encode_raw(
12568                        inner,
12569                        out,
12570                    )
12571                }
12572                Self::InvalidScalar(inner) => {
12573                    <InvalidScalar as alloy_sol_types::SolError>::abi_encode_raw(
12574                        inner,
12575                        out,
12576                    )
12577                }
12578                Self::NoChangeRequired(inner) => {
12579                    <NoChangeRequired as alloy_sol_types::SolError>::abi_encode_raw(
12580                        inner,
12581                        out,
12582                    )
12583                }
12584                Self::NotInitializing(inner) => {
12585                    <NotInitializing as alloy_sol_types::SolError>::abi_encode_raw(
12586                        inner,
12587                        out,
12588                    )
12589                }
12590                Self::OutdatedState(inner) => {
12591                    <OutdatedState as alloy_sol_types::SolError>::abi_encode_raw(
12592                        inner,
12593                        out,
12594                    )
12595                }
12596                Self::OwnableInvalidOwner(inner) => {
12597                    <OwnableInvalidOwner as alloy_sol_types::SolError>::abi_encode_raw(
12598                        inner,
12599                        out,
12600                    )
12601                }
12602                Self::OwnableUnauthorizedAccount(inner) => {
12603                    <OwnableUnauthorizedAccount as alloy_sol_types::SolError>::abi_encode_raw(
12604                        inner,
12605                        out,
12606                    )
12607                }
12608                Self::OwnershipCannotBeRenounced(inner) => {
12609                    <OwnershipCannotBeRenounced as alloy_sol_types::SolError>::abi_encode_raw(
12610                        inner,
12611                        out,
12612                    )
12613                }
12614                Self::ProverNotPermissioned(inner) => {
12615                    <ProverNotPermissioned as alloy_sol_types::SolError>::abi_encode_raw(
12616                        inner,
12617                        out,
12618                    )
12619                }
12620                Self::UUPSUnauthorizedCallContext(inner) => {
12621                    <UUPSUnauthorizedCallContext as alloy_sol_types::SolError>::abi_encode_raw(
12622                        inner,
12623                        out,
12624                    )
12625                }
12626                Self::UUPSUnsupportedProxiableUUID(inner) => {
12627                    <UUPSUnsupportedProxiableUUID as alloy_sol_types::SolError>::abi_encode_raw(
12628                        inner,
12629                        out,
12630                    )
12631                }
12632                Self::WrongStakeTableUsed(inner) => {
12633                    <WrongStakeTableUsed as alloy_sol_types::SolError>::abi_encode_raw(
12634                        inner,
12635                        out,
12636                    )
12637                }
12638            }
12639        }
12640    }
12641    ///Container for all the [`LightClient`](self) events.
12642    #[derive(serde::Serialize, serde::Deserialize)]
12643    #[derive(Debug, PartialEq, Eq, Hash)]
12644    pub enum LightClientEvents {
12645        #[allow(missing_docs)]
12646        Initialized(Initialized),
12647        #[allow(missing_docs)]
12648        NewState(NewState),
12649        #[allow(missing_docs)]
12650        OwnershipTransferred(OwnershipTransferred),
12651        #[allow(missing_docs)]
12652        PermissionedProverNotRequired(PermissionedProverNotRequired),
12653        #[allow(missing_docs)]
12654        PermissionedProverRequired(PermissionedProverRequired),
12655        #[allow(missing_docs)]
12656        Upgrade(Upgrade),
12657        #[allow(missing_docs)]
12658        Upgraded(Upgraded),
12659    }
12660    #[automatically_derived]
12661    impl LightClientEvents {
12662        /// All the selectors of this enum.
12663        ///
12664        /// Note that the selectors might not be in the same order as the variants.
12665        /// No guarantees are made about the order of the selectors.
12666        ///
12667        /// Prefer using `SolInterface` methods instead.
12668        pub const SELECTORS: &'static [[u8; 32usize]] = &[
12669            [
12670                128u8, 23u8, 187u8, 136u8, 127u8, 223u8, 143u8, 202u8, 67u8, 20u8, 169u8,
12671                212u8, 15u8, 110u8, 115u8, 179u8, 184u8, 16u8, 2u8, 214u8, 126u8, 92u8,
12672                250u8, 133u8, 216u8, 129u8, 115u8, 175u8, 106u8, 164u8, 96u8, 114u8,
12673            ],
12674            [
12675                139u8, 224u8, 7u8, 156u8, 83u8, 22u8, 89u8, 20u8, 19u8, 68u8, 205u8,
12676                31u8, 208u8, 164u8, 242u8, 132u8, 25u8, 73u8, 127u8, 151u8, 34u8, 163u8,
12677                218u8, 175u8, 227u8, 180u8, 24u8, 111u8, 107u8, 100u8, 87u8, 224u8,
12678            ],
12679            [
12680                154u8, 95u8, 87u8, 222u8, 133u8, 109u8, 214u8, 104u8, 197u8, 77u8, 217u8,
12681                94u8, 92u8, 85u8, 223u8, 147u8, 67u8, 33u8, 113u8, 203u8, 202u8, 73u8,
12682                168u8, 119u8, 109u8, 86u8, 32u8, 234u8, 89u8, 192u8, 36u8, 80u8,
12683            ],
12684            [
12685                160u8, 74u8, 119u8, 57u8, 36u8, 80u8, 90u8, 65u8, 133u8, 100u8, 54u8,
12686                55u8, 37u8, 245u8, 104u8, 50u8, 245u8, 119u8, 46u8, 107u8, 141u8, 13u8,
12687                189u8, 110u8, 252u8, 231u8, 36u8, 223u8, 232u8, 3u8, 218u8, 230u8,
12688            ],
12689            [
12690                188u8, 124u8, 215u8, 90u8, 32u8, 238u8, 39u8, 253u8, 154u8, 222u8, 186u8,
12691                179u8, 32u8, 65u8, 247u8, 85u8, 33u8, 77u8, 188u8, 107u8, 255u8, 169u8,
12692                12u8, 192u8, 34u8, 91u8, 57u8, 218u8, 46u8, 92u8, 45u8, 59u8,
12693            ],
12694            [
12695                199u8, 245u8, 5u8, 178u8, 243u8, 113u8, 174u8, 33u8, 117u8, 238u8, 73u8,
12696                19u8, 244u8, 73u8, 158u8, 31u8, 38u8, 51u8, 167u8, 181u8, 147u8, 99u8,
12697                33u8, 238u8, 209u8, 205u8, 174u8, 182u8, 17u8, 81u8, 129u8, 210u8,
12698            ],
12699            [
12700                247u8, 135u8, 33u8, 34u8, 110u8, 254u8, 154u8, 27u8, 182u8, 120u8, 24u8,
12701                154u8, 22u8, 209u8, 85u8, 73u8, 40u8, 185u8, 242u8, 25u8, 46u8, 44u8,
12702                185u8, 62u8, 237u8, 168u8, 59u8, 121u8, 250u8, 64u8, 0u8, 125u8,
12703            ],
12704        ];
12705    }
12706    #[automatically_derived]
12707    impl alloy_sol_types::SolEventInterface for LightClientEvents {
12708        const NAME: &'static str = "LightClientEvents";
12709        const COUNT: usize = 7usize;
12710        fn decode_raw_log(
12711            topics: &[alloy_sol_types::Word],
12712            data: &[u8],
12713        ) -> alloy_sol_types::Result<Self> {
12714            match topics.first().copied() {
12715                Some(<Initialized as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12716                    <Initialized as alloy_sol_types::SolEvent>::decode_raw_log(
12717                            topics,
12718                            data,
12719                        )
12720                        .map(Self::Initialized)
12721                }
12722                Some(<NewState as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12723                    <NewState as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12724                        .map(Self::NewState)
12725                }
12726                Some(
12727                    <OwnershipTransferred as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12728                ) => {
12729                    <OwnershipTransferred as alloy_sol_types::SolEvent>::decode_raw_log(
12730                            topics,
12731                            data,
12732                        )
12733                        .map(Self::OwnershipTransferred)
12734                }
12735                Some(
12736                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12737                ) => {
12738                    <PermissionedProverNotRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12739                            topics,
12740                            data,
12741                        )
12742                        .map(Self::PermissionedProverNotRequired)
12743                }
12744                Some(
12745                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::SIGNATURE_HASH,
12746                ) => {
12747                    <PermissionedProverRequired as alloy_sol_types::SolEvent>::decode_raw_log(
12748                            topics,
12749                            data,
12750                        )
12751                        .map(Self::PermissionedProverRequired)
12752                }
12753                Some(<Upgrade as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12754                    <Upgrade as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12755                        .map(Self::Upgrade)
12756                }
12757                Some(<Upgraded as alloy_sol_types::SolEvent>::SIGNATURE_HASH) => {
12758                    <Upgraded as alloy_sol_types::SolEvent>::decode_raw_log(topics, data)
12759                        .map(Self::Upgraded)
12760                }
12761                _ => {
12762                    alloy_sol_types::private::Err(alloy_sol_types::Error::InvalidLog {
12763                        name: <Self as alloy_sol_types::SolEventInterface>::NAME,
12764                        log: alloy_sol_types::private::Box::new(
12765                            alloy_sol_types::private::LogData::new_unchecked(
12766                                topics.to_vec(),
12767                                data.to_vec().into(),
12768                            ),
12769                        ),
12770                    })
12771                }
12772            }
12773        }
12774    }
12775    #[automatically_derived]
12776    impl alloy_sol_types::private::IntoLogData for LightClientEvents {
12777        fn to_log_data(&self) -> alloy_sol_types::private::LogData {
12778            match self {
12779                Self::Initialized(inner) => {
12780                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12781                }
12782                Self::NewState(inner) => {
12783                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12784                }
12785                Self::OwnershipTransferred(inner) => {
12786                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12787                }
12788                Self::PermissionedProverNotRequired(inner) => {
12789                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12790                }
12791                Self::PermissionedProverRequired(inner) => {
12792                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12793                }
12794                Self::Upgrade(inner) => {
12795                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12796                }
12797                Self::Upgraded(inner) => {
12798                    alloy_sol_types::private::IntoLogData::to_log_data(inner)
12799                }
12800            }
12801        }
12802        fn into_log_data(self) -> alloy_sol_types::private::LogData {
12803            match self {
12804                Self::Initialized(inner) => {
12805                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12806                }
12807                Self::NewState(inner) => {
12808                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12809                }
12810                Self::OwnershipTransferred(inner) => {
12811                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12812                }
12813                Self::PermissionedProverNotRequired(inner) => {
12814                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12815                }
12816                Self::PermissionedProverRequired(inner) => {
12817                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12818                }
12819                Self::Upgrade(inner) => {
12820                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12821                }
12822                Self::Upgraded(inner) => {
12823                    alloy_sol_types::private::IntoLogData::into_log_data(inner)
12824                }
12825            }
12826        }
12827    }
12828    use alloy::contract as alloy_contract;
12829    /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
12830
12831See the [wrapper's documentation](`LightClientInstance`) for more details.*/
12832    #[inline]
12833    pub const fn new<
12834        P: alloy_contract::private::Provider<N>,
12835        N: alloy_contract::private::Network,
12836    >(
12837        address: alloy_sol_types::private::Address,
12838        provider: P,
12839    ) -> LightClientInstance<P, N> {
12840        LightClientInstance::<P, N>::new(address, provider)
12841    }
12842    /**Deploys this contract using the given `provider` and constructor arguments, if any.
12843
12844Returns a new instance of the contract, if the deployment was successful.
12845
12846For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12847    #[inline]
12848    pub fn deploy<
12849        P: alloy_contract::private::Provider<N>,
12850        N: alloy_contract::private::Network,
12851    >(
12852        provider: P,
12853    ) -> impl ::core::future::Future<
12854        Output = alloy_contract::Result<LightClientInstance<P, N>>,
12855    > {
12856        LightClientInstance::<P, N>::deploy(provider)
12857    }
12858    /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12859and constructor arguments, if any.
12860
12861This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12862the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12863    #[inline]
12864    pub fn deploy_builder<
12865        P: alloy_contract::private::Provider<N>,
12866        N: alloy_contract::private::Network,
12867    >(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12868        LightClientInstance::<P, N>::deploy_builder(provider)
12869    }
12870    /**A [`LightClient`](self) instance.
12871
12872Contains type-safe methods for interacting with an on-chain instance of the
12873[`LightClient`](self) contract located at a given `address`, using a given
12874provider `P`.
12875
12876If the contract bytecode is available (see the [`sol!`](alloy_sol_types::sol!)
12877documentation on how to provide it), the `deploy` and `deploy_builder` methods can
12878be used to deploy a new instance of the contract.
12879
12880See the [module-level documentation](self) for all the available methods.*/
12881    #[derive(Clone)]
12882    pub struct LightClientInstance<P, N = alloy_contract::private::Ethereum> {
12883        address: alloy_sol_types::private::Address,
12884        provider: P,
12885        _network: ::core::marker::PhantomData<N>,
12886    }
12887    #[automatically_derived]
12888    impl<P, N> ::core::fmt::Debug for LightClientInstance<P, N> {
12889        #[inline]
12890        fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
12891            f.debug_tuple("LightClientInstance").field(&self.address).finish()
12892        }
12893    }
12894    /// Instantiation and getters/setters.
12895    #[automatically_derived]
12896    impl<
12897        P: alloy_contract::private::Provider<N>,
12898        N: alloy_contract::private::Network,
12899    > LightClientInstance<P, N> {
12900        /**Creates a new wrapper around an on-chain [`LightClient`](self) contract instance.
12901
12902See the [wrapper's documentation](`LightClientInstance`) for more details.*/
12903        #[inline]
12904        pub const fn new(
12905            address: alloy_sol_types::private::Address,
12906            provider: P,
12907        ) -> Self {
12908            Self {
12909                address,
12910                provider,
12911                _network: ::core::marker::PhantomData,
12912            }
12913        }
12914        /**Deploys this contract using the given `provider` and constructor arguments, if any.
12915
12916Returns a new instance of the contract, if the deployment was successful.
12917
12918For more fine-grained control over the deployment process, use [`deploy_builder`] instead.*/
12919        #[inline]
12920        pub async fn deploy(
12921            provider: P,
12922        ) -> alloy_contract::Result<LightClientInstance<P, N>> {
12923            let call_builder = Self::deploy_builder(provider);
12924            let contract_address = call_builder.deploy().await?;
12925            Ok(Self::new(contract_address, call_builder.provider))
12926        }
12927        /**Creates a `RawCallBuilder` for deploying this contract using the given `provider`
12928and constructor arguments, if any.
12929
12930This is a simple wrapper around creating a `RawCallBuilder` with the data set to
12931the bytecode concatenated with the constructor's ABI-encoded arguments.*/
12932        #[inline]
12933        pub fn deploy_builder(provider: P) -> alloy_contract::RawCallBuilder<P, N> {
12934            alloy_contract::RawCallBuilder::new_raw_deploy(
12935                provider,
12936                ::core::clone::Clone::clone(&BYTECODE),
12937            )
12938        }
12939        /// Returns a reference to the address.
12940        #[inline]
12941        pub const fn address(&self) -> &alloy_sol_types::private::Address {
12942            &self.address
12943        }
12944        /// Sets the address.
12945        #[inline]
12946        pub fn set_address(&mut self, address: alloy_sol_types::private::Address) {
12947            self.address = address;
12948        }
12949        /// Sets the address and returns `self`.
12950        pub fn at(mut self, address: alloy_sol_types::private::Address) -> Self {
12951            self.set_address(address);
12952            self
12953        }
12954        /// Returns a reference to the provider.
12955        #[inline]
12956        pub const fn provider(&self) -> &P {
12957            &self.provider
12958        }
12959    }
12960    impl<P: ::core::clone::Clone, N> LightClientInstance<&P, N> {
12961        /// Clones the provider and returns a new instance with the cloned provider.
12962        #[inline]
12963        pub fn with_cloned_provider(self) -> LightClientInstance<P, N> {
12964            LightClientInstance {
12965                address: self.address,
12966                provider: ::core::clone::Clone::clone(&self.provider),
12967                _network: ::core::marker::PhantomData,
12968            }
12969        }
12970    }
12971    /// Function calls.
12972    #[automatically_derived]
12973    impl<
12974        P: alloy_contract::private::Provider<N>,
12975        N: alloy_contract::private::Network,
12976    > LightClientInstance<P, N> {
12977        /// Creates a new call builder using this contract instance's provider and address.
12978        ///
12979        /// Note that the call can be any function call, not just those defined in this
12980        /// contract. Prefer using the other methods for building type-safe contract calls.
12981        pub fn call_builder<C: alloy_sol_types::SolCall>(
12982            &self,
12983            call: &C,
12984        ) -> alloy_contract::SolCallBuilder<&P, C, N> {
12985            alloy_contract::SolCallBuilder::new_sol(&self.provider, &self.address, call)
12986        }
12987        ///Creates a new call builder for the [`UPGRADE_INTERFACE_VERSION`] function.
12988        pub fn UPGRADE_INTERFACE_VERSION(
12989            &self,
12990        ) -> alloy_contract::SolCallBuilder<&P, UPGRADE_INTERFACE_VERSIONCall, N> {
12991            self.call_builder(&UPGRADE_INTERFACE_VERSIONCall)
12992        }
12993        ///Creates a new call builder for the [`_getVk`] function.
12994        pub fn _getVk(&self) -> alloy_contract::SolCallBuilder<&P, _getVkCall, N> {
12995            self.call_builder(&_getVkCall)
12996        }
12997        ///Creates a new call builder for the [`currentBlockNumber`] function.
12998        pub fn currentBlockNumber(
12999            &self,
13000        ) -> alloy_contract::SolCallBuilder<&P, currentBlockNumberCall, N> {
13001            self.call_builder(&currentBlockNumberCall)
13002        }
13003        ///Creates a new call builder for the [`disablePermissionedProverMode`] function.
13004        pub fn disablePermissionedProverMode(
13005            &self,
13006        ) -> alloy_contract::SolCallBuilder<&P, disablePermissionedProverModeCall, N> {
13007            self.call_builder(&disablePermissionedProverModeCall)
13008        }
13009        ///Creates a new call builder for the [`finalizedState`] function.
13010        pub fn finalizedState(
13011            &self,
13012        ) -> alloy_contract::SolCallBuilder<&P, finalizedStateCall, N> {
13013            self.call_builder(&finalizedStateCall)
13014        }
13015        ///Creates a new call builder for the [`genesisStakeTableState`] function.
13016        pub fn genesisStakeTableState(
13017            &self,
13018        ) -> alloy_contract::SolCallBuilder<&P, genesisStakeTableStateCall, N> {
13019            self.call_builder(&genesisStakeTableStateCall)
13020        }
13021        ///Creates a new call builder for the [`genesisState`] function.
13022        pub fn genesisState(
13023            &self,
13024        ) -> alloy_contract::SolCallBuilder<&P, genesisStateCall, N> {
13025            self.call_builder(&genesisStateCall)
13026        }
13027        ///Creates a new call builder for the [`getHotShotCommitment`] function.
13028        pub fn getHotShotCommitment(
13029            &self,
13030            hotShotBlockHeight: alloy::sol_types::private::primitives::aliases::U256,
13031        ) -> alloy_contract::SolCallBuilder<&P, getHotShotCommitmentCall, N> {
13032            self.call_builder(
13033                &getHotShotCommitmentCall {
13034                    hotShotBlockHeight,
13035                },
13036            )
13037        }
13038        ///Creates a new call builder for the [`getStateHistoryCount`] function.
13039        pub fn getStateHistoryCount(
13040            &self,
13041        ) -> alloy_contract::SolCallBuilder<&P, getStateHistoryCountCall, N> {
13042            self.call_builder(&getStateHistoryCountCall)
13043        }
13044        ///Creates a new call builder for the [`getVersion`] function.
13045        pub fn getVersion(
13046            &self,
13047        ) -> alloy_contract::SolCallBuilder<&P, getVersionCall, N> {
13048            self.call_builder(&getVersionCall)
13049        }
13050        ///Creates a new call builder for the [`initialize`] function.
13051        pub fn initialize(
13052            &self,
13053            _genesis: <LightClientState as alloy::sol_types::SolType>::RustType,
13054            _genesisStakeTableState: <StakeTableState as alloy::sol_types::SolType>::RustType,
13055            _stateHistoryRetentionPeriod: u32,
13056            owner: alloy::sol_types::private::Address,
13057        ) -> alloy_contract::SolCallBuilder<&P, initializeCall, N> {
13058            self.call_builder(
13059                &initializeCall {
13060                    _genesis,
13061                    _genesisStakeTableState,
13062                    _stateHistoryRetentionPeriod,
13063                    owner,
13064                },
13065            )
13066        }
13067        ///Creates a new call builder for the [`isPermissionedProverEnabled`] function.
13068        pub fn isPermissionedProverEnabled(
13069            &self,
13070        ) -> alloy_contract::SolCallBuilder<&P, isPermissionedProverEnabledCall, N> {
13071            self.call_builder(&isPermissionedProverEnabledCall)
13072        }
13073        ///Creates a new call builder for the [`lagOverEscapeHatchThreshold`] function.
13074        pub fn lagOverEscapeHatchThreshold(
13075            &self,
13076            blockNumber: alloy::sol_types::private::primitives::aliases::U256,
13077            blockThreshold: alloy::sol_types::private::primitives::aliases::U256,
13078        ) -> alloy_contract::SolCallBuilder<&P, lagOverEscapeHatchThresholdCall, N> {
13079            self.call_builder(
13080                &lagOverEscapeHatchThresholdCall {
13081                    blockNumber,
13082                    blockThreshold,
13083                },
13084            )
13085        }
13086        ///Creates a new call builder for the [`newFinalizedState`] function.
13087        pub fn newFinalizedState(
13088            &self,
13089            newState: <LightClientState as alloy::sol_types::SolType>::RustType,
13090            proof: <IPlonkVerifier::PlonkProof as alloy::sol_types::SolType>::RustType,
13091        ) -> alloy_contract::SolCallBuilder<&P, newFinalizedStateCall, N> {
13092            self.call_builder(
13093                &newFinalizedStateCall {
13094                    newState,
13095                    proof,
13096                },
13097            )
13098        }
13099        ///Creates a new call builder for the [`owner`] function.
13100        pub fn owner(&self) -> alloy_contract::SolCallBuilder<&P, ownerCall, N> {
13101            self.call_builder(&ownerCall)
13102        }
13103        ///Creates a new call builder for the [`permissionedProver`] function.
13104        pub fn permissionedProver(
13105            &self,
13106        ) -> alloy_contract::SolCallBuilder<&P, permissionedProverCall, N> {
13107            self.call_builder(&permissionedProverCall)
13108        }
13109        ///Creates a new call builder for the [`proxiableUUID`] function.
13110        pub fn proxiableUUID(
13111            &self,
13112        ) -> alloy_contract::SolCallBuilder<&P, proxiableUUIDCall, N> {
13113            self.call_builder(&proxiableUUIDCall)
13114        }
13115        ///Creates a new call builder for the [`renounceOwnership`] function.
13116        pub fn renounceOwnership(
13117            &self,
13118        ) -> alloy_contract::SolCallBuilder<&P, renounceOwnershipCall, N> {
13119            self.call_builder(&renounceOwnershipCall)
13120        }
13121        ///Creates a new call builder for the [`setPermissionedProver`] function.
13122        pub fn setPermissionedProver(
13123            &self,
13124            prover: alloy::sol_types::private::Address,
13125        ) -> alloy_contract::SolCallBuilder<&P, setPermissionedProverCall, N> {
13126            self.call_builder(
13127                &setPermissionedProverCall {
13128                    prover,
13129                },
13130            )
13131        }
13132        ///Creates a new call builder for the [`setstateHistoryRetentionPeriod`] function.
13133        pub fn setstateHistoryRetentionPeriod(
13134            &self,
13135            historySeconds: u32,
13136        ) -> alloy_contract::SolCallBuilder<&P, setstateHistoryRetentionPeriodCall, N> {
13137            self.call_builder(
13138                &setstateHistoryRetentionPeriodCall {
13139                    historySeconds,
13140                },
13141            )
13142        }
13143        ///Creates a new call builder for the [`stateHistoryCommitments`] function.
13144        pub fn stateHistoryCommitments(
13145            &self,
13146            _0: alloy::sol_types::private::primitives::aliases::U256,
13147        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryCommitmentsCall, N> {
13148            self.call_builder(&stateHistoryCommitmentsCall(_0))
13149        }
13150        ///Creates a new call builder for the [`stateHistoryFirstIndex`] function.
13151        pub fn stateHistoryFirstIndex(
13152            &self,
13153        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryFirstIndexCall, N> {
13154            self.call_builder(&stateHistoryFirstIndexCall)
13155        }
13156        ///Creates a new call builder for the [`stateHistoryRetentionPeriod`] function.
13157        pub fn stateHistoryRetentionPeriod(
13158            &self,
13159        ) -> alloy_contract::SolCallBuilder<&P, stateHistoryRetentionPeriodCall, N> {
13160            self.call_builder(&stateHistoryRetentionPeriodCall)
13161        }
13162        ///Creates a new call builder for the [`transferOwnership`] function.
13163        pub fn transferOwnership(
13164            &self,
13165            newOwner: alloy::sol_types::private::Address,
13166        ) -> alloy_contract::SolCallBuilder<&P, transferOwnershipCall, N> {
13167            self.call_builder(&transferOwnershipCall { newOwner })
13168        }
13169        ///Creates a new call builder for the [`upgradeToAndCall`] function.
13170        pub fn upgradeToAndCall(
13171            &self,
13172            newImplementation: alloy::sol_types::private::Address,
13173            data: alloy::sol_types::private::Bytes,
13174        ) -> alloy_contract::SolCallBuilder<&P, upgradeToAndCallCall, N> {
13175            self.call_builder(
13176                &upgradeToAndCallCall {
13177                    newImplementation,
13178                    data,
13179                },
13180            )
13181        }
13182    }
13183    /// Event filters.
13184    #[automatically_derived]
13185    impl<
13186        P: alloy_contract::private::Provider<N>,
13187        N: alloy_contract::private::Network,
13188    > LightClientInstance<P, N> {
13189        /// Creates a new event filter using this contract instance's provider and address.
13190        ///
13191        /// Note that the type can be any event, not just those defined in this contract.
13192        /// Prefer using the other methods for building type-safe event filters.
13193        pub fn event_filter<E: alloy_sol_types::SolEvent>(
13194            &self,
13195        ) -> alloy_contract::Event<&P, E, N> {
13196            alloy_contract::Event::new_sol(&self.provider, &self.address)
13197        }
13198        ///Creates a new event filter for the [`Initialized`] event.
13199        pub fn Initialized_filter(&self) -> alloy_contract::Event<&P, Initialized, N> {
13200            self.event_filter::<Initialized>()
13201        }
13202        ///Creates a new event filter for the [`NewState`] event.
13203        pub fn NewState_filter(&self) -> alloy_contract::Event<&P, NewState, N> {
13204            self.event_filter::<NewState>()
13205        }
13206        ///Creates a new event filter for the [`OwnershipTransferred`] event.
13207        pub fn OwnershipTransferred_filter(
13208            &self,
13209        ) -> alloy_contract::Event<&P, OwnershipTransferred, N> {
13210            self.event_filter::<OwnershipTransferred>()
13211        }
13212        ///Creates a new event filter for the [`PermissionedProverNotRequired`] event.
13213        pub fn PermissionedProverNotRequired_filter(
13214            &self,
13215        ) -> alloy_contract::Event<&P, PermissionedProverNotRequired, N> {
13216            self.event_filter::<PermissionedProverNotRequired>()
13217        }
13218        ///Creates a new event filter for the [`PermissionedProverRequired`] event.
13219        pub fn PermissionedProverRequired_filter(
13220            &self,
13221        ) -> alloy_contract::Event<&P, PermissionedProverRequired, N> {
13222            self.event_filter::<PermissionedProverRequired>()
13223        }
13224        ///Creates a new event filter for the [`Upgrade`] event.
13225        pub fn Upgrade_filter(&self) -> alloy_contract::Event<&P, Upgrade, N> {
13226            self.event_filter::<Upgrade>()
13227        }
13228        ///Creates a new event filter for the [`Upgraded`] event.
13229        pub fn Upgraded_filter(&self) -> alloy_contract::Event<&P, Upgraded, N> {
13230            self.event_filter::<Upgraded>()
13231        }
13232    }
13233}